零基础学习Python 作业 第9章
0. 下面的循环会打印多少次"I Love FishC"?
- for i in range(0, 10, 2):
- print('I Love FishC')
答:5次
1 下面的循环会打印多少次”I Love FishC”?
1. for i in 5:
2. print('I Love FishC')
Error, in 是成员资格运算符, 5 不能迭代
TypeError: ‘int’ object is not iterable
2 回顾一下 break 和 continue 在循环中起到的作用?
break, 如果满足条件,则终止循环
continue, 如果满足条件,则跳出,重新开始循环
3 请谈下你对列表的理解?
列表是一个元素以逗号分割,以中括号包围的,有序的,可修改的序列。
4. 请问 range(10) 生成哪些数?
0---9
5. 目测以下程序会打印什么?
- while True:
- while True:
- break
- print(1)
- print(2)
- break
- print(3)
2
3
6. 什么情况下我们要使循环永远为真?
while Ture:
循环体
同样用于游戏实现,因为游戏只要运行着,就需要时刻接收用户输入,因此使用永远为真确保游戏“在线”。操作系统也是同样的道理,时刻待命,操作系统永远为真的这个循环叫做消息循环。另外,许多通讯服务器的客户端/服务器系统也是通过这样的原理来工作的。
所以永远为“真”虽然是“死循环”,但不一定是坏事,再说了,我们可以随时用 break 来跳出循环!
7. 【学会提高代码的效率】你的觉得以下代码效率方面怎样?有没有办法可以大幅度改进(仍然使用while)?
- i = 0
- string = 'ILoveFishC.com'
- while i < len(string)):
- print(i)
- i += 1
修改后:
- i = 0
- string = 'ILoveFishC.com'
- length = len(string)
- while i < length:
- print(i)
- i += 1
动手题:
0. 设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。
print('========密码校验系统========')
count = 3
password = '5201314'
while count:
key = input('请输入密码:')
if key == password:
print('祝贺!密码正确!')
break
elif '*' in key:
print('密码中不能含有字符\'*\'!你还有', count, '次机会!', end = '.')
continue
else:
if count != 0:
print('密码输入错误!你还有', count - 1, '次机会', end = '.')
else:
print('密码输入错误,请重新运行该测试系统.')
count -= 1
Python 2.7
#coding=UTF-8
print('========密码校验系统========')
count = 3
password = '5201314'
while count:
key = raw_input('请输入密码:')
if key == password:
print('祝贺!密码正确!')
break
elif '*' in key:
print (u'密码中不能含有字符\'*\''),"还有",str(count) + "次机会!"
continue
else:
if count != 0:
print ('密码输入错误!'),"还有",str(count-1) + "次机会!"
else:
print('密码输入错误,请重新运行该测试系统.')
count -= 1
1. 编写一个程序,求 100~999 之间的所有水仙花数。
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数
- for i in range(100, 1000):
- sum = 0
- temp = i
- while temp:
- sum = sum + (temp%10) ** 3
- temp //= 10 # 注意这里要使用地板除哦~
- if sum == i:
- print(i)
print('==========水仙花数计算器[100~999]==========')
temp = input('请输入一位3位正整数:')
while not temp.isdigit():
print('输入错误!')
temp = input('请重新输入一位3位正整数:')
num = int(temp)
# 求出各位十位百位
ge = num % 10
bai = num // 100
shi = ((num - bai * 100) - ge) / 10
if num == ge**3 + shi**3 + bai**3:
print('数', num, '是水仙数!\n')
else:
print('数', num, '不是水仙数!\n')
print('[100~1000] 区间的水仙数有:')
for i in range(100, 1000):
temp = i
sum = 0
while temp:
# 先求个位的立方,再把三位数去掉最后一位,又求10位的立方,
# 在去掉10位,求百位的立方
sum += (temp % 10) ** 3
temp = temp // 10
if sum == i:
print(i)
2. 三色球问题
有红、黄、蓝三种颜色的求,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配
print('==========RGBball Select==========')
# Red ball [0,1,2,3] range(0, 4)
# Blue ball [0,1,2,3] range(0, 4)
# Green ball [2, 3, 4, 5, 6] range(2, 7)
# Restrictions: R + B + G == 8
for red in range(0, 4):
for blue in range(0,4):
for green in range(2, 7):
if red + blue + green == 8:
print( 'Red:', red, ' ', 'Blue:', blue, ' ', 'Green:', green )
print('==========RGBball Select==========')
# Red ball [0,1,2,3] range(0, 4)
# Blue ball [0,1,2,3] range(0, 4)
# Green ball [2, 3, 4, 5, 6] range(2, 7)
# Restrictions: R + B + G == 8
for red in range(0, 4):
for blue in range(0,4):
for green in range(2, 7):
if red + blue + green == 8:
keys = {'Red':red,'blue':blue,'green':green}
print(keys)
==========RGBball Select==========
{'blue': 2, 'green': 6, 'Red': 0}
{'blue': 3, 'green': 5, 'Red': 0}
{'blue': 1, 'green': 6, 'Red': 1}
{'blue': 2, 'green': 5, 'Red': 1}
{'blue': 3, 'green': 4, 'Red': 1}
{'blue': 0, 'green': 6, 'Red': 2}
{'blue': 1, 'green': 5, 'Red': 2}
{'blue': 2, 'green': 4, 'Red': 2}
{'blue': 3, 'green': 3, 'Red': 2}
{'blue': 0, 'green': 5, 'Red': 3}
{'blue': 1, 'green': 4, 'Red': 3}
{'blue': 2, 'green': 3, 'Red': 3}
{'blue': 3, 'green': 2, 'Red': 3}