Compréhension de code#
Notion de variable#
Exercice 1#
Sans l'exécuter, qu'affiche ce programme si:
nombre_km = 55?nombre_km = 45?nombre_km = 50?
Ensuite, exécutez le programme pour vérifier votre réponse.
1nombre_km = ...
2if nombre_km <= 50:
3 prix_location = 100 + nombre_km * 0.5
4else:
5 prix_location = 100 + nombre_km * 0.4
6print(nombre_km, prix_location)
Solution
55 122 (passage dans le else)
45 122.5 (passage dans le if)
50 125 (passage dans le if)
Exercice 2#
Sans exécuter le programme, répondez aux questions.
Quelle est la valeur stockée dans la variable
nà la fin du programme?Qu'est-ce que le programme affiche?
Ensuite, exécutez le programme pour vérifier vos réponses.
1n = 4
2for _ in range(3):
3 n = n + 5
4print(n+1)
Solution
n = 19
20
Exercice 3#
Sans l'exécuter, qu'est-ce que le programme suivant affiche.
Ensuite, exécutez le programme pour vérifier votre réponse.
1n = 6
2n *= 3
3for _ in range(4):
4 n = n + 2
5 n = n / 2
6n = n - 5
7print(n)
Solution
-2.0
Exercice 4 (boucle while)#
Sans l'exécuter, qu'affiche ce programme:
si
n = 0?si
n = 5?si
n = 9?
Ensuite, exécutez le programme avec ces différentes valeurs de n pour vérifier vos réponses.
1n = ...
2while n <= 5:
3 print(n)
4 n = n + 1
Solution
0
1
2
3
4
55x§
/
Exercice 5 (boucle while)#
Sans l'exécuter, qu'affiche ce programme si:
si
n = 0?si
n = 5?si
n = 9?
Ensuite, exécutez le programme avec ces différentes valeurs de n pour vérifier vos réponses.
1n = ...
2while n <= 5:
3 n = n + 1
4 print(n)
Solution
1
2
3
4
5
66
/
Exercice 6 (boucle while)#
Sans l'exécuter, qu'affiche ce programme si:
si
n = 0?si
n = 5?si
n = 9?
Ensuite, exécutez le programme pour vérifier votre réponse.
1n = ...
2while n <= 5:
3 n = n + 1
4print(n)
Solution
6
6
9
Exercice 7 (boucle while)#
Sans l'exécuter, qu'affiche ce programme si:
n = 0?n = 9?
Ensuite, exécutez le programme pour vérifier votre réponse.
1n = ...
2while n <= 5:
3 print(n)
4 n + 1
Solution
une infinité de 0
\
Ordre d'exécution#
Exercice 8#
Sans exécuter le programme,
Indiquez l'ordre dans lequel les instructions seront exécutées (numéros de lignes).
Notez ce qui sera affiché sur la console.
Ensuite, exécutez le programme pour vérifier votre réponse.
1nom = "Bob"
2age = 16
3print("Bonjour", nom, "vous avez", age + 1, "ans!")
Solution
1 - 2 - 3
Bonjour Bob vous avez 17 ans!
Exercice 9#
Sans exécuter le programme,
Indiquez l'ordre dans lequel les instructions seront exécutées. (numéros de lignes).
Notez ce qui sera affiché sur la console.
Ensuite, exécutez le programme pour vérifier votre réponse.
Même question si on remplace la ligne 1 par
nombre = -8Même question si on remplace la ligne 1 par
nombre = 0
1nombre = 25
2if nombre < 0:
3 print("Ce nombre est nul.")
4elif nombre == 0:
5 print("Ce nombre est positif.")
6else:
7 print("Ce nombre est négatif.")
Solution
1 - 2 - 4 - 6 - 7
Ce nombre est négatif.
1 - 2 - 3 / Ce nombre est nul.
1 - 2 - 4 - 5 / Ce nombre est positif.
Exercice 10#
Sans exécuter le programme,
Indiquez l'ordre dans lequel les instructions seront exécutées. (numéros de lignes).
Notez ce qui sera affiché sur la console.
Ensuite, exécutez le programme pour vérifier votre réponse.
1n = 0
2s = 3
3for _ in range(2):
4 n += 2
5 s + 1
6print("n =", n, "et s =", s)
Solution
1 - 2 - 3 - 4 - 5 - 3 - 4 - 5 - 6
n = 4 et s = 3
Exercice 11 (boucle while)#
Sans exécuter le programme,
Indiquez l'ordre dans lequel les instructions seront exécutées. (numéros de lignes).
Notez ce qui sera affiché sur la console.
Ensuite, exécutez le programme pour vérifier votre réponse.
1n = 6
2while n <= 10:
3 print(n)
4 n += 2
5print("J'ai fini!")
Solution
1 - 2 - 3 - 4 - 2 - 3 - 4 - 2 - 3 - 4 - 5
6
8
10
J'ai fini!
Exercice 12 (boucle while)#
Nous aimerions programmer l'algorithme de Syracuse:
Choisir un nombre entier.
Si le nombre est pair, le diviser par 2.
S'il est impair, le multiplier par 3 et lui ajouter 1.
Afficher le nombre.
Répéter ces opérations jusqu'à obtenir 1.
Remarque: Cet algorithme se termine toujours par le suite 4, 2, 1.
Voici la liste des instructions, remettez-les dans l'ordre et indentez correctement le code.
1nombre = nombre / 2
2while nombre != 1:
3print(nombre)
4else:
5print("L'algorithme de Syracuse est terminé et il se termine bien par 4, 2 et 1!")
6if nombre % 2 == 0:
7nombre = int(input("Choisissez un nombre entier: "))
8nombre = 3 * nombre + 1
Solution
nombre = int(input("Choisissez un nombre entier: "))
while nombre != 1:
if nombre % 2 == 0:
nombre = nombre / 2
else:
nombre = 3 * nombre + 1
print(nombre)
print("L'algorithme de Syracuse est terminé et il se termine bien par 4, 2 et 1!")
Boucle for et boucle while#
Exercice 13 (boucle while)#
Transformez le code suivant afin d'utiliser une boucle while à la place de la
boucle for.
1for i in range(20):
2 print(i ** 2)
Solution
n = 0
while n < 20:
print(n ** 2)
n += 1
Exercice 14 (boucle while)#
Transformez le code suivant afin d'utiliser une boucle for à la place de la
boucle while.
1n = 4
2while n <= 10:
3 print(2 * n)
4 n += 1
Solution
for i in range(4, 11):
print(2 * i)
Exercice 15 : Cryptarithme 1#
Un cryptarithme est un casse-tête qui se présente comme une équation mathématique où les lettres représentent des chiffres à trouver. Il y a 3 règles de bases à respecter :
Deux lettres différentes remplacent toujours deux chiffres différents,
Deux chiffres différents sont toujours remplacés par deux lettres différentes
L'écriture d'un nombre ne commence jamais par zéro.
Le cryptarithme suivant :
| R | O | U | E | |
|---|---|---|---|---|
| R | O | U | E | |
| = | = | = | = | = |
| V | E | L | O |
possède 3 solutions :
2673 + 2673 = 5346 (R=2, O=6, U=7, E=3, V=5 et L=4)
2693 + 2693 = 5386 (R=2, O=6, U=9, E=3, V=5 et L=8)
4653 + 4653 = 9306 (R=4, O=6, U=5, E=3, V=9 et L=0)
Le programme ci-dessous permet de résoudre le cryptarithme ROUE + ROUE = VELO par force brute. Mais il ne respecte pas exactement les règles de base et retourne des solutions qui ne sont pas valides. Corrigez ce programme afin qu'il n'affiche que les solutions valides.
1# Résolution du Cryptarithme : ROUE + ROUE = VELO
2# 3 solutions
3nb_solution = 0
4for R in range(10) :
5 for O in range(10) :
6 for U in range(10) :
7 for E in range(10) :
8 for V in range(1,10) :
9 for L in range(10) :
10 ok1 = R != O and R != U and R != E and R != V and R != L
11 ok2 = O != U and O != E and O != V and O != L
12 ok3 = U != E and U != V and U != L
13 ok4 = E != V and E != L
14 ok5 = V != L
15 if ok1 and ok2 and ok3 and ok4 and ok5 :
16 ROUE = R * 1000 + O * 100 + U * 10 + E
17 VELO = V * 1000 + E * 100 + L * 10 + O
18 if ROUE + ROUE == VELO :
19 print("ROUE + ROUE = VELO")
20 print(ROUE,"+",ROUE,"=",VELO, "\n")
21 nb_solution += 1
22
23print("Il y a ", nb_solution, "solutions")
Exercice 16 : Cryptarithme 2#
Analysez le fonctionnement du programme de l'exercice précédent, puis adaptez-le ci-dessous afin de résoudre chacun des cryptarithmes suivants (en respectant toujours toutes les règles de base des cryptarithmes):
NON + NON = OUI ( 2 solutions)
UN+UN+NEUF=ONZE ( 1 solution)
UN + TROIS = DEUX + DEUX ( 10 solutions)
1# Écrivez le programme ici