Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 名称错误:名称';选择';没有定义_Python_If Statement_Tkinter - Fatal编程技术网

Python 名称错误:名称';选择';没有定义

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

我是一个通过与Tkinter创建一个石头、布、剪刀游戏来学习if语句的人。我正在尝试制作一个标签,如果按下按钮就会出现。例如,如果我按下摇滚按钮,它会贴上一个标签,上面写着“摇滚”。但是我在if语句中遇到了一个问题。这就是我所拥有的

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”未定义;按钮中的命令定义了错误的函数,可能只是没有。。。