-
练习介绍
练习目标:
我们会通过今天的作业,综合运用while True循环和 break。
练习要求:
假设有两名囚徒A和B因为合伙犯罪被抓捕,因没有确凿可以指认罪行的证据,审判者准备单独审判两位囚徒。
若两人都认罪,则两人各判10年;若一个认罪一个抵赖,则认罪的人判1年,抵赖的人判20年;若两人都抵赖,则各判3年。
现在,请写个代码:当两人都抵赖时,打印判决,代码结束;若为其他结果,则在打印判决后继续循环。 -
1.开启循环,两人分别选择
首先,我们需要知道两个囚徒各自的选择。
-
2.循环当中,有判断和跳出
判决提示:
若两人都认罪,则两人各判10年;
若一个认罪一个抵赖,则认罪的人判1年,抵赖的人判20年;
若两人都抵赖,则各判3年——这种情况下跳出循环。 -
参考答案
请查看参考答案,并留意 break 的位置。
感兴趣的话,也可想一想 break 放在其他地方会怎么样
while True:
a = input('A,你认罪吗?请回答认罪或者不认')
b = input('B,你认罪吗?请回答认罪或者不认')
if a == '认罪' and b == '认罪':
print('两人都得判10年,唉')
elif a == '不认' and b == '认罪':
print('A判20年,B判1年,唉')
elif a == '认罪' and b == '不认':
print('A判1年,B判20年')
else:
print('都判3年,太棒了')
break # 当满足开头提到的条件时,跳出循环。
-
练习介绍
练习目标
这个作业会建立在上一个练习的基础上,完善代码的功能。
练习要求
上一个练习,我们将“囚徒困境”写成了代码,让程序收集两名囚犯的认罪情况,进而决定他们的判决:
两人都认罪,则各判10年;一个认罪一个抵赖,则前者判1年,后者判20年;两人都抵赖,各判3年。只有两人都不认罪,程序才会停止。
现在有一个社会学家,在不同的人群中做这个实验,一旦遇到都不认罪的情况,就停止该人群中的实验。
同时,他希望程序能记录每一对实验者的选择,以及记录第几对实验者都选择不认罪。请你帮帮他吧。 -
完善代码
几个提示:
为了记录每一对实验者的选择,需要用一个可拓展的“容器”来存放这些数据;
为了记录是第几对实验者做了最优选择,需要用一个变量来计数;
为了将每一对实验者的选择再打印出来,需要写一个循环。
参考代码
n = 0
list_answer = []
while True:
n += 1
a = input('A,你认罪吗?请回答认罪或者不认:')
b = input('B,你认罪吗?请回答认罪或者不认:')
list_answer.append([a,b]) # 用列表嵌套的方式来存放实验者的选择,也可用元组或字典。
if a == '认罪' and b == '认罪':
print('两人都得判10年,唉')
elif a == '不认' and b == '认罪':
print('A判20年,B判1年,唉')
elif a == '认罪' and b == '不认':
print('A判1年,B判20年')
else:
print('都判3年,太棒了')
break
print('第' + str(n) + '对实验者选了最优解。')
for i in range(n):
# 注意数据类型的转换,以及计数起点的不同(0和1)
print('第' + str(i+1) + '对实验者的选择是:' + str(list_answer[i]))
'''
A,你认罪吗?请回答认罪或者不认:认罪
B,你认罪吗?请回答认罪或者不认:认罪
两人都得判10年,唉
A,你认罪吗?请回答认罪或者不认:认罪
B,你认罪吗?请回答认罪或者不认:不认
A判1年,B判20年
A,你认罪吗?请回答认罪或者不认:不认
B,你认罪吗?请回答认罪或者不认:不认
都判3年,太棒了
第3对实验者选了最优解。
第1对实验者的选择是:['认罪', '认罪']
第2对实验者的选择是:['认罪', '不认']
第3对实验者的选择是:['不认', '不认']
Press any key to continue . . .
'''
-
练习介绍
练习目标
通过这个练习,你会学会综合使用循环、数据提取和条件判断。
练习要求
我很喜欢看电影,我回忆了一下,这两年我觉得还不错的国产电影。
下面,会将电影的影片名和主演放在字典里,如movie = {'妖猫传':['黄轩','染谷将太']}
。
需要你补充一些代码,让其他人只要输入演员名,就打印出:××出演了电影××。
movies = {
'妖猫传':['黄轩','染谷将太'],
'无问西东':['章子怡','王力宏','祖峰'],
'超时空同居':['雷佳音','佟丽娅'],
}
-
动手写代码
补充代码,让代码运行时输入演员的名字时,可以打印出:××出演了电影××。
注:这个练习的提示比较完整,建议先多尝试几次独立完成。
-
参考代码
看下参考代码(留意一下变量名的取法)。
movies = {
'妖猫传':['黄轩','染谷将太'],
'无问西东':['章子怡','王力宏','祖峰'],
'超时空同居':['雷佳音','佟丽娅'],
}
actor=input('请问你想查询哪位演员:>')
for movie in movies:# 用 for 遍历字典
actors=movies[movie]# 用 for 遍历字典
if actor in actors:
print(actor + '出演了电影' + movie)