Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 29, 2017 18:03:29

Fedy1661
Зарегистрирован: 2017-10-29
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

UnboundLocalError

Никак не могу найти причину ошибки.

 #coding: utf-8
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
sum1 = 0
x = Tk ()
x.geometry("300x300")
x.title("Топ программ")
def y ():
    t = Label(x, text = "Человек ли Вы?", font = "Arial 14")
    t.pack()
    e = Entry()
    e.pack()
    b = Button(x, text = "Ответить", command = lambda: z())
    b.pack()
    def z ():
        if e.get().lower() == "да":
            y1()
            sum1 = sum1 + 1
        else:
            y1()
def y1 ():
    t1 = Label(x, text = "Один из умнейших вулканцев?", font = "Arial 14")
    t1.pack()
    e1 = Entry()
    e1.pack()
    b1 = Button(x, text = "Ответить", command = lambda: z1())
    b1.pack()
    def z1 ():
        if e1.get().lower() == "спок":
            y3()
            sum1 = sum1 + 1
        else:
            y3()
def y3():
    t3 = Label(x, text = "Создатель Apple?", font = "Arial 14")
    t3.pack()
    e3= Entry()
    e3.pack()
    b3= Button(x, text = "Ответить", command = lambda: z3())
    b3.pack()
    def z3():
        if e3.get().lower() == "стив джобс" or e3.get() == "джобс":
            y4()
            sum1 = sum1 + 1
        else:
            y4()
def y4():
    t4 = Label(x, text = "Создатель Steam?", font = "Arial 14")
    t4.pack()
    e4 = Entry()
    e4.pack()
    b4 = Button(x, text = "Ответить", command = lambda: z4())
    b4.pack()
    def z4():
        if e4.get().lower() == "гейб":
            sum1 = sum1 + 1
            if sum1 == 1:
                messagebox.showwarning("ИТОГ", "Ты ответил правильно на 1 вопрос")
            elif sum1 == 2:
                messagebox.showwarning("ИТОГ", "Ты ответил правильно на 2 вопроса")
            elif sum1 == 3:
                messagebox.showwarning("ИТОГ", "Ты ответил правильно на 3 вопроса")
            elif sum1 == 4:
                messagebox.showwarning("ИТОГ", "Ты ответил правильно на 4 вопроса")
            elif sum1 == 5:
                messagebox.showwarning("ИТОГ", "Ты ответил правильно на 5 вопросов")
        else:
            if sum1 == 1:
                messagebox.showwarning("ИТОГ", "Ты ответил правильно на 1 вопрос")
            elif sum1 == 2:
                messagebox.showwarning("ИТОГ", "Ты ответил правильно на 2 вопроса")
            elif sum1 == 3:
                messagebox.showwarning("ИТОГ", "Ты ответил правильно на 3 вопроса")
            elif sum1 == 4:
                messagebox.showwarning("ИТОГ", "Ты ответил правильно на 4 вопроса")
            elif sum1 == 5:
                messagebox.showwarning("ИТОГ", "Ты ответил правильно на 5 вопросов")
y()
x.mainloop()
Ошибка
Exception in Tkinter callback
Traceback (most recent call last):
File “C:\Users\Fedy\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py”, line 1699, in __call__
return self.func(*args)
File “F:\untitled-222.py”, line 14, in <lambda>
b = Button(x, text = “Ответить”, command = lambda: z())
File “F:\untitled-222.py”, line 19, in z
sum1 = sum1 + 1
UnboundLocalError: local variable ‘sum1’ referenced before assignment

Офлайн

#2 Окт. 30, 2017 12:34:26

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

UnboundLocalError

Ну вам же ясно пишут - переменная используется раньше чем ее определили. смотрите на 19 строку - sum1 ранее не была определена.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Окт. 30, 2017 13:00:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

UnboundLocalError

JOHN_16 не увидел, что у вас есть глобальная переменная с таким именем, но он тем не менее абсолютно прав. Интерпретатор не может сам догадаться, что вы хотите присвоить значение глобальной переменной, а не переменной области видимости функции. погуглите ключевые слова global и nonlocal



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version