INFO TEST 25 nov. 2015 BTS1
PREMIER TRAVAIL
Voici un algorithme écrit en Python 2.7 :
from random import*
def bonjour():
n=int(input("Entrez n "))
if n==0:
print 1
else:
a=1
for i in range(1,n+1):
a=i*a
print a
QUESTIONS :
1. Pourquoi a-t-on mis int devant input? Pour obtenir un entier, même celui qui saisit donne un décimal
2. Pouvait-on mettre raw_input au lieu de input ? Non car on veut saisir une valeur numérique, pas une chaîne.
3. Quel est le but de cet algorithme ? Il donne n!
4. Pour n = 4 qu'obtient-on avec cet algorithme ? On obtient 24 car 1 x 2 x 3 x 4 = 24 = 4!
5. Pourquoi a-t-on mis a = 1 ? Pour initialiser a. C'est le premier facteur de la factorielle
6. Quelles sont les valeurs prises par i ? i prend les valeurs entières de 1 à n
7. Pourquoi mettons if n == 0 ? Pour envisager le cas où n serait nul
8. Si on déplace le dernier print à la verticale de a=i*a
qu'est-ce que cela change ? La construction progressive de n! apparaîtrait . Pas seulement le résultat final.
9. Modifier l'algorithme pour qu'il utilise une boucle while au lieu d'une boucle for.
On considère:
from random import*
def bonjour():
n=int(input("Entrez n "))
if n==0:
print 1
else:
a=1
i=1
while i <=n :
a=i*a
i = i + 1
print a
10. a. Que signifie a=i*a ? a est remplacé par le produit a x i
b. Pourquoi a-t-on mis from random import* au début ? Pour appeler le module random
c. Prolonger le programme pour qu'il dise si n est pair ou impair.
On rajoute:
if n%2==0:
print n , "est pair"
else:
print n, " est impair"
---------------------------------------------------------------------------------
SECOND TRAVAIL
1 . Écrire un programme en Python 2 qui fait deviner le juste prix entier d'un article
( que l'ordinateur décide de façon aléatoire ) qui vaut entre 1 € et 100€.
from random import *
def dev():
a=randint(0,100)
b=int(input("Entrez un entier pour le prix : "))
while b!=a:
if b>a:
print "votre prix est trop grand."
else:
print "votre prix est trop petit."
b=int(input("Entrez un autre prix : "))
print "votre prix est le bon."
2. Un candidat a écrit l'algo suivant et se demande ce qu'il va obtenir:
def essai():
a = 0
b = 1
while b < 10:
print b
a=b
b = a + b
Pouvez-vous l'aider à savoir? Il obtient:
b=1
b=2
b= 4
b = 8
Attention b < 10
Il est hors de question d'obtenir 16
-----------------------------------------------------------------------