Как выйти из цикла while True, используя другое условие формата в Python?

#python #loops #input #while-loop #format

#python #циклы #ввод #цикл while #формат

Вопрос:

Я нашел в Интернете следующий пример кода, который завершает while True цикл, используя определенное целое число:

 while True:
i = int(input('Please enter an integer (or 0 to exit):n'))
if i == 0:
    print("Exiting the Program")
    break
print(f'{i} square is {i ** 2}')
 

Я хотел бы знать, как выйти из цикла, используя str ввод (например, «exit») вместо определенного int (0 в этом примере).
Я запутался, создав один ввод для каждого типа:

 while True:
    i_str = input('Please enter an integer ( or "exit" to exit): ')
    if i_str == "exit":
        print("Exiting the Program")
        break
    i_int = int(input('Please enter an integer (or "exit" to exit): '))
    print(f'{i_int} square is {i_int ** 2}')
 

…но он выводит что-то при каждой второй попытке и выдает ошибку ValueError при вычислении ‘exit’ при неправильной попытке.

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

Ответ №1:

Вы можете использовать if-else и конвертировать в int , если это не exit так:

 while True:
    i_str = input('Please enter an integer ( or "exit" to exit): ')
    if i_str == "exit":
        print("Exiting the Program")
        break
    else:
        i_int = int(i_str)
        print(f'{i_int} square is {i_int ** 2}')
 

Комментарии:

1. Рад быть полезным, @Effojire, пожалуйста, подумайте о том, чтобы принять ответ, если он решил вашу проблему.

2. Проголосовали за и приняты. Upvote не будет отображаться, так как я здесь новичок. Спасибо, что дали мне знать о приемлемом варианте, я понятия не имел, что такое существует.

Ответ №2:

вы можете просто сначала преобразовать его в строку и проверить ее, затем преобразовать в int, а затем поместить все это в try-catch для перехвата любых исключений вы можете использовать пример ниже

 while True:
try:
    i = str(input('Please enter an integer (or 0 to exit):n'))
    if "exit" in i:
        print("Exiting the Program")
        break
    else:
        i = int(i)
    if i == 0:
        print("Exiting the Program")
        break
    print(f'{i} square is {i ** 2}')
except:
    print("Exiting the Program")
 

Ответ №3:

Вы можете просто использовать try-except , программа вызовет исключение, если она не сможет преобразовать введенное число в целое число.

 while True:
    try:
        i = int(input('Please enter an integer ( or "exit" to exit): '))
        print(f'{i} square is {i ** 2}')
    except:
        print("Exiting the Program")
        break