Python 在该函数内重复一个函数一段时间

Python 在该函数内重复一个函数一段时间,python,Python,有没有办法减少这种代码?它会自己重复,但我找不到任何方法来减少它,因为它只在一个elif中重复。对不起,我是初学者,我的代码很糟糕 while t: input("Appuyez sur entrer pour continuer...") for a in range(nb): while sum(joueurs[a]) < 21 or 11 in joueurs[a]: time.sleep(0.5)

有没有办法减少这种代码?它会自己重复,但我找不到任何方法来减少它,因为它只在一个elif中重复。对不起,我是初学者,我的代码很糟糕

while t:
    input("Appuyez sur entrer pour continuer...")
    for a in range(nb):
        while sum(joueurs[a]) < 21 or 11 in joueurs[a]:
            time.sleep(0.5)
            print("main du joueur", a + 1, ":", joueurs[a], "Total :", sum(joueurs[a]))
            if sum(joueurs[a]) > 21 and 11 in joueurs[a]:
                onze(joueurs)
                print("joueur", a + 1, "a", joueurs[a])
            ask = input("Joueur {} voulez vous une carte ?(oui/non)".format(a + 1))
            if ask == "oui":
                askoui(joueurs)
            else:
                asknon()
                t = False
                break
        if sum(joueurs[a]) == 21:
            print("joueur", a + 1, "a BLACKJACK")
            time.sleep(1)
        elif sum(joueurs[a]) > 21 and 11 in joueurs[a]:
            onze(joueurs)
            print("joueur", a + 1, "a", joueurs[a])
            time.sleep(1)
            while sum(joueurs[a]) < 21 or 11 in joueurs[a]: #it repeats itelf here
                time.sleep(0.5)
                print("main du joueur", a + 1, ":", joueurs[a], "Total :", sum(joueurs[a]))
                if sum(joueurs[a]) > 21 and 11 in joueurs[a]:
                    onze(joueurs)
                    print("joueur", a + 1, "a", joueurs[a])
                ask = input("Joueur {} voulez vous une carte ?(oui/non)".format(a + 1))
                if ask == "oui":
                    askoui(joueurs)
                else:
                    asknon()
                    t = False
                    break
            elif sum(joueurs[a]) > 21:
                perdu(joueurs)
                t = False
        elif sum(joueurs[a]) > 21:
            perdu(joueurs)
            t = False
而t:
输入(“Appuyez sur enter pour continuer…”)
对于范围内的(nb):
当总和(焦耳[a])小于21或11(焦耳[a]:
睡眠时间(0.5)
印刷体(“主要工作日”,a+1,”:“,工作日[a],“总计:”,总和(工作日[a]))
如果总和(焦耳[a])>21和11(焦耳[a]:
安泽(焦耳)
打印(“焦耳”,a+1,“a”,焦耳[a])
ask=input(“Jouer{}voulez-vous-une-carte?(oui/non)”。格式(a+1))
如果ask==“oui”:
askoui(Jouers)
其他:
阿斯克农()
t=假
打破
如果总和(焦耳[a])==21:
打印(“Jouer”,a+1,“21点”)
时间。睡眠(1)
elif sum(焦耳[a])>21和11(焦耳[a]:
安泽(焦耳)
打印(“焦耳”,a+1,“a”,焦耳[a])
时间。睡眠(1)
而sum(jouers[a])<21或11在jouers[a]:#它在这里重复它自己
睡眠时间(0.5)
印刷体(“主要工作日”,a+1,”:“,工作日[a],“总计:”,总和(工作日[a]))
如果总和(焦耳[a])>21和11(焦耳[a]:
安泽(焦耳)
打印(“焦耳”,a+1,“a”,焦耳[a])
ask=input(“Jouer{}voulez-vous-une-carte?(oui/non)”。格式(a+1))
如果ask==“oui”:
askoui(Jouers)
其他:
阿斯克农()
t=假
打破
elif sum(焦耳[a])>21:
佩杜(焦耳)
t=假
elif sum(焦耳[a])>21:
佩杜(焦耳)
t=假

您要求对工作代码进行开放式重构;这适用于CodeReview,而不是StackOverflow。你还需要定义你的问题;要求“减少此代码”显示的不仅仅是您需要练习编程或询问某个特定代码块。如果您发现自己在重复代码,通常的解决方案是将其放入函数中。好的,我将使用CodeReview抱歉@Barmar我试着把它放到一个函数中,但我无法阻止它,所以它永远不会结束,它只意味着你复制的部分,比如说,sum(jouers[a])<21或11 in jouers[a]: