Найти - Пользователи
Полная версия: UnboundLocalError: local variable 'ii' referenced before assignment
Начало » Python для новичков » UnboundLocalError: local variable 'ii' referenced before assignment
1
Ahmasoft
В общем вот программа:
 import random
week = []
pn = []; vt = []; sr = []; ct = []; pt = []; sb = []
g = int(input("BBeguTe KoJIu4ecTBo hpegMeToB B geHb: "))
prs = int(input("BBeguTe KoJIu4ecTBo hpegMeToB (o6LLLee) : "))
i = 0
ii = 0
while i < prs:
    week.append(raw_input())
    i += 1
random.shuffle(week)
def days(a):
   if ii == g:
      g =  g +  g
      while ii < g:
        a.append(week[ii]) 
        ii += 1
   else:
     while ii < g:
        a.append(week[ii]) 
        ii += 1
days(pn); days(vt); days(sr); days(ct); days(pt); days(sb)
print("TIoHegeJIbHuk: ", pn)
print("BTopHuK: ", vt)  
print("Cpega: ", sr)
print("4eTBepr: ", ct)
print("TI9ITHuLLa: ", pt)
print("Cy66oTa: ", sb)
FishHook
Потому что
def days(a):
   global i
   if ii == g:
Ahmasoft
Может
global ii
? A то с
global i 
не катит
FishHook
Ну разумеется
Ahmasoft
В общем вот что получилось:
import random 
week = [] 
pn = []; vt = []; sr = []; ct = []; pt = []; sb = [] 
g = int(input("BBeguTe KoJIu4ecTBo hpegMeToB B geHb: ")) 
prs = int(input("BBeguTe KoJIu4ecTBo hpegMeToB (o6LLLee) : ")) 
i = 0
while i < prs: 
    week.append(raw_input()) 
    i += 1 
random.shuffle(week)
def days(a): 
    ii = 0 
    global g
    if ii == g: 
        iii = ii
        g = g + g 
        while ii < g: 
            a.append(week[ii-iii]) 
            ii += 1 
    else: 
        while ii < g: 
            a.append(week[ii])
            ii += 1 
    return ii
days(pn); days(vt); days(sr); days(ct); days(pt); days(sb)
print("TIoHegeJIbHuk: ", pn)
print("BTopHuK: ", vt) 
print("Cpega: ", sr) 
print("4eTBepr: ", ct) 
print("TI9ITHuLLa: ", pt)
print("Cy66oTa: ", sb)
Хотелось бы узнать как в функции days сделать чтобы при последующем проходе ii уже не присваивалось значение 0, а только в самом начале ?
FishHook
Ничего вы не узнаете, у вас кажется проблемы с логикой
 if ii == g: 
        while ii < g: 
Вы сравнили ii с g, получили, что они равны и тут же ждете, что ii станет меньше? Как, почему, каким образом?
Ahmasoft
Не то отправил. Вот:
import random 
week = [] 
pn = []; vt = []; sr = []; ct = []; pt = []; sb = [] 
g = int(input("BBeguTe KoJIu4ecTBo hpegMeToB B geHb: ")) 
prs = int(input("BBeguTe KoJIu4ecTBo hpegMeToB (o6LLLee) : ")) 
i = 0
ii = 0
while i < prs: 
    week.append(raw_input()) 
    i += 1
random.shuffle(week)
def days(a): 
    global g
    global ii
    if ii == g: 
       while ii >= g: 
            a.append(week[ii]) 
            ii -= 1 
    else: 
        while ii < g: 
            a.append(week[ii])
            ii += 1 
    return ii
days(pn); days(vt); days(sr); days(ct); days(pt); days(sb)
print("TIoHegeJIbHuk: ", pn)
print("BTopHuK: ", vt) 
print("Cpega: ", sr) 
print("4eTBepr: ", ct) 
print("TI9ITHuLLa: ", pt)
print("Cy66oTa: ", sb)
FishHook
Давайте мы поступим по-другому. Вы толково изложите задачу, а кто-нибудь из местных или я (если позволят обстоятельства) вам помогут с решением. От вашего кода, честно говоря, хочется чесаться, поэтому лучше сделать по-правильному, да и вам будет мастер-класс.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB