1、assert 的作用是什么?
assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。
2、三元操作符
请将以下代码修改为三元操作符实现:
x, y, z = 6, 5, 4
if x < y:
small = x
if z < small:
small = z
elif y < z:
small = y
else:
small = z
实现如下:
small = x if (x < y and x < z) else (y if y < z else z)
3、打飞机小游戏的设计框架
加载背景音乐
播放背景音乐(设置单曲循环)
我方飞机诞生
interval = 0
while True:
if 用户是否点击了关闭按钮:
退出程序
interval += 1
if interval == 50:
interval = 0
小飞机诞生
小飞机移动一个位置
屏幕刷新
if 用户鼠标产生移动:
我方飞机中心位置 = 用户鼠标位置
屏幕刷新
if 我方飞机与小飞机发生肢体冲突:
我方挂,播放撞机音乐
修改我方飞机图案
打印“Game over”
停止背景音乐,最好淡出
4、回顾一下 break 和 continue 在循环中起到的作用?
break语句的作用是终止当前循环,跳出循环体。
continue语句的作用是终止本轮循环并开始下一轮循环。
5、设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。
我的答案:
password = '3344'
pw = input('请输入密码:')
i = 3
while i > 0:
if pw == password:
print('密码正确,进入程序……')
break
else:
if '*' in pw:
pw = input('密码中不能含有“*”号!您还有%d次机会!请输入密码:' % i)
else:
pw = input('密码错误!您还有%d次机会!请输入密码:' % i)
i-=1
遇到几个问题:
1)break没有打,结果输入正确时又死循环
2)password是字符串,接收的密码应该也是字符串,不需要变成int
参考答案:
count = 3
password = 'FishC.com'
while count:
passwd = input('请输入密码:')
if passwd == password:
print('密码正确,进入程序......')
break
elif '*' in passwd:
print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
continue
else:
print('密码输入错误!您还有', count-1, '次机会!', end=' ')
count -= 1
改进思考:
1)while判断,遇到0就会判False,所以不需要再加i>0.这个条件
2)如果有‘*’,次数不减少,但是应该等于i次
最后的答案:
password = '3344'
pw = input('请输入密码:')
i = 3
while i :
if pw == password:
print('密码正确,进入程序……')
break
else:
if '*' in pw:
pw = input('密码中不能含有“*”号!您还有%d次机会!请输入密码:' % i)
else:
i-=1
pw = input('密码错误!您还有%d次机会!请输入密码:' % i)
6、编写一个程序,求 100~999 之间的所有水仙花数。
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。
我的答案:
for i in range(100,1000):
sum = (i//100)**3+(i//10-i//100*10)**3+(i-i//10*10)**3
if sum == i:
print(i)
难点主要在于这个算式怎么表达。。。
参考答案:
for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
if sum == i:
print(i)
参考答案用的是循环的方式去给出这个算式,就是看上去会比较晕。。。
7、三色球问题
有红、黄、蓝三种颜色的球,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。
print('red\tyellow\tgreen')
for red in range(0, 4):
for yellow in range(0, 4):
for green in range(2, 7):
if red + yellow + green == 8:
# 注意,下边不是字符串拼接,因此不用“+”哦~
print(red, '\t', yellow, '\t', green)