Python: Code is ignoring the if and else

kevin4fong at gmail.com kevin4fong at gmail.com
Fri Aug 2 21:46:24 EDT 2013


On Friday, August 2, 2013 6:42:30 PM UTC-7, Terry Reedy wrote:
> Nonsense: they are executed just as you ask, even though what you ask is 
> 
> not what you meant.
> 
> 
> 
> On 8/2/2013 8:40 PM, kevin4fong at gmail.com wrote:
> 
> 
> 
> > 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")
> 
> >      else:
> 
>             else: # indent to match if
> 
> >          if target_card[0] != card[0]:
> 
>             # delete this if line, see below.
> 
> 
> 
> >              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]) + ">!!!")
> 
> >              else:
> 
> >                  ShowMessage("MISS: You fished up the rank <" + str(top_card[0]) + ">")
> 
> >                  hit = hit - 1
> 
> >              return hit
> 
> 
> 
> This executes the for loop multiple times and the the else: clause of 
> 
> the *for* statement (see the ref manual). I believe you want the whole 
> 
> else: clause indented so that it will be executed when the if condition 
> 
> is false. If so, the second if is redundant and should just be removed.
> 
> Yeah, thanks for the advice. But unfortunately, I already tried that and I ended up with a whole bunch of new errors.
> 
> -- 
> 
> Terry Jan Reedy




More information about the Python-list mailing list