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!
答案 0 :(得分:1)
如果你知道C,你可能想要使用do ... while
循环,因为循环体必须至少执行一次。但是在Python中没有do ... while
循环这样的东西。如果满足您的条件,您必须从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]
答案 1 :(得分:0)
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