SNT Date:
Nom: Prénom : Classe:
TP 1 Seconde: initiation a la programmation
objectifs:
- Écrire, exécuter et mettre au point un programme
I. Jeu de devinettes
Notebook sur un des premiers programmes qu’on écrit quand on apprend à programmer. Une boucle,
un test.
Ce jeu est très simple. L'ordinateur tire un nombre au hasard entre 1 et 100 et vous avez 10 essais
pour le trouver. Après chaque tentative, l'ordinateur vous dira si le nombre que vous avez proposé est
trop grand, trop petit, ou si vous avez trouvé le bon nombre.
Exemple de partie
J'ai choisi un nombre entre 1 et 100
A vous de le deviner en 10 tentatives au maximum ! Essai no 1
Votre proposition : 15
Trop petit
Essai no 2
Votre proposition : 22
Trop grand
Essai no 3
Votre proposition : 17
Trop grand
Essai no 4
Votre proposition : 16
Bravo ! Vous avez trouvé 16 en 4 essais
Q1 : Ecrire ce jeu dans lequel python choisi aléatoirement un nombre entre 0 et 100, et
essayer de trouver ce nombre en 10 étapes (avec la fonction input). Appuyer sur Ok pour
retourner une valeur.
Q2 : Transformer ce jeu en une fonction jeu(nVies) où nVies est le nombre d’itérations
maximum.
Q3 : Adapter le code pour faire une classe joueur avec une méthode jouer, où un joueur est
défini par un pseudo et son nombre de vies. Faire jouer deux joueurs et déterminer le
vainqueur.
Code du programme:
# Devine mon nombre
from random import randint
nbr_essais_max = 10
nbr_essais = 1
borne_sup = 100
mon_nombre = randint(1,borne_sup)
ton_nombre = 0
# nombre choisi par l'ordinateur
# nombre proposé par le joueur
print("J'ai choisi un nombre entre 1 et",borne_sup)
print("A vous de le deviner en",nbr_essais_max,"tentatives au maximum !")
while ton_nombre != mon_nombre and nbr_essais <= nbr_essais_max:
print("Essai no ",nbr_essais)
ton_nombre = int(input("Votre proposition : "))
if ton_nombre < mon_nombre:
print("Trop petit")
elif ton_nombre > mon_nombre:
print("Trop grand")
else:
print("Bravo ! Vous avez trouvé",mon_nombre,"en",nbr_essais,"essai(s)")
nbr_essais += 1
if nbr_essais>nbr_essais_max and ton_nombre != mon_nombre :
print("Désolé, vous avez utilisé vos",nbr_essais_max,"essais en vain.")
print("J'avais choisi le nombre",mon_nombre,".")
Q2:
import random
n = [Link](0,100)
vies = 10
appreciation = "?"
while vies > 0:
var = input("Entrez un nombre")
var = int(var)
if var < n :
appreciation = "trop bas"
print(vies, var, appreciation)
else :
appreciation = "trop haut"
print(vies, var, appreciation)
if var == n:
appreciation = "bravo !"
print(vies, var, appreciation)
break
vies -= 1
Q3:
class joueur:
def __init__(self, vies, pseudo):
[Link] = vies
[Link] = pseudo
def jouer(self):
appreciation = "?"
n = [Link](0,100)
while [Link] > 0:
message = appreciation + " -- " + [Link] + " : " +
str([Link]) + " vies restantes. Nombre choisi : "
var = input(message)
var = int(var)
if var < n :
appreciation = "trop bas"
print(vies, var, appreciation)
else :
appreciation = "trop haut"
print(vies, var, appreciation)
if var == n:
appreciation = "bravo !"
print(vies, var, appreciation)
break
[Link] -= 1
# Initialisation des deux joueurs
j1 = joueur(10, "joueur 1")
j2 = joueur(10, "joueur 2")
# j1 et j2 jouent
[Link]()
[Link]()
# Nombre de vies restantes à chaque joueur
print("Nombre de vies restantes à chaque joueur")
print([Link] + " : " + str([Link]) + " restantes")
print([Link] + " : " + str([Link]) + " restantes")
# Résultat de la partie
print("Résultat de la partie")
if [Link] < [Link]:
print([Link] + "a gagné la partie")
elif [Link] == [Link]:
print("match nul")
else: print([Link] + " a gagné la partie")
? -- joueur 1 : 10 vies restantes. Nombre choisi : 50
3 50 trop haut
trop haut -- joueur 1 : 9 vies restantes. Nombre choisi : 25
3 25 trop haut
trop haut -- joueur 1 : 8 vies restantes. Nombre choisi : 10
3 10 trop haut
trop haut -- joueur 1 : 7 vies restantes. Nombre choisi : 5
3 5 trop bas
trop bas -- joueur 1 : 6 vies restantes. Nombre choisi : 7
3 7 trop haut
3 7 bravo !
? -- joueur 2 : 10 vies restantes. Nombre choisi : 50
3 50 trop haut
trop haut -- joueur 2 : 9 vies restantes. Nombre choisi : 25
3 25 trop bas
trop bas -- joueur 2 : 8 vies restantes. Nombre choisi : 30
3 30 trop haut
3 30 bravo !
Nombre de vies restantes à chaque joueur
joueur 1 : 6 restantes
joueur 2 : 8 restantes
Résultat de la partie
joueur 1a gagné la partie