Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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_Tkinter - Fatal编程技术网

Python 函数一次又一次地运行,没有任何循环

Python 函数一次又一次地运行,没有任何循环,python,tkinter,Python,Tkinter,我正在做一个石头纸剪刀游戏,但一个错误即将来临 from tkinter import * from PIL import Image, ImageTk def get_random_token(): tokens = ['rock', 'paper', 'scissor'] comp_token = random.choice(tokens) print(comp_token) return comp_token def show_comp_token():

我正在做一个石头纸剪刀游戏,但一个错误即将来临

from tkinter import *
from PIL import Image, ImageTk

def get_random_token():
    tokens = ['rock', 'paper', 'scissor']
    comp_token = random.choice(tokens)
    print(comp_token)
    return comp_token

def show_comp_token():
    if get_random_token() == 'rock':
        rock_token = ImageTk.PhotoImage(Image.open('./gallery/rock_token.png'))
        comp_label.configure(image=rock_token, width=80, height=80)
        comp_label.image = rock_token

    if get_random_token() == 'paper':
        paper_token = ImageTk.PhotoImage(Image.open('./gallery/paper_token.png'))
        comp_label.configure(image=paper_token, width=80, height=80)
        comp_label.image = paper_token

    if get_random_token() == 'scissor':
        scissor_token = ImageTk.PhotoImage(Image.open('./gallery/scissor_token.png'))
        comp_label.configure(image=scissor_token, width=80, height=80)
        comp_label.image = scissor_token

def logic():
    if get_user_token() == 'rock':
        if get_random_token() == 'rock':
            return 'user TIE'
        if get_random_token() == 'paper':
            return 'user LOST'
        if get_random_token() == 'scissor':
            return 'user WON'

    if get_user_token() == 'paper':
        if get_random_token() == 'rock':
            return 'user WON'
        if get_random_token() == 'paper':
            return 'user TIE'
        if get_random_token() == 'paper':
            return 'user LOST'

    if get_user_token() == 'scissor':
        if get_random_token() == 'rock':
            return 'user LOST'
        if get_random_token() == 'paper':
            return 'user WON'
        if get_random_token() == 'scissor':
            return 'user TIE'
def main_func():
        logic()
这只是程序的一部分,但错误仅在此部分。 当我运行程序并在函数中打印
get random tokens
中的
comp_token
时,会打印六个实例,但我只想要一个,这会导致问题

请帮忙

paper
scissor
scissor
rock
rock
rock

logic
方法中,您反复调用
get\u random\u token
方法(其中包含
print
语句)。相反,您应该做的是调用该方法一次,并将值存储在变量中,然后检查它。此外,您还应该执行与
get\u user\u token
方法相同的操作。 像这样:

def logic():
    random_token = get_random_token()
    user_token = get_user_token()
    if user_token == 'rock':
        if random_token == 'rock':
            return 'user TIE'
        if random_token == 'paper':
            return 'user LOST'
        if random_token == 'scissor':
            return 'user WON'

    if user_token == 'paper':
        if random_token == 'rock':
            return 'user WON'
        if random_token == 'paper':
            return 'user TIE'
        if random_token == 'paper':
            return 'user LOST'

    if user_token == 'scissor':
        if random_token == 'rock':
            return 'user LOST'
        if random_token == 'paper':
            return 'user WON'
        if random_token == 'scissor':
            return 'user TIE'

不是调用函数并传递值,而是在每个if条件下调用函数。因此,每次使用不同的值执行函数retuningLogic()在上述代码中从未被调用,这是不完整的@PDHide然后如何修复它请帮助