블랙 잭 게임 시뮬레이션을하는 동안 for 루프를 사용하여 문제가 발생했습니다. 함수 new_game
은 처리중인 카드 4 개를 시뮬레이트하는 반면, 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'함수가 있습니다. def new_card() : \t s = [ 's', 'c', 'd', 'h']; \t n = 목록 (범위 (1,14)); \t return [random.choice (s), random.choice (n)]; ' – st4rgut
new_card()가 유일한 카드를 생성 할 수 없을 때'new_game()'이 재귀 적으로 호출되는 이유를 이해하지 못한다. 루프 반복을 위해 고유 한 코드가 생성 될 때까지 코드가'new_card()'를 호출해야한다고 생각합니다. 어떻게 생각해? –
OK, 그것을 지적 해 주셔서 감사합니다. 나는'new_game'이 반복되는 카드를 검사하는지 말하려고했다. 반복되는 카드가 발견되면 기능이 다시 시작됩니다. 'new_game()'이 작동하는 것처럼 보이지만,'new_card()'를 호출하는 것이 더 효율적이라고 생각합니까? – st4rgut