我在使用for循環進行二十一點遊戲模擬時遇到了一些麻煩。功能new_game
模擬四張牌被髮放,而new_card
確保在遊戲中沒有牌被重複。我創建了函數new game
的兩個變體,並想知道它們有何不同。二十一點遊戲:for循環'不在'vs'in'
在版本1中,有些情況下函數只返回3張卡片,而版本2似乎按預期工作。
版本1:
def new_game():
game=[];
for x in range(4):
n=new_card();
if n not in game:
game+=[n];
else:
new_game();
print(game);
return game
版本2:
def new_game():
game=[];
for x in range(4):
n=new_card();
if n in game:
new_game();
print(game);
else:
game+=[n];
return game
這裏供您參考的是'new_card'函數。 (): \t s = ['s','c','d','h']; \t n =列表(範圍(1,14)); \t return [random.choice(s),random.choice(n)]; ' – st4rgut
不明白爲什麼'new_game()'在new_card()不能生成唯一卡時遞歸調用。我認爲代碼應該調用'new_card()'直到循環迭代生成一個唯一的代碼。你怎麼看? –
好的,謝謝你指出。我打算說'new_game'檢查重複卡片。當找到重複的卡時,該功能重新開始。好像'new_game()'起作用了,但是你認爲調用'new_card()'會更有效率嗎? – st4rgut