Python: Code is ignoring the if and else

Terry Reedy tjreedy at udel.edu
Sat Aug 3 01:04:56 EDT 2013


On 8/2/2013 10:24 PM, kevin4fong at gmail.com wrote:

Looking at this again, I believe you actually had the structure almost 
right before. You want to look through *all* of the target players cards 
and if *none* of them match, (ie the search fails), you want to draw 1 
card. What you were missing before is break or return

def player_0_hitman(hit):
      for card in pHands[target_player]:
          if target_card[0] == card[0]:
              count = pHands[target_player].count(card)
              pHands[0].append(card)
              pHands[target_player].remove(card)
              ShowMessage("HIT: " + str(count) + " card(s) transferred")
              return True

       # else: needed if just break above, but not with return
		
       top_card = GetTopCard(sDeck)
       pHands[0].append(top_card)
       if top_card[0] == target_card[0]:
           ShowMessage("HIT: LUCKILY Player 0 has fished up a rank <" + 
str(top_card[0]) + ">!!!")
           return True
        else:
            ShowMessage("MISS: You fished up the rank <" + 
str(top_card[0]) + ">")
            hit = hit - 1
            return False

The returns are based on what I remember of the rules from decades ago, 
that a hit either in the hand or the draw allowed another turn by the 
player.

-- 
Terry Jan Reedy




More information about the Python-list mailing list