簡體   English   中英

我不太了解python中的while循環

[英]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 = int(float(newCardNumber))
   except:
       newCardNumber, newCardSign = raw_input().split()
   while (newCardNumber not in (2,15) or newCardSign not in symbols):
      newCardNumber, newCardSign = raw_input().split()
   newCard = [newCardNumber, newCardSign]

我試圖循環直到輸入將是2到15之間的數字,並且字符串將是符號之一,但是while循環僅對錯誤的輸入是數字(如果數字在范圍內)對我有用並且字符串不是,程序只是停留在while行中,等待下一個輸入,而不是下一行將輸入移到正確的位置...我相信它與我的語法有關while循環,但我無法專心解決這個問題。 (我的編程背景是c,我是python的新手)

tnx!

如果您知道C,則可能要使用do ... while循環,因為循環主體必須至少執行一次。 但是Python中沒有do ... while循環這樣的東西。 您必須從while True:開始while True:如果滿足您的條件,請break循環。

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]
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. newCardNumber轉換為int
  2. 將(2,15)更改為范圍(2,16)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM