2011-03-21 4 views
1

파이썬 새내기 여기에. 사용자가 컴퓨터를 상대로 연주하는 블랙 잭 게임을 만들려고합니다. 내가 문제가있는 곳은 if, elif 진술서입니다. 내가 알고 싶은 것은 else 문이 없어도 if 문과 elif 문 중 하나의 기준이 충족되지 않으면 어떻게됩니까? 여기에 문제가있어 다른 성명서가 없습니까?기타 문에 대한 질문 ... 파이썬의 블랙 잭

def game_winner(n): 

    p_wins = 0 
    d_wins = 0 

    for i in range(n): 

     player_sum = player_game() 
     dealer_sum = dealer_game() 

     if player_sum > dealer_sum and player_sum <= 21: 
      p_wins = p_wins + 1 

     elif dealer_sum > 21 and player_sum <= 21: 
      p_wins = p_wins + 1 

     elif player_sum > 21 and dealer_sum <= 21: 
      d_wins = d_wins + 1 

     elif dealer_sum > player_sum and dealer_sum <= 21: 
      d_wins = d_wins + 1 

    return p_wins, d_wins 
+0

srry 잘못 ... 다시 –

+0

user506710 @ 되돌릴하시기 바랍니다 편집 : 조건 코드 중 어느 것도 실행되지 않는 경우, 루프 그냥 다시 반복 있도록, – GreenMatt

답변

2

조건이 충족되지 않으면 if 또는 elif 블록 중 하나의 조건부가 실행되지 않습니다. 컴퓨터 나 플레이어가 모두 라운드에서 승리하지 못한다면 괜찮습니다. 그렇지 않은 경우 해당 케이스를 처리하기 위해 else 성명을 포함해야합니다.

+0

잡았습니다 ... 고마워요! –

1

else가없는 경우 코드는 단순히 "폴스 스루 (fall through)"됩니다. 즉, 조건 코드가 실행되지 않으므로, 우승 횟수는 변경되지 않습니다.

예를 구체적으로 살펴보면 잠재적 인 문제는 계산되지 않는 게임이 있다는 것입니다. 요구 사항이나 디자인에 따라 이것이 실제로 문제가되는지 아닌지가 결정됩니다.

+0

권리를 완료? –

+0

correct - win 카운터가 증가하지 않고 다음 라운드가 실행됩니다. – JoshAdel

0

이것은 완전히 유효합니다. else 문이 없어도 문제가되지 않습니다.

0
try: 
    rng = xrange # Python 2.x 
except NameError: 
    rng = range # Python 3.x 

def game_winner(n): 
    p_wins, d_wins = 0, 0 
    for i in rng(n): 
     player = player_game() 
     if player > 21: 
      d_wins += 1 
     else: 
      dealer = dealer_game() 
      if player <= dealer <= 21: 
       d_wins += 1 
      else: 
       p_wins += 1 
    return p_wins, d_wins