Python 名称错误:名称';选择';没有定义
我是一个通过与Tkinter创建一个石头、布、剪刀游戏来学习if语句的人。我正在尝试制作一个标签,如果按下按钮就会出现。例如,如果我按下摇滚按钮,它会贴上一个标签,上面写着“摇滚”。但是我在if语句中遇到了一个问题。这就是我所拥有的Python 名称错误:名称';选择';没有定义,python,if-statement,tkinter,Python,If Statement,Tkinter,我是一个通过与Tkinter创建一个石头、布、剪刀游戏来学习if语句的人。我正在尝试制作一个标签,如果按下按钮就会出现。例如,如果我按下摇滚按钮,它会贴上一个标签,上面写着“摇滚”。但是我在if语句中遇到了一个问题。这就是我所拥有的 import random from tkinter import * click = True def compick(): choice = random.choice(["rock","paper",&quo
import random
from tkinter import *
click = True
def compick():
choice = random.choice(["rock","paper","scissors"])
return choice
compchoice = compick()
def yourChoice(Pick):
global click
br = Button(gui, image=img1, command= lambda:yourChoice('rock'))
br.place(x=15, y=100)
bp = Button(gui, image=img2, command= lambda:yourChoice('paper'))
bp.place(x=200 ,y=100)
bs = Button(gui, image=img3, command= lambda:yourChoice('scissors'))
bs.place(x=350, y=100)
if click==True:
if Pick =='rock':
LR.place(x=225, y=500)
if compchoice =='rock':
LR.place(x=225, y=15)
gui.mainloop()
它给了我一个错误,说“名称‘Pick’未定义”。我不知道代码出了什么问题。似乎是缩进错误。将函数
yourChoice
的所有代码放在一个缩进下
大概是这样的:
def yourChoice(Pick):
global click
br = Button(gui, image=img1, command= lambda:yourChoice('rock'))
br.place(x=15, y=100)
bp = Button(gui, image=img2, command= lambda:yourChoice('paper'))
bp.place(x=200 ,y=100)
bs = Button(gui, image=img3, command= lambda:yourChoice('scissors'))
bs.place(x=350, y=100)
if click==True:
if Pick =='rock':
LR.place(x=225, y=500)
if compchoice =='rock':
LR.place(x=225, y=15)
import random
from tkinter import *
click = True
def compick():
choice = random.choice(["rock","paper","scissors"])
return choice
compchoice = compick()
def yourChoice(Pick):
global click
br = Button(gui, image=img1, command= lambda:yourChoice('rock'))
br.place(x=15, y=100)
bp = Button(gui, image=img2, command= lambda:yourChoice('paper'))
bp.place(x=200 ,y=100)
bs = Button(gui, image=img3, command= lambda:yourChoice('scissors'))
bs.place(x=350, y=100)
if click==True:
if Pick =='rock':
LR.place(x=225, y=500)
if compchoice =='rock':
LR.place(x=225, y=15)
gui.mainloop()
现在,上述所有代码都是在调用
yourChoice
函数时执行的。Python是为数不多的缩进非常重要的语言之一。您可以尝试在“全局单击”之后调整代码的缩进,以便它们匹配。大概是这样的:
def yourChoice(Pick):
global click
br = Button(gui, image=img1, command= lambda:yourChoice('rock'))
br.place(x=15, y=100)
bp = Button(gui, image=img2, command= lambda:yourChoice('paper'))
bp.place(x=200 ,y=100)
bs = Button(gui, image=img3, command= lambda:yourChoice('scissors'))
bs.place(x=350, y=100)
if click==True:
if Pick =='rock':
LR.place(x=225, y=500)
if compchoice =='rock':
LR.place(x=225, y=15)
import random
from tkinter import *
click = True
def compick():
choice = random.choice(["rock","paper","scissors"])
return choice
compchoice = compick()
def yourChoice(Pick):
global click
br = Button(gui, image=img1, command= lambda:yourChoice('rock'))
br.place(x=15, y=100)
bp = Button(gui, image=img2, command= lambda:yourChoice('paper'))
bp.place(x=200 ,y=100)
bs = Button(gui, image=img3, command= lambda:yourChoice('scissors'))
bs.place(x=350, y=100)
if click==True:
if Pick =='rock':
LR.place(x=225, y=500)
if compchoice =='rock':
LR.place(x=225, y=15)
gui.mainloop()
缩进函数定义:
def yourChoice(Pick):
global click
br = Button(gui, image=img1, command= lambda:yourChoice('rock'))
br.place(x=15, y=100)
bp = Button(gui, image=img2, command= lambda:yourChoice('paper'))
bp.place(x=200 ,y=100)
bs = Button(gui, image=img3, command= lambda:yourChoice('scissors'))
bs.place(x=350, y=100)
if click==True: # <-- Be careful, you set it to True just before !
if Pick =='rock':
LR.place(x=225, y=500)
if compchoice =='rock':
LR.place(x=225, y=15)
我猜结尾的if语句应该在
yourChoice
函数的主体中。如果是这种情况,您必须正确地缩进它们,以及前面的行,以便它们成为函数体的一部分。缩进在python中非常重要。您的函数yourChoice
只包含一行单数。我认为您应该将所有内容都放在函数内部的yourChoice
(直到mainloop()
)之后,因此您必须将其缩进。请至少阅读基础教程-看起来您的脚本中有很多问题,而不是完整的可执行脚本。首先,您应该得到错误“gui”未定义;按钮中的命令定义了错误的函数,可能只是没有。。。