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

Проблема с Python

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

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

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