Top.Mail.Ru
Ответы

Проблема с Python

пользователю даётся написать число через int(input(), но почему то питон не запрещает вводить что то кроме цифр, если я попытаюсь преобразовать то что пользователь ввёл в число, он выдаст ошибку если это str значение
вопрос, как проверить можно ли перевести строку в int

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

Вот сидит он, наш цифровой Колумб, уперто тыкая в MidJourney запросы уровня «нарисуй красиво». Потом полдня кряхтит, почему нейросеть «тупит» и не выдает шедевр с первого клика. ChatGPT он, конечно, использует исключительно для вопросов в духе «привет, как дела?» — и гордо хвалится «общением с ИИ».

А когда нейросеть вдруг просит уточнить запрос, он оскорблённо пишет: «САМА ДУМАЙ». Потому что зачем ему разбираться в prompt engineering, если можно просто обвинить технологию в криворукости?

Великий стратег цифровой эпохи — борется с нейросетью, как обезьяна с шахматами. И ведь побеждает!.. В своей голове.

Аватар пользователя
Мыслитель
10мес

Похоже, это было в самую точку, ибо дебил дизлайкнул ответ, при этом оставив флуд от троллей.

Аватар пользователя
Ученик
10мес

придуши его

Аватар пользователя
Ученик
10мес

Попробуй проверку сделать по типу без int, то есть просто input. if y = int: print ('это не число')
как то так

Аватар пользователя
Ученик
10мес

ну в моем коде операторы сравнивают первое число, и число которое ввёл пользователь. Если я оставлю просто input, то он автоматически выдаст ответ пользователя в типе str, независимо я ввёл число или строку. А сравнить строку и число я не могу, нужно переводить ответ пользователя в число. Но если он напишет строку, я переведу строку в число и мне выдаст ошибку

Аватар пользователя
Ученик
10мес
1234567891011121314151617
 def get_number_from_user():
    while True:
        user_input = input("Введите число (или 'exit' для выхода): ")
        
        if user_input.lower() == "exit":
            return None
        
        try:
            return float(user_input)  # или int(), если нужно целое
        except ValueError:
            print("Ошибка! Введите число или 'exit'.")

number = get_number_from_user()
if number is not None:
    print("Вы ввели число:", number)
else:
    print("Выход...") 
Аватар пользователя
Ученик
10мес

Поковырял дипсик
протестил и вроде при введении строки выдает принт и прога не вылетает

Аватар пользователя
Ученик
10мес

переделай под себя и думаю будет норм

Аватар пользователя
Гуру
10мес

Ну если ты используешь int перед инпутом то он примит только целочисленные значения. Есть вариант - сделать проверку на появление ошибки неверного типа данных при вводе и попросить пользователя повторно ввести.

Аватар пользователя
Ученик
10мес

в этом то и вопрос, как проверить выдаст ошибку или нет

Аватар пользователя
Ученик
10мес

Да, в Python действительно int(input()) выбросит ошибку ValueError, если введено не число (например: "abc" или "12abc").

✅ Как правильно проверить, можно ли строку перевести в int:
Используй конструкцию try + except:

user_input = input("Введите число: ")

try:
number = int(user_input)
print("Это целое число:", number)
except ValueError:
print("Ошибка: это не целое число")


🔧 Как альтернатива — использовать .isdigit(), НО осторожно:

s = input("Введите число: ")
if s.isdigit():
print("Это число:", int(s))
else:
print("Это не число")

❗ .isdigit() работает только для положительных целых чисел (например: "123"),
но не сработает для "-5" или "12.3".


💡 Универсальная функция проверки:

def is_integer(s):
try:
int(s)
return True
except ValueError:
return False

s = input("Введите: ")
if is_integer(s):
print("Целое число:", int(s))
else:
print("Это не целое число")

GLAVQA благодарит за интересный вопрос

Аватар пользователя
Ученик
10мес

да бросай питон нах это мутотень лютая



Видео по теме