Skip to content Skip to sidebar Skip to footer

I Don't Quite Understand The While Loop In Python

def AddSingleCard(self): symbols = ['heart', 'diamond', 'club', 'spade'] #newCardSign = '' newCardNumber, newCardSign = raw_input().split() try: newCardNumber =

Solution 1:

If you know C, you might want to use a do ... while loop, because the loop body must be executed at least once. But there is no such thing as a do ... while loop in Python. You have to start with while True: and break out of the loop if your condition is met.

def AddSingleCard(self):
   symbols = ['heart', 'diamond', 'club', 'spade']

   while True: 
       newCardNumber, newCardSign = raw_input("Enter card number and sign (heart, diamond, club, spade), seperated by space").split()
       try:
           newCardNumber = int(newCardNumber)
       except ValueError:
           print "Card number must be a number between 2 and 15"
           continue

       if newCardNumber in range(2,16) and newCardSign in symbols:
              break

       print "Card number or symbol not valid"

   newCard = [newCardNumber, newCardSign]

Solution 2:

def AddSingleCard():
    symbols = ['heart', 'diamond', 'club', 'spade']
    newCardNumber = newCardSign = None
    while (newCardNumber not in range(2, 16) or newCardSign not in symbols):
        newCardNumber, newCardSign = raw_input('Enter Number and Symbol with space between:').split()
        try:
            newCardNumber = int(newCardNumber)
        except:
            continue
    newCard = [newCardNumber, newCardSign]
    return newCard


AddSingleCard()
  1. Convert newCardNumber to int
  2. change (2,15) to range(2,16)

Post a Comment for "I Don't Quite Understand The While Loop In Python"