這是我的代碼。當用戶輸入除1或2以外的任何內容時,爲什麼我的'else:mainError()'不能執行?例如。 @或上面的任意數字3
print("Welcome to the quiz")
print("Would you like to login with an existing account or register for a new account?")
class validation(Exception):
def __init__(self, error):
self.error = error
def printError(self):
print ("Error: {} ".format(self.error))
def mainError():
try:
raise validation('Please enter a valid input')
except validation as e:
e.printError()
def login():
print ("yet to be made")
def register():
print ("yet to be made")
while True:
options = ["Login", "Register"]
print("Please, choose one of the following options")
num_of_options = len(options)
for i in range(num_of_options):
print("press " + str(i + 1) + " to " + options[i])
uchoice = int(input("? "))
print("You chose to " + options[uchoice - 1])
if uchoice == 1:
login()
break
elif uchoice == 2:
register()
break
else:
mainError()
如果我輸入 'A',它與此錯誤出現:
line 35, in <module>
uchoice = int(input("? "))
ValueError: invalid literal for int() with base 10: 'a'
如果我在上面輸入2的數,如 '3':
line 36, in <module>
print("You chose to " + options[uchoice - 1])
IndexError: list index out of range
我怎樣才能請確保如果用戶輸入除1或2以外的任何內容,它將執行我的其他命令,它會在其中調用我的mainError()方法,該方法包含我的例外程序將顯示給我的用戶的異常。
我已經做了,但現在如果他們輸入一個號碼錯誤將只顯示給用戶大於2 –
我該如何設置,以便在用戶輸入或@時顯示錯誤? –
這個你需要用try/check來檢查你從用戶得到的值,或者你可以使用字符串作爲用戶輸入,並在輸入之後進行cast/validate以避免這種情況。 –