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然后如何修复它请帮助