def aboveIntegerInput(output_message="Enter your number: ", error_1="Please enter a number above {}!", error_2="Integers only!(Please do not leave this blank)", above=0):
while True:
try:
user_input = int(input(output_message))
if user_input >= above:
return int(user_input)
break
else:
print(error_1.format(above))
except ValueError:
print(error_2)
正如您在这里看到的,代码应该检查输入是否是整数,并且它是否高于某个默认值0,但可以更改。
当用户输入随机字母和符号时,它看到有一个值错误;仅限整数!(请不要将此项留空(";。
我希望能够检查用户是否什么都不输入,并且在这种情况下只有它应该输出"0";这是空白/空的";,目前的处理方式是根本不检查,只说";仅限整数!(请不要留下空白(";,以防出现值错误。我希望能够更加具体,而不是一次说出所有的原因。有人能帮我吗?
提前谢谢。
您可以这样做:
def aboveIntegerInput(output_message="Enter your number: ", error_1="Please enter a number above {}!", error_2="Integers only!", above=0, error_3="Please do not leave this blank"):
while True:
user_input = input(output_message)
try:
user_input = int(user_input)
if user_input >= above:
return user_input
break
else:
print(error_1.format(above))
except ValueError:
if(not user_input):
print(error_3)
else:
print(error_2)
我将输入移到了try/except块之外,以便能够在except中使用它!这对我来说很好,我希望这正是你所需要的。
您可以将输入和转换为int分成两个步骤,如下所示:
def aboveIntegerInput(output_message="Enter your number: ", error_1="Please enter a number above {}!", error_2="Integers only!(Please do not leave this blank)", above=0):
while True:
try:
user_input = input(output_message)
if not user_input:
print("Please do not leave this blank")
continue
user_input = int(user_input)
if user_input >= above:
return int(user_input)
break
else:
print(error_1.format(above))
except ValueError:
print(error_2)