Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Name error
#1
Hi!
Why dont work the var1 code?

import turtle
from tkinter import *
import tkinter.messagebox

wn = turtle.Screen()
wn.setup(650,650)
wn.bgcolor("White")
wn.title("Turtle program")
geralt = turtle.Turtle()

def ujra():
    restart = raw_input("Új alakzatot akarsz? Ha igenre kattintasz visszamész a program legelejére!")
    if restart == "yes" or restart == "y":
        kerdo()
    if restart == "n" or restart == "no":
        vege()

def kerdo():
    while 1:
        tkinter.messagebox.showinfo("Választó","Válaszd ki a kívánt alakzatot!")
        answer = tkinter.messagebox.askquestion("Választó","Háromszöget választod?")

        if answer == "yes":
            var1 = "haromszog"
            print("Háromszöget választottad!")
            vege()
            break
        else:
            answer = tkinter.messagebox.askquestion("Választó","Négyszöget választod?")

        if answer == "yes":
            var1 = "negyszog"
            print("Négyszöget választottad!")
            vege()
            break
        else:
            answer = tkinter.messagebox.askquestion("Választó","Ötszöget választod?")

        if answer == "yes":
            var1 = "otszog"
            print("Ötszöget választottad!")
            vege()
            break
        else:
            answer = tkinter.messagebox.askquestion("Választó","Nem választottál alakzatot, a program újraindul!")

        if answer == "yes":
            continue
        else:
            continue

def vege():
    print ("A string értéke:", var1)
    if var1 == "haromszog":
        szelesseg=wn.numinput("Szélessége","")
        hosszusag=wn.numinput("Hosszúsága","")
        for i in range(3):
            geralt.forward(szelesseg)
            geralt.right(hosszusag)

    if var1 == "negyszog":
        szelesseg=wn.numinput("Szélessége","")
        hosszusag=wn.numinput("Hosszúsága","")
        for i in range(4):
            geralt.forward(szelesseg)
            geralt.right(hosszusag)

    if var1 == "otszog":
        print("IDE ÍRD A VÁLASZT!")
        lap=int(input("Lapok száma: "))
        hosszusag=int(input("Hosszúsága: "))
        szam=360
        szog = szam/lap
        for i in range(lap):
            geralt.forward(hosszusag)
            geralt.right(szog)
    ujra()

kerdo()
Ötszöget választottad!
Traceback (most recent call last):
File "c:\users\balogh patrik\desktop\beadando.py", line 79, in <module>
kerdo()
File "c:\users\balogh patrik\desktop\beadando.py", line 42, in kerdo
vege()
File "c:\users\balogh patrik\desktop\beadando.py", line 53, in vege
print ("A string értéke:", var1)
NameError: name 'var1' is not defined
Reply
#2
Replace vege() with vege(var1)
Reply
#3
Glad to hear, your program runs well now.

Which language are you using in your script ?

Hungarian ?
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020