【功能】
学习的代码:囚徒困境练习题( python 3.7版本下调试成功)
【问题一】
1.若两人都认罪,则两人各判10年;
2.若一个认罪一个抵赖,则认罪的人判1年,抵赖的人判20年;
3.若两人都抵赖,则各判3年。
现在,请写个代码:当两人都抵赖时,打印判决,代码结束;若为其他结果,则在打印判决后继续循环。
【以下为代码,右上角有复制按钮,可一键复制】
#解答方式一:
A='不认罪'
B='不认罪'
if (A=='认罪' and B=='认罪'): # ==表示等于 !=表示不等于
A=B='判决10年'
elif (A=='认罪' and B!='认罪'):
A='认罪,判决1年'
B='不认罪,判决20年'
elif (A!='认罪' and B=='认罪'):
A='不认罪,判决20年'
B='认罪,判决1年'
else:
A=B='不认罪,判决3年'
print('A',A,'\nB',B) # \n表示换行
【以下为代码,右上角有复制按钮,可一键复制】
# 解答方式二(标准答案):
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 # 当满足开头提到的条件时,跳出循环。
【问题二:】
学习的代码:记录困境中的选择练习题( python 3.7版本下调试成功)
上一个练习,我们将“囚徒困境”写成了代码,让程序收集两名囚犯的认罪情况,进而决定他们的判决:
两人都认罪,则各判10年;一个认罪一个抵赖,则前者判1年,后者判20年;两人都抵赖,各判3年。只有两人都不认罪,程序才会停止。
现在有一个社会学家,在不同的人群中做这个实验,一旦遇到都不认罪的情况,就停止该人群中的实验。
同时,他希望程序能记录每一对实验者的选择,以及记录第几对实验者都选择不认罪。请你帮帮他吧。
【以下为代码,右上角有复制按钮,可一键复制】
#上一个练习,我们将“囚徒困境”写成了代码,让程序收集两名囚犯的认罪情况,进而决定他们的判决:
#两人都认罪,则各判10年;一个认罪一个抵赖,则前者判1年,后者判20年;两人都抵赖,各判3年。只有两人都不认罪,程序才会停止。
#现在有一个社会学家,在不同的人群中做这个实验,一旦遇到都不认罪的情况,就停止该人群中的实验。
#同时,他希望程序能记录每一对实验者的选择,以及记录第几对实验者都选择不认罪。请你帮帮他吧。
# =============================
# 记录困境中的选择
# =============================
# 解答方式一:
cishu=0 #记录实验的次数
while True:
A=input('A,你认罪吗?请回答认罪或者不认')
B=input('B,你认罪吗?请回答认罪或者不认')
cishu=cishu+1 # 每循环一次,试验次数加1次
if (A=='认罪' and B=='认罪'): # ==表示等于 !=表示不等于
A=B='判决10年'
elif (A=='认罪' and B!='认罪'):
A='认罪,判决1年'
B='不认罪,判决20年'
elif (A!='认罪' and B=='认罪'):
A='不认罪,判决20年'
B='认罪,判决1年'
else:
A=B='不认罪,判决3年'
break
print('实验次数:',cishu)
print('A',A,'\nB',B) # \n表示换行
【以下为代码,右上角有复制按钮,可一键复制】
# 解答方式二(标准答案):
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]))
网友评论