[英]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()
newCardNumber
轉換為int
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.