尝试将用户的输入严格控制为正数



我正在尝试使用异常处理来控制用户的输入。我需要他们只输入一个正数,然后我必须返回并打印出那个数字。如果用户输入非数字,我必须发送消息;如果用户输入小于1的数字,我也必须发送消息。这是我所拥有的:

def input_validation(prompt):
boolChoice = True
while boolChoice == True:
try:
l = input(prompt)
x = int(l)
boolChoice = False
except ValueError:
print("Not a valid input")
if l.isalpha() == True:
print("Your input is not a number")
elif l.isalnum() == True:
print ("Your input is not completely a positive number")
elif l < 0:
print("Your number is not positive")
print("Try again")
return x
def main():
x = input_validation("Enter a positive number: ")
print (x)
main()

我的程序运行良好,直到输入一个负整数。它不打印消息,然后再次循环,它只是返回并打印回负数,这是我不想要的。我该怎么解决这个问题?非常感谢。

您可以使用try...except来检查它是整数还是字母

def input_validation(prompt):

while True:
try:
l = int(input(prompt))
if l<0: #=== If value of l is < 0 like -1,-2
print("Not a positive number.")
else:
break
except ValueError:
print("Your input is invalid.")
print("Try again")
return l
def main():
x = input_validation("Enter a positive number: ")
print (x)
main()

尝试

def input_validation(prompt):
boolChoice = True
while boolChoice == True:
try:
l = input(prompt)
x = int(l)
if x < 0:
print ("Your input is a negative numbern Please enter a postive number")
elif x == 0:
print("Your input is zeron Please enter a postive number ")
else:
boolChoice = False 
except Exception as e:
print("Not a valid input")
if l.isalpha() == True:
print("Your input is not a number")
elif l.isalnum() == True:
print ("Your input is not completely a positive number")
else:
print(f"Failed to accept input due to {e}")
print("Try again")
continue
return x
def main():
x = input_validation("Enter a positive number: ")
print (x)
main()

最新更新