Vous trouverez ci dessous le programme permettant de tester la simplification d'une fraction.
from random import *
from fractions import Fraction
###section des fonctions
def simp_frac(n:int,d:int,coef:int):
"""Fonction qui demande à l'utilisateur de simplifier une fraction au maximum"""
nu=coef*n #Calcul le numérateur de la fonction à simplifier
de=coef*d
re=nu/de
if re!=1: #On ne pose la question que si la réponse n'est pas 1
fr=Fraction(n,d) #fr contient la fraction simplifiée
num=fr.numerator
den=fr.denominator
sol=input("simplifie la fraction suivante au maximum "+str(nu)+"/"+str(de)+" ")
if den==1: #Si le dénominateur est 1, on ne saisi que le numérateur
if int(sol)==num: #Penser à convertir sol en entier pour le comparer à num
print("Bravo")
else:
print("Tu es nul.")
else:
if sol==str(num)+"/"+str(den): #On compare des chaines de caractères.
print("bravo")
else:
print("Tu es nul.")
else:
print("pas intéressant")
###section main
n=randint(2,6) #Génère un nombre entre 2 et 6 au sens large
d=randint(2,9)
coef=randint(2,5)
simp_frac(n,d,coef) #Appelle la fonction avec les valeurs calculées au dessus
simp_frac(6,3,4) #Appelle la fonction dans un cas particulier
Notre objectif est de poser 10 questions en introduisant un compteur nb_exo.
Il va falloir l'incrémenter.
Notre programme devra donc se situer dans une boucle qui s'achèvera au bout de 10 exercices.
Initialisez un nb_exo,
passer le en paramètre à votre fonction,
incrémentez le si besoin,
renvoyez le (attention, il faut le renvoyer dans le if et dans le else).
Faites tourner votre programme dans une boucle while jusqu'à ce que l'utilisateur ait fait 10 exercices.
Syntaxe :
while nb_exo<10: #Vous remarquerez les : qui indique qu'il va falloir indenter.
from random import *
from fractions import Fraction
###section des fonctions
def simp_frac(n:int,d:int,coef:int,nb_exo:int):
"""Fonction qui demande à l'utilisateur de simplifier une fraction au maximum"""
nu=coef*n #Calcul le numérateur de la fonction à simplifier
de=coef*d
re=nu/de
if re!=1: #On ne pose la question que si la réponse n'est pas 1
fr=Fraction(n,d) #fr contient la fraction simplifiée
num=fr.numerator
den=fr.denominator
sol=input("simplifie la fraction suivante au maximum "+str(nu)+"/"+str(de)+" ")
if den==1: #Si le dénominateur est 1, on ne saisi que le numérateur
if int(sol)==num: #Penser à convertir sol en entier pour le comparer à num
print("Bravo")
else:
print("Tu es nul.")
else:
if sol==str(num)+"/"+str(den): #On compare des chaines de caractères.
print("bravo")
else:
print("Tu es nul.")
nb_exo=nb_exo+1
return nb_exo
else:
return nb_exo
###section main
nb_exo=0
while nb_exo<10:
n=randint(2,6) #Génère un nombre entre 2 et 6 au sens large
d=randint(2,9)
coef=randint(2,5)
nb_exo=simp_frac(n,d,coef,nb_exo) #Appelle la fonction et rentre le résultat dans nb_exo
Nous souhaitons désormais mettre une note sur 10 à notre utilisateur.
Vous allez donc :
initialiser une variable note à 0,
la passer dans la fonction en paramètre,
la retourner en même temps que nb_exo
syntaxe :
return nb_exo,note
la récupérer avec nb_exo
syntaxe :
nb_exo,note=fonction
Afficher la note de l'utilisateur.
from random import *
from fractions import Fraction
###section des fonctions
def simp_frac(n:int,d:int,coef:int,nb_exo:int,note:int):
"""Fonction qui demande à l'utilisateur de simplifier une fraction au maximum"""
nu=coef*n #Calcul le numérateur de la fonction à simplifier
de=coef*d
re=nu/de
if re!=1: #On ne pose la question que si la réponse n'est pas 1
fr=Fraction(n,d) #fr contient la fraction simplifiée
num=fr.numerator
den=fr.denominator
sol=input("simplifie la fraction suivante au maximum "+str(nu)+"/"+str(de)+" ")
if den==1: #Si le dénominateur est 1, on ne saisi que le numérateur
if int(sol)==num: #Penser à convertir sol en entier pour le comparer à num
print("Bravo")
note=note+1
else:
print("Tu es nul.")
else:
if sol==str(num)+"/"+str(den): #On compare des chaines de caractères.
print("bravo")
note=note+1
else:
print("Tu es nul.")
nb_exo=nb_exo+1
return nb_exo,note #Retourne un tuple de deux valeurs
else:
return nb_exo,note #Retourne un tuple de deux valeurs
###section main
note=0
nb_exo=0
while nb_exo<10:
n=randint(2,6) #Génère un nombre entre 2 et 6 au sens large
d=randint(2,9)
coef=randint(2,5)
nb_exo,note=simp_frac(n,d,coef,nb_exo,note) #Appelle la fonction qui renvoie un tuple de deux valeurs
print("Tu as une note de "+str(note)+"/10")