Main loop for a text-based Blackjack game Is there any way to reduce this code? It repeats itself, but I cannot find any way to reduce it because it is only repeating inside one elif. Sorry I'm a beginner my code is quite bad
It repeats here:
           onze(joueurs)
           print(&quot;joueur&quot;, a + 1, &quot;a&quot;, joueurs[a])
           time.sleep(1)
           while sum(joueurs[a]) &lt; 21 or 11 in joueurs[a]: 

The code :
while t:
    input(&quot;Appuyez sur entrer pour continuer...&quot;)
    for a in range(nb):
        while sum(joueurs[a]) &lt; 21 or 11 in joueurs[a]:
            time.sleep(0.5)
            print(&quot;main du joueur&quot;, a + 1, &quot;:&quot;, joueurs[a], &quot;Total :&quot;, sum(joueurs[a]))
            if sum(joueurs[a]) &gt; 21 and 11 in joueurs[a]:
                onze(joueurs)
                print(&quot;joueur&quot;, a + 1, &quot;a&quot;, joueurs[a])
            ask = input(&quot;Joueur {} voulez vous une carte ?(oui/non)&quot;.format(a + 1))
            if ask == &quot;oui&quot;:
                askoui(joueurs)
            else:
                asknon()
                t = False
                break
        if sum(joueurs[a]) == 21:
            print(&quot;joueur&quot;, a + 1, &quot;a BLACKJACK&quot;)
            time.sleep(1)
        elif sum(joueurs[a]) &gt; 21 and 11 in joueurs[a]:
            onze(joueurs)
            print(&quot;joueur&quot;, a + 1, &quot;a&quot;, joueurs[a])
            time.sleep(1)
            while sum(joueurs[a]) &lt; 21 or 11 in joueurs[a]: 
                time.sleep(0.5)
                print(&quot;main du joueur&quot;, a + 1, &quot;:&quot;, joueurs[a], &quot;Total :&quot;, sum(joueurs[a]))
                if sum(joueurs[a]) &gt; 21 and 11 in joueurs[a]:
                    onze(joueurs)
                    print(&quot;joueur&quot;, a + 1, &quot;a&quot;, joueurs[a])
                ask = input(&quot;Joueur {} voulez vous une carte ?(oui/non)&quot;.format(a + 1))
                if ask == &quot;oui&quot;:
                    askoui(joueurs)
                else:
                    asknon()
                    t = False
                    break
            elif sum(joueurs[a]) &gt; 21:
                perdu(joueurs)
                t = False
        elif sum(joueurs[a]) &gt; 21:
            perdu(joueurs)
            t = False
It's &quot;Pythonic&quot; to iterate through items, so assuming that len(joueurs) == nb, your main for loop can be:
    for a, joueur in enumerate(joueurs):

which means all your joueurs[a] become joueur. I'm quite surprised that onze, askoui and perdu functions take the whole joueurs list, not just the current player. How does that work?
I'd guess that the check for possible onze action, which I take it is converting an ace down from 11 points to 1, could more comfortably fit within the askoui function when our current player gets another card, non? Then this main routine could just check against 21, or perhaps even better the askoui function could return a status value.
Difficult to be more specific without getting into some of these auxiliary functions. Here's my best guess at a reduced code that I think should do the same  as you presently have, plus some outstanding issues:
while t:
    input(&quot;Appuyez sur entrer pour continuer...&quot;)
    for ix, jr in enumerate(joueurs):
        jID = ix+1
        while sum(jr) &lt; 21:
            time.sleep(0.5)
            print(&quot;main du joueur&quot;, jID, &quot;:&quot;, jr, &quot;Total :&quot;, sum(jr))
            ask = input(&quot;Joueur {} voulez vous une carte ?(oui/non)&quot;.format(jID))
            if ask == &quot;oui&quot;:
                askoui(joueurs) # why all joueurs?
                if sum(jr) &gt; 21 and 11 in jr:
                    onze(joueurs) # why all joueurs?
            else:
                asknon()
                t = False # immediate halt to play for all players?
                break
        if sum(jr) == 21:
            print(&quot;joueur&quot;, jID, &quot;a BLACKJACK&quot;)
            time.sleep(1) # then play continues
        elif sum(jr) &gt; 21:
            perdu(joueurs) # why all joueurs?
            t = False
        # play continues without message if sum(jr)&lt;21 ?