Форум сайта python.su
надо взять на вход число и убедиться, что оно правильное. и хочется убедиться, что это вообще число. пытаюсь написать функцию is_valid, которая проверяет input по условиям и возвращает введенный str в виде int. вот только она не конвертирует str в int - на выходе str и остается. усугубляет досадность то, что в виде записи без функции конверсия случается… что за дела? как это решить?
вот пример кода для функции
num = input()
def is_valid(num):
if num.isdigit() and int(num) >= 1 and int(num) <= 1000:
num = int(num)
return num
print(type(num))
вот код без функции
num = input()
if num.isdigit() and int(num) >= 1 and int(num) <= 1000:
num = int(num)
print(type(num))
где я косячу?
Офлайн
ну для начала здесь смотрим ниже (.. в самом низу этого сообщения .. я о подписи)
второе не мешайте все в кучу (в проверке да и вобще) это плохо для понимания
отсюда в начале убедитесь что это число потом преобразуйте это в инт и только потом сравнивайте
Отредактировано AD0DE412 (Дек. 13, 2022 16:55:45)
Офлайн
APytBТы не вызвал функцию, которую написал.
где я косячу?
x = is_valid(num) print(type(x))
text = input() if is_number(text): num = int(text) if is_valid_number(num) print('number =', num) else: print('wrong value') else: print('error in string')
Отредактировано py.user.next (Дек. 13, 2022 00:46:20)
Офлайн
py.user.nextПрям огромное спасибо! Да, это очень ценно. С вызовом - да, косяк. Любопытно, что без присвоения новой переменной даже при вызове это все еще str. Но в целом понятно.
Как видишь, все ошибки различаются сразу. Также имена переменных: мы всегда видим, что в каждом имени находится, строка там или число там. Потому что мы одно имя для всего не используем, а все имена разделяем. Так всегда видно, с чем мы работаем в данный момент и у нас нет сомнений “а что там внутри в этом имени сейчас находится? а там точно строка? а там точно число?”.
Офлайн
AD0DE412ок, учту. спасибо.
ну для начала здесь (смотрим ниже .. в самом низу этого сообщения .. я о подписи)второе не мешайте все в кучу (в проверке да и вобще) это плохо для пониманияотсюда в начале убедитесь что это число потом преобразуйте это в инт и только потом сравнивайте
Офлайн