我在Python中製作了一個可以工作的Monty Hall程序(這證明了2/3到1/3的機會),但是當我在儘可能少的行中創建時,我的)我得到這些神祕的錯誤!下面是代碼:Monty Hall中的神祕錯誤Python代碼
from random import *
i,a,abc,t,m=choice(['A','B','C']),raw_input('Switch? (y/n): ').upper(),['A','B','C'],0,0
for j in range(100):
p = choice(abc)
if ([y for y in abc if y not in [i,(choice([x for x in abc if x not in [i,p]]))]][0] if a == 'Y' else i) == p : t += 1
print 'WP: %i\nErrors: %i' %(t,m)
我收到此錯誤:
Traceback (most recent call last):
File "fewlinesMonty.py", line 5, in <module>
if ([y for y in abc if y not in [i,(choice([x for x in abc if x not in [i,p]]))]][0] if a == 'Y' else i) == p : t += 1
IndexError: list index out of range
所以,我用一個try /除了使用該代碼計算錯誤:
from random import *
i,a,abc,t,m=choice(['A','B','C']),raw_input('Switch? (y/n): ').upper(),['A','B','C'],0,0
for j in range(100):
p = choice(abc)
try:
if ([y for y in abc if y not in [i,(choice([x for x in abc if x not in [i,p]]))]][0] if a == 'Y' else i) == p : t += 1
except: m += 1
print 'WP: %i\nErrors: %i' %(t,m)
的錯誤從不超過10%,但對我來說毫無意義!
修正錯誤,所有必要的是,以限定
o = choice([x for x in abc if x not in [i,p]])
,然後用鄰替換相應的代碼。
我知道代碼很難(有點不可能)閱讀,但我很感激任何幫助/建議。
編輯: 這裏有什麼變數的意思是: I =初始門的選擇(隨機)X =門打開(沒有獎金,沒有初始)Y =門切換到(不是X,而不是初始) abc =只是AB和C在列表中t =總勝數m =神祕錯誤p =獎品(或'汽車')的門是
歡迎來到StackOverflow。請閱讀[如何提出一個好問題](https://stackoverflow.com/help/how-to-ask)。 – Spinor8
而且......我的頭疼。繼續... – Mangohero1
當你在一行中有7個括號和圓括號 - ']]))]] [' - 你不會寫可理解的代碼。不要試圖把所有這些東西放到一條線上。 – user2357112