如何创建 'while'-异常循环?

How can I create a 'while'-exception loop?

我正在应对一项需要用户输入的小型编码挑战。应检查此输入是否为数字。我创建了一个 "try: ... except ValueError: ..." 块,它检查一次输入是否为数字,但不会检查多次。我希望它能基本上不断地检查它。

可以创建 while 异常循环吗?

我的代码如下:

try:
    uinput = int(input("Please enter a number: "))

    while uinput <= 0:
        uinput = int(input("Number is negative. Please try again: "))
    else:
        for i in range(2, uinput):
            if (uinput % i == 0):
                print("Your number is a composite number with more than
                       one divisors other than itself and one.")
                break
            else:
                print(uinput, "is a prime number!")
                break

except ValueError:
    uinput = int(input("You entered not a digit. Please try again: "))

如果只按回车键,循环终止:

while True:

    uinput = input("Please enter a number: ")
    if uinput.strip()=="":
        break
    try:
        uinput=int(uinput)    
    except:
        print("You entered not a digit. Please try again")
        continue

    if uinput<=0:
        print("Not a positive number. Please try again")
        continue

    for i in range(2, uinput):
            pass; # put your code here
flag = True
while flag:
    try:
        uinput = int(input("Please enter a number: "))

        while uinput <= 0:
            uinput = int(input("Number is negative. Please try again: "))
        else:
            flag=False
            for i in range(2, uinput):
                if (uinput % i == 0):
                    print("Your number is a composite number with more than one divisors other than itself and one.")
                    break
                else:
                    print(uinput, "is a prime number!")
                    break

    except ValueError:
        print('Wrong input')

输出:

(python37) C:\Users\Documents>py test.py
Please enter a number: qwqe
Wrong input
Please enter a number: -123
Number is negative. Please try again: 123
123 is a prime number!

我添加了标志布尔值,即使输入正确也不会使其重复,并删除了 except 中的输入,因为它会询问 2 次。