Jeu du plus ou moinsđź”—

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env python3
# coding: utf-8

import random

nmin, nmax = 1, 100
nsol = random.randint(nmin, nmax)

print(f"Vous devez deviner un nombre entre {nmin} et {nmax}.")
ncoups = 0                      # Compteur de coups

while True:                     # Boucle infinie: sortie explicite par break
    try:
        proposition = input("Votre proposition: ")
        ntest = int(proposition)       # Exception ValueError potentielle
        if not nmin <= ntest <= nmax:
            raise ValueError()

    except ValueError:
        print(f"Votre proposition {proposition!r} "
              f"n'est pas un entier compris entre {nmin} et {nmax}.")
        continue                # Nouvel essai

    except (KeyboardInterrupt, EOFError):  # Interception de Ctrl-C et Ctrl-D
        print("\nVous abandonnez après seulement "
              f"{ncoups} coup{'s' if ncoups > 1 else ''}!")
        break                   # Interrompt la boucle while

    # Si la proposition est valide, le jeu peut continuer.
    ncoups += 1
    if nsol > ntest:
        print("C'est plus.")
    elif nsol < ntest:
        print("C'est moins.")
    else:
        print(f"Vous avez trouvé en {ncoups} coup{'s' if ncoups > 1 else ''}!")
        break                   # Interrompt la boucle while

Source: pm.py