Python16_阶段性作业

  • 练习介绍

    练习目标:

    我们会通过今天的作业,综合运用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)

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值