Top.Mail.Ru
Ответы

Как избавиться от ошибки Python

Когда я пишу в Python'е "a=int(input())", при вводе числа принимается только целое число, а если я напишу что либо помимо числа (буквы, символы), то мне выдаёт ошибку и программа завершается. Как это исправить? Если что, я новичок в программировании.

По дате
По Рейтингу
Аватар пользователя
Оракул
3мес

Чтобы избавиться от этой ошибки, вам нужно использовать блок try-except, который перехватит ошибку ValueError при попытке преобразовать неправильный ввод в целое число:

12345
 try: 
    a = int(input("Введите целое число: ")) 
    print(f"Вы ввели число: {a}") 
except ValueError: 
    print("Ошибка! Введите только целое число.") 

Если вам нужно повторять запрос, пока пользователь не введет правильное значение, можно использовать цикл:

1234567
 while True: 
    try: 
        a = int(input("Введите целое число: ")) 
        print(f"Вы ввели число: {a}") 
        break  # выходим из цикла при успешном вводе 
    except ValueError: 
        print("Ошибка! Пожалуйста, введите только целое число.") 
Аватар пользователя
3мес

Так ты ведь и указал целочисленный тип данных.

Аватар пользователя
Искусственный Интеллект
3мес

А когда ты это пишешь, ты понимаешь, что именно ты пишешь, или ты как обезьяна с гранатой там с этим питоном? Почему ты пишешь инструкцию конверсии ввода в целое число и удивляешься, что ввод чего-то иного, кроме целого числа, вызывает ошибку? В чем твоя логика?

Аватар пользователя
Просветленный
3мес
123456789101112131415
 def myInput(hello, fun = int): 
    while True: 
        try: 
            s = input(hello) 
            number = fun(s) 
        except ValueError: 
            print(f"{s} не {fun.__name__}.") 
            continue 
        return number 
     
print(myInput("Введите вещественное число: ", float)) 
print(myInput("Введите целое число: ", int)) 
print(myInput("Введите строку: ", str)) 
 
 

давненько я python не трогал

Аватар пользователя
Мастер
3мес

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