【功能】
學習的代碼:囚徒困境練習題( 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]))