Python 有人知道如何组合这些功能吗?

Python 有人知道如何组合这些功能吗?,python,tkinter,Python,Tkinter,我想将def clicked和def clicked2这两个函数结合起来,因为它们是相同的,但我不知道如何做到这一点。我还没试过,但我想不出一个办法 from tkinter import * import random window = Tk() x = round(random.random()) + 1 m = 7 window.title("NIM-7 spel") window.geometry('350x200') lbl = Label(window, text="Playe

我想将def clicked和def clicked2这两个函数结合起来,因为它们是相同的,但我不知道如何做到这一点。我还没试过,但我想不出一个办法

from tkinter import *
import random
window = Tk()
x = round(random.random()) + 1
m = 7 
window.title("NIM-7 spel") 
window.geometry('350x200') 
lbl = Label(window, text="Player " + str(x) + " next")
lbl2 = Label(window, text="Their are " + str(m) + " coins left")
lbl.grid(column=0, row=1) 
lbl2.grid(column=1, row=0)

def clicked(): 
    global x
    global m
    m -= 1
    if m < 1:
        lol = "Player " + str(x) + " won!"
        res = ""
    else: 
        if x == 1: 
            x = 2
        else: 
            x = 1
        lol = "Their are " + str(m) + " coins left"
        res = "Player " + str(x) + " is next"
    lbl.configure(text=res) 
    lbl2.configure(text=lol)
def clicked2(): 
    global x
    global m
    m -= 2
    if m < 1: 
        lol = "Player " + str(x) + " won!"
        res = ""
    else: 
        if x == 1: 
            x = 2
        else: 
            x = 1
        lol = "Their are " + str(m) + " coins left"
        res = "Player " + str(x) + " is next"
    lbl.configure(text=res)
    lbl2.configure(text=lol)

btn1 = Button(window, text="Take 1 coin", command=clicked)
btn2 = Button(window, text="Take 2 coins", command=clicked2)
btn1.grid(column=1, row=1)
btn2.grid(column=2, row=1)
window.mainloop() 
从tkinter导入*
随机输入
window=Tk()
x=圆形(random.random())+1
m=7
窗口标题(“NIM-7 spel”)
窗口几何(“350x200”)
lbl=标签(窗口,text=“Player”+str(x)+“下一步”)
lbl2=标签(窗口,text=“他们是”+str(m)+“硬币左”)
lbl.grid(列=0,行=1)
lbl2.grid(列=1,行=0)
def clicked():
全球x
全球m
m-=1
如果m<1:
lol=“Player”+str(x)+“赢了!”
res=“”
其他:
如果x==1:
x=2
其他:
x=1
lol=“他们是”+str(m)+“剩下的硬币”
res=“Player”+str(x)+“是下一个”
lbl.configure(text=res)
lbl2.configure(text=lol)
def clicked2():
全球x
全球m
m-=2
如果m<1:
lol=“Player”+str(x)+“赢了!”
res=“”
其他:
如果x==1:
x=2
其他:
x=1
lol=“他们是”+str(m)+“剩下的硬币”
res=“Player”+str(x)+“是下一个”
lbl.configure(text=res)
lbl2.configure(text=lol)
btn1=按钮(窗口,text=“拿走1枚硬币”,命令=点击)
btn2=按钮(窗口,text=“获取2枚硬币”,命令=点击2)
btn1.网格(列=1,行=1)
btn2.网格(列=2,行=1)
window.mainloop()

有人知道怎么做吗?

作为一个参数,输入要减少多少
m
。因此:

def单击(减量):
全球x
全球m
m-=减量
如果m<1:
lol=“Player”+str(x)+“赢了!”
res=“”
其他:
如果x==1:
x=2
其他:
x=1
lol=“他们是”+str(m)+“剩下的硬币”
res=“Player”+str(x)+“是下一个”
lbl.configure(text=res)
lbl2.configure(text=lol)
然后这样称呼它:
clicked(1)
clicked(2)

由于要将其作为参数传递给
按钮
,因此可以创建虚拟函数:

def clicked1():
点击(1)

类似于
clicked2

如果使用lambda函数,则可以向tkinter按钮添加参数。 已经提出了一些相同的问题:

def单击(值):
全球x
全球m
m-=值
如果m<1:
lol=“Player”+str(x)+“赢了!”
res=“”
其他:
如果x==1:
x=2
其他:
x=1
lol=“他们是”+str(m)+“剩下的硬币”
res=“Player”+str(x)+“是下一个”
lbl.configure(text=res)
lbl2.configure(text=lol)
btn1=按钮(窗口,text=“拿走1枚硬币”,命令=lambda:点击(1))
btn2=按钮(窗口,text=“获取2枚硬币”,命令=lambda:单击(2))

如果它们相同,您可以删除其中一个,然后使用另一个。或者你的意思是他们几乎一样?他们不一样。一个减1,另一个减2。你的意思是问如何将公共部分分解成第三个函数,并从这两个函数中调用新函数?谢谢。我很感激。我是初学者,所以对我来说还是很难。你也知道如何使代码尽可能短吗?谢谢你的回答。这真的很有帮助。我是初学者,所以对我来说还是很难。你还知道如何使答案中的代码尽可能简短吗?我想学习最有效的编码方法。
def clicked(value): 
    global x
    global m
    m -= value
    if m < 1:
        lol = "Player " + str(x) + " won!"
        res = ""
    else: 
        if x == 1: 
            x = 2
        else: 
            x = 1
        lol = "Their are " + str(m) + " coins left"
        res = "Player " + str(x) + " is next"
    lbl.configure(text=res) 
    lbl2.configure(text=lol)

btn1 = Button(window, text="Take 1 coin", command = lambda:clicked(1))
btn2 = Button(window, text="Take 2 coins", command = lambda:clicked(2))