Выход из бесконечного цикла while (python), когда пользователь вводит «exit», но если пользователь вводит число, сравнивайте его с 50 - PullRequest
0 голосов
/ 17 октября 2018

Мне нужна помощь с этой проблемой.попросите пользователя ввести число внутри бесконечного цикла while, сравните это число, скажем, 50 (меньше, больше или равно).но для выхода из цикла while пользователь должен ввести «exit».у меня есть следующий код, который работает в соответствии с требованием, но я хочу, чтобы в конце было написано «exit» (if).это определенно вызывает ошибку.пожалуйста, не стесняйтесь альтернативных способов.

while True:
x = input('please enter a number to compare or enter "exit" to exit the loop \n')
if x == "exit":
    exit()
elif int(x) > 50:
    print(x, 'is greater than 50')
elif int(x) < 50:
    print(x, 'is less than 50')
else:
    print('the number you entered is 50')

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Ну, что будет, если пользователь наберет fkljhae?A ValueError поднято.И ... держись!Это повышается для любого не int ввода - "exit" удовлетворяет этому критерию.

from sys import exit

while True:
    x = input('please enter a number to compare or enter "exit" to exit the loop \n')
    try:
        if int(x) > 50:
            print(x, 'is greater than 50')
        elif int(x) < 50:
            print(x, 'is less than 50')
        else:
            print('the number you entered is 50')
    except ValueError:
        if x == "exit":
            exit()

Это не особенно хорошо, хотя;Что делать, если print поднимает ValueError?Давайте сделаем так, чтобы в блоке try: except: был только int(x):

from sys import exit

while True:
    text = input('please enter a number to compare or enter "exit" to exit the loop \n')
    try:
        x = int(text)
    except ValueError:
        if text == "exit":
            exit()
    else:
        if x > 50:
            print(x, 'is greater than 50')
        elif x < 50:
            print(x, 'is less than 50')
        else:
            print('the number you entered is 50')

Это лучше, хотя "exit" больше не внизу.

0 голосов
/ 17 октября 2018

Это потому, что вы пытаетесь разобрать "exit", который является строкой для int. Вы можете использовать try и кроме.

...