我在使用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