Форум сайта python.su
Здравствуйте. Недавно столкнулся с такой проблемой, как область видимости переменных. Она не позволяет мне решить поставленную задачу(написание программы)Вот такой код:
import random
def func():
global a
global b
global c
global d
a = random.randint(0 , 999)
b = random.randint(0 , 999)
с = random.randint(0 , 1)
d = None
if c == 0:
a + b
d = a + b
elif c == 1:
a - b
d = a - b
return a , b , d
func()
И когда я пытаюсь вывести на экран любую переменную с помощью print, то он выводит ошибку, хотя синтаксис верный. Ошибка NameError:
if c == 0:
NameError: name ‘c’ is not defined
И такое случается со всеми переменными, которые я там объявлял.
В интернете ничего не нашел, объясните, пж, что тут неверно
Отредактировано rtv132 (Сен. 12, 2017 20:10:46)
Офлайн
поменяйте “с” русскую на английскую
[code python][/code]
Отредактировано PEHDOM (Сен. 12, 2017 20:59:34)
Офлайн
скорее всего с в строке с = random.randint(0 , 1) набрана кириллицей или в if. а зачем обьявлять переменные глобальными если они созданы в функции и возвращаются ею
import random def func(): a = random.randint(0 , 999) b = random.randint(0 , 999) c = random.randint(0 , 1) if c == 0: d = a + b elif c == 1: d = a - b return a , b ,c, d print(func()) (354, 552, 0, 906)
a = 55 # глобальная переменная def noglob(): a = 77 return(a) print(a) # глобальная а print(noglob()) # а из функции print(a) # глобальная а 55 77 55
a = 55 # глобальная переменная def noglob(): global a a = 77 return(a) print(a) # глобальная а print(noglob()) # а из функции print(a) # глобальная а 55 77 77
Отредактировано marvellik (Сен. 21, 2017 21:35:55)
Офлайн
спасибо
Офлайн