This repository has been archived on 2019-08-09. You can view files and clone it, but cannot push or open issues or pull requests.
s1-tp/S1/TP 4/choisis.py

102 lines
4.4 KiB
Python
Raw Normal View History

2014-10-10 00:02:58 +02:00
# PREUD'HOMME BONTOUX Geoffrey - PeiP 12 - 2014/2015
# TP n°4 donné le 3/10/2014 - Choisis un nombre
# http://www.fil.univ-lille1.fr/~wegrzyno/portail/Info/Doc/HTML/tp_iteration_conditionnelle.html
from random import randint
# [Q1] Que fait la fonction randint ?
# Utilisée sous la forme randint(a, b), a et b étant des entiers, elle retourne
# un entier pseudo-aléatoire entre a et b (différent à chaque éxecution)
# [Tests]
# >>> randint(0, 100)
# 39
# >>> randint(-500, 500)
# -161
# >>> randint(0, 1)
# 1
# [Q2] Créez une variable nommée mystere contenant un nombre entier
# tiré (pseudo-)aléatoirement entre 1 et 100.
mystere = randint(0, 100)
# [Q3] Que fait la fonction input ?
# Utilisée sous la forme input(a), elle affiche le texte a et autorise la
# saisie dans le terminal tout en bloquant l'execution du script. Après l'appui
# de la touche Entrée, la fonction se débloque et renvoie le texte de la saisie
# Quel est le type des valeurs renvoyées par cette fonction ?
# Le type renvoyé par input est une chaîne de caractrèes (<class 'str'>)
# [Q4] Écrivez une ou plusieurs instructions qui demandent à
# lutilisateur dentrer un nombre.
# print("[Q4]")
# reponse1 = input("En quelle année a été assassiné Louis XVI ? ")
# reponse2 = input("Quelles sont les 10 premières décimales de π ? ")
# reponse3 = input("J'ai dix billes que je partage équitablement entre trois \
# de mes camarades, combien me reste-t-il de bille(s) ? ")
# [Q5-7] (le code est majoritairement issu de la Q5, ce qui a été
# ajouté après est identifié comme telen commentaire)
def jeu():
"""
Lance un jeu de + ou -.
CU : nombre minimum inférieur au nombre maximum,
nombre d'essais supérieur à 0
"""
print("Jeu du + ou -")
continuer_jeu = True # Cette variable permet de savoir si il faut continuer
# à demander un nombre ou non.
# On demande au joueur les valeurs avec lesquels il veut jouer
minimum = int(input("Entrez le nombre minimum : ")) # Q7
maximum = int(input("Entrez le nombre maximum : ")) # Q7
assert(minimum < maximum), "Le nombre minimum doit être inférieur au \
nombre maximum" # Q7
maxEssais = int(input("Entrez le nombre d'essais : ")) # Q7
assert(maxEssais > 0), "Le nombre d'essais doit être supérieur à 0" # Q7
# minimum = 1 # Pré-Q7
# maximum = 100 # Pré-Q7
# maxEssais = 1 # Pré-Q7
essais = 0 # Comptabilise les essais réalisés
# J'utilise un autre nom de variable pour être conforme à la règle PEP 3104
mystere2 = randint(minimum, maximum) # On pioche le nombre mystère
# print("Nombre à trouver :", mystere2) # Décommenter pour tricher
while continuer_jeu:
proposition = int(input("Entrez un nombre entre "+str(minimum)+" et "+\
str(maximum)+" ("+str(maxEssais - essais)+" essais restants): "))
if proposition >= minimum and proposition <= maximum: # Si le nombre est
# en dehors de l'intervalle, on ne fait rien (pas même compter un essai)
# et on revient à l'affichage du essage
if proposition == mystere2:
print("C'est GAGNÉ")
continuer_jeu = False # On coupe la boucle
else: # Ce décalage permet, en cas de victoire, de ne pas afficher
# comme quoi le nombre d'essai est dépassé ni de compter un essai
# supplémentaire
essais += 1 # On comptabilise l'essai
if proposition < mystere2: # Si le nombre est inférieur
print("C'est PLUS")
elif proposition > mystere2: # Si le nombre est supérieur
print("C'est MOINS")
if essais >= maxEssais: # Q6
print("Vous avez dépassé le nombre d'essais autorisés") # Q6
continuer_jeu = False # Q6
score = int((7**2 * (maximum - minimum))/(maxEssais*99)-essais) # Q7
# J'utilise cette méthode de calcul de score car :
# - Elle donne les mêmes résultat que le jeu décrit dans le sujet pour un
# intervalle de [1,100] et un nombre d'essai de 7
# - Elle est est proportionelle à l'intervalle entre les bornes du choix
# - Elle est est inversement proportionelle au nombre d'essais donné
# - Elle me parait relativement équitable
# - Elle est tronquée pour la lisibilité
# score = 7 - essais # Pré-Q7
print("Vous avez marqué", score, "points.")