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

2024-10-02 08:18:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用异常处理来控制用户的输入。我需要他们只输入一个正数,然后我必须返回并打印出那个数字。 如果用户输入非数字,我必须发送消息;如果用户输入的数字小于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()

在输入负整数之前,我的程序工作正常。它不打印消息,然后再次通过循环,它只是返回并打印回负数,这是我不想要的。我怎样才能解决这个问题?多谢各位


Tags: 用户true消息numberinputyourisdef
2条回答

试一试

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 number\n Please enter a postive number")
            elif x == 0:
                print("Your input is zero\n 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()

您可以使用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()

相关问题 更多 >

    热门问题