Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблема с Python

Эмир Валиев Знаток (263), открыт 23 часа назад
пользователю даётся написать число через int(input(), но почему то питон не запрещает вводить что то кроме цифр, если я попытаюсь преобразовать то что пользователь ввёл в число, он выдаст ошибку если это str значение
вопрос, как проверить можно ли перевести строку в int
6 ответов
Поля Расфановна Профи (734) 23 часа назад
да бросай питон нах это мутотень лютая
i use arch btw Гуру (3206) 23 часа назад
Вот сидит он, наш цифровой Колумб, уперто тыкая в MidJourney запросы уровня «нарисуй красиво». Потом полдня кряхтит, почему нейросеть «тупит» и не выдает шедевр с первого клика. ChatGPT он, конечно, использует исключительно для вопросов в духе «привет, как дела?» — и гордо хвалится «общением с ИИ».

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

Великий стратег цифровой эпохи — борется с нейросетью, как обезьяна с шахматами. И ведь побеждает!.. В своей голове.
ПапаВысший разум (154138) 23 часа назад
Похоже, это было в самую точку, ибо дебил дизлайкнул ответ, при этом оставив флуд от троллей.
@GLAVQA Профи (893) 23 часа назад
Да, в 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 благодарит за интересный вопрос
Кален Мыслитель (9839) 23 часа назад
Ну если ты используешь int перед инпутом то он примит только целочисленные значения. Есть вариант - сделать проверку на появление ошибки неверного типа данных при вводе и попросить пользователя повторно ввести.
Эмир ВалиевЗнаток (263) 23 часа назад
в этом то и вопрос, как проверить выдаст ошибку или нет
Кален Мыслитель (9839) Эмир Валиев, expect и try, вот тут есть подробнее https:// pythonworld .ru /tipy -dannyx-v-python/isklyucheniya-v-python-konstrukciya-try-except-dlya-obrabotki-isklyuchenij.html как и типы ошибок которые можно проверять. Только ссылку аниспам банит, так что вводи все без пробелов
enene Знаток (272) 23 часа назад
Попробуй проверку сделать по типу без int, то есть просто input. if y = int: print ('это не число')
как то так
Эмир ВалиевЗнаток (263) 23 часа назад
ну в моем коде операторы сравнивают первое число, и число которое ввёл пользователь. Если я оставлю просто input, то он автоматически выдаст ответ пользователя в типе str, независимо я ввёл число или строку. А сравнить строку и число я не могу, нужно переводить ответ пользователя в число. Но если он напишет строку, я переведу строку в число и мне выдаст ошибку
enene Знаток (272) Эмир Валиев, если вводится строка сделай вывод что это не число и переприсвой этой переменной 0 или любое другое число чтобы ошибка при сравнении не выходила
eneneЗнаток (272) 23 часа назад
 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("Выход...")
eneneЗнаток (272) 23 часа назад
Поковырял дипсик
протестил и вроде при введении строки выдает принт и прога не вылетает
eneneЗнаток (272) 23 часа назад
переделай под себя и думаю будет норм
Похожие вопросы