我有下面的代碼片段:重新啓動異常處理
def check1(n):
if len(n) != 4:
return raw_input("Enter 4 digits only")
else:
return True
def check2(n):
if n.isdigit() != True:
return raw_input("Enter digits only")
else:
return True
def check3(n):
if len(set(str(n))) != 4:
return raw_input("Enter non duplicate numbers only")
else:
return True
sturn = 1
lturn = 8
a = raw_input("Enter the 4 numbers you want to play with: ")
for turn in range(sturn, lturn):
b = raw_input("Enter your guess: ")
if (check1(b) != True or check2(b) != True or check3(b) != True):
if check1(b) != True:
print check1(b)
elif check2(b) != True:
print check2(b)
elif check3(b) != True:
print check3(b)
else:
print b
我怎麼能改寫這個例如,如果有任何的檢查功能失效,它從b = raw_input
線再次啓動,並重新測試所有檢查。
UPDATE 我已經改進了keithjgrant和m1k3y02的建議之後的代碼,但它無法正常工作。如果我連續輸入'1',它會在不同的例外之間跳躍,而不是停留在第一次檢查。
def checks(n):
if len(n) != 4 or n.isdigit() != True or len(set(str(n))) != 4:
return False
else:
return True
sturn = 1
lturn = 8
a = raw_input("Enter the 4 numbers you want to play with: ")
for turn in range(sturn, lturn):
b = raw_input("Enter your guess: ")
while checks(b) != True:
if len(b) != 4:
b = raw_input("Enter 4 digits only")
if b.isdigit() != True:
b = raw_input("Enter digits only")
if len(set(str(b))) != 4:
b = raw_input("Enter non duplicate numbers only")
print b
對於你的第一個答案,我不明白這部分是什麼意思`好,msg =檢查(b)`? – super9 2011-01-22 23:01:48