Compréhension de code#

Notion de variable#

Exercice 1#

Sans l'exécuter, qu'affiche ce programme si:

  1. nombre_km = 55?

  2. nombre_km = 45?

  3. 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)

Exercice 2#

Sans exécuter le programme, répondez aux questions.

  1. Quelle est la valeur stockée dans la variable n à la fin du programme?

  2. 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)

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)

Exercice 4 (boucle while)#

Sans l'exécuter, qu'affiche ce programme:

  1. si n = 0?

  2. si n = 5?

  3. 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

Exercice 5 (boucle while)#

Sans l'exécuter, qu'affiche ce programme si:

  1. si n = 0?

  2. si n = 5?

  3. 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)

Exercice 6 (boucle while)#

Sans l'exécuter, qu'affiche ce programme si:

  1. si n = 0?

  2. si n = 5?

  3. si n = 9?

Ensuite, exécutez le programme pour vérifier votre réponse.

1n = ...
2while n <= 5:
3  n = n + 1
4print(n)

Exercice 7 (boucle while)#

Sans l'exécuter, qu'affiche ce programme si:

  1. n = 0?

  2. n = 9?

Ensuite, exécutez le programme pour vérifier votre réponse.

1n = ...
2while n <= 5:
3  print(n)
4  n + 1

Ordre d'exécution#

Exercice 8#

Sans exécuter le programme,

  1. Indiquez l'ordre dans lequel les instructions seront exécutées (numéros de lignes).

  2. 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!")

Exercice 9#

Sans exécuter le programme,

  1. Indiquez l'ordre dans lequel les instructions seront exécutées. (numéros de lignes).

  2. Notez ce qui sera affiché sur la console.

Ensuite, exécutez le programme pour vérifier votre réponse.

  1. Même question si on remplace la ligne 1 par nombre = -8

  2. Mê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.")

Exercice 10#

Sans exécuter le programme,

  1. Indiquez l'ordre dans lequel les instructions seront exécutées. (numéros de lignes).

  2. 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)

Exercice 11 (boucle while)#

Sans exécuter le programme,

  1. Indiquez l'ordre dans lequel les instructions seront exécutées. (numéros de lignes).

  2. 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!")

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

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)

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

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