Форум сайта python.su
0
Приветствую.
Есть функция на проверку ввода положительного числа.
Но когда выполняется расчет после её вызова в строке “a = 5 + your_number_name” питон ругается, что переменная your_number_name не объявлена. Как это? я же объявил ее в функции выше.
Если поместить расчет в саму функцию после else то все работает, но смысл теряется.
def check_positive_number(): qop = 0 text_input = "Введите x:" text_enter_string = "Введите числовое значение" text_enter_minus_number = "Введите положительное число" text_null = "Пустовато :(" while qop == 0: try: your_number_name = int(input(text_input)) except ValueError: print(text_enter_string) continue if your_number_name < 0: print(text_enter_minus_number) elif your_number_name == 0: print(text_null) else: qop+= 1 print("a = 5 + x") check_positive_number() a = 5 + your_number_name print("a = ", a)
Офлайн
294
Like_a_Doshiбугагашечки, читаем про области видимости https://python-scripts.com/scope
Как это? я же объявил ее в функции выше.
[code python][/code]
Офлайн
0
PEHDOMеее, заработало.
global your_number_name
Офлайн
221
Это конечно все здорово, но не думали ли вы что Вам нужна в данном случае функция которая будет уже принимать переданное пользователем значение и проверять его? Либо функция должна называться как то check_and_return и возвращать пользовательское значение?
Вместо этого вы делаете не хороший прием для данного конкретного случая
Офлайн
0
JOHN_16А как отличить хороший приём от плохого сенсей?
Это конечно все здорово, но не думали ли вы что Вам нужна в данном случае функция которая будет уже принимать переданное пользователем значение и проверять его? Либо функция должна называться как то check_and_return и возвращать пользовательское значение? Вместо этого вы делаете не хороший прием для данного конкретного случая
Офлайн
13
Смотри. Вот пример:
def get_num(): while True: _num = input("Ur num noob: ") if not _num: print("No stdin!") continue if not _num.isdigit(): print("Ti durak shto li? Nado chislo, i chtobi poloshitelnoe!!") continue return _num print(f"Ur formatted num: {int(get_num) + 5}")
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Отредактировано DamMercul (Июль 26, 2018 16:59:55)
Офлайн