Как я могу создать цикл исключений while? - PullRequest
0 голосов
/ 02 декабря 2018

Я работаю над небольшой проблемой кодирования, которая требует ввода данных пользователем.Этот вход должен быть проверен, чтобы быть цифрой.Я создал блок "try: ... кроме ValueError: ...", который проверяет один раз, является ли ввод цифрой, но не несколько раз.Я хотел бы, чтобы это в основном проверялось постоянно.

Можно ли создать цикл исключения-исключения?

Мой код следующий:

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: "))

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018
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!

Я добавляю флаг boolean, чтобы он не повторялся, даже если ввод правильный, и удалял вход, за исключением того, что он будет запрашивать 2 раза.

0 голосов
/ 02 декабря 2018

Если вы нажмете только Enter, цикл прекратится:

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
...