Я пытаюсь создать программу, которая вычисляет наибольшее количество объектов (самородков), которые вы не можете получить с пакетами 6-9-20 (я довольно новичок в python , я пытаюсь использовать глобальный и нелокальный, но он тоже не работает).NameError: глобальное имя 'cb' не определено
def nuggets(n):
x = 6
y = 9
z = 20
for i in range(0,n//x+1):
for j in range(0,n//y+1):
for k in range(0,n//z+1):
if i*x + j*y + k*z == n:
return [i,j,k]
return None
def cant_buy(n):
seq=0
for i in range(n):
p=nuggets(i)
if type(p)== list:
seq+=1
elif type(p)== None:
cb=i
seq=0
return cb
Затем появляется эта ошибка: Traceback (самый последний вызов последнего): Файл " ", строка 1, в cant_buy (12) Файл "C: \ Python33 \ ОКУ 6,00 \ ps2a.py" , строка 22, в cant_buy return cb NameError: глобальное имя 'cb' не определено
Что не так? Я определил его в заявлении elif.
Ваш cb объявлен/назначен внутри операторов цикла/ветвления. Если эти пути не тронуты, переменная cb никогда не создается. – Anycorn
Вы пробовали код внутри функции? Я попробовал начало самородков, и получил это: >>> x = 6 >>> y = 9 >>> z = 20 >>> range (0, n // x + 1) [ 0] >>> диапазон (0, п // у + 1) [0] >>> диапазон (0, п // г + 1) [0] Я не думаю, что это то, что вы разыскивается. – thefourtheye
Если вы закомментируете свой код строкой с вашими намерениями, мы можем помочь вам исправить их. Я подозреваю, что несколько ошибок приводят к тому, что cb остается несотворенным. – thefourtheye