Aller au contenu principal

Atelier 8 - Imbrication

Compréhension​

Numéro 1​

Sans l'exécuter, que va afficher le code suivant?

for i in range(1, 4):
for j in range(1, 3):
print(i, j)

Numéro 2​

Sans l'exécuter, que va afficher chacune des versions suivantes?

# Version A
for i in range(1, 5):
if i % 2 == 0:
print(i, "est pair")
print("---")

# Version B
for i in range(1, 5):
if i % 2 == 0:
print(i, "est pair")
print("---")

Numéro 3​

Sans l'exécuter, que va afficher le code suivant?

solde: int = 100
retrait: int = 30

if solde >= retrait:
while solde >= retrait:
solde -= retrait
print("Retrait effectué, solde:", solde)
else:
print("Solde insuffisant")

Numéro 4​

Sans l'exécuter, que va afficher le code suivant?

for i in range(1, 4):
for j in range(1, 4):
if i == j:
print(i, j, "diagonale")

Écriture​

Les numéros suivants combinent plusieurs blocs imbriqués, essayez d'identifier quelle combinaison est demandée avant de commencer (if dans for, for dans for, while dans for, etc.).

Numéro 5​

Affichez la table de multiplication de 1 à 5.

1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
...

Numéro 6​

Affichez un damier de 5 par 5, alternant X et O selon la position.

XOXOX
OXOXO
XOXOX
OXOXO
XOXOX

Numéro 7​

Demandez une limite à l'utilisateur. Si la limite est positive, affichez tous les nombres pairs de 2 à cette limite. Sinon, affichez un message d'erreur.

Entrez une limite: 10
2
4
6
8
10
Entrez une limite: -5
La limite doit être positive

Numéro 8​

Demandez un nombre à l'utilisateur et affichez tous ses diviseurs, ainsi que leur nombre total.

Entrez un nombre: 24
1 est un diviseur de 24
2 est un diviseur de 24
3 est un diviseur de 24
4 est un diviseur de 24
6 est un diviseur de 24
8 est un diviseur de 24
12 est un diviseur de 24
24 est un diviseur de 24
Nombre de diviseurs: 8

Numéro 9​

Demandez un nombre plus grand que 1 à l'utilisateur et déterminez s'il est premier (divisible seulement par 1 et lui-même).

Entrez un nombre: 13
13 est premier
Entrez un nombre: 10
10 n'est pas premier

Numéro 10​

Demandez un nombre à l'utilisateur. Pour chaque nombre de 1 jusqu'à ce nombre, calculez et affichez sa factorielle. Vous devez utiliser un for et un while, interdit d'utiliser 2 fois la même sorte de boucle (peu importe laquelle est à l'extérieur ou à l'intérieur).

Entrez un nombre: 5
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120

Numéro 11​

Un personnage a 100 points de vie. À chaque tour, demandez les dégâts subis (un nombre positif) et soustrayez-les à sa vie. Si la vie atteint 0 ou moins, affichez "Game Over" et arrêtez. Si la vie descend à 20 ou moins (mais reste positive), affichez un avertissement de vie faible. Sinon, affichez simplement la vie restante. Répétez tant que le personnage est vivant.

Dégâts subis ce tour: 30
Vie restante: 70
Dégâts subis ce tour: 40
Vie restante: 30
Dégâts subis ce tour: 15
Attention, vie faible! Vie restante: 15
Dégâts subis ce tour: 25
Game Over après 4 tours

Numéro 12 - Défi​

Demandez une limite à l'utilisateur et affichez tous les nombres premiers entre 2 et cette limite.

Entrez une limite: 30
2 est premier
3 est premier
5 est premier
7 est premier
11 est premier
13 est premier
17 est premier
19 est premier
23 est premier
29 est premier

Analyse​

Voici 3 problèmes accompagnés d'une solution déjà écrite (générée par une IA). Certaines contiennent une erreur, d'autres fonctionnent mais pourraient être améliorées. Analysez chaque solution et expliquez ce qui pourrait être corrigé ou amélioré.

Numéro 13​

Faites la somme des nombres pairs de 1 à 10, et comptez combien de nombres pairs ont été trouvés.

total: int = 0
compte: int = 0

for i in range(1, 11):
if i % 2 == 0:
total += i
compte += 1

print("Somme:", total)
print("Nombre de pairs:", compte)

Numéro 14​

Affichez la table de multiplication de 1 à 5.

for i in range(1, 6):
for j in range(1, i):
print(i, "x", j, "=", i * j)

Numéro 15​

Affichez un message si la température est au-dessus de 20 degrés et qu'il fait ensoleillé.

temperature: int = 25
ensoleille: bool = True

if temperature > 20:
if ensoleille:
print("Journée parfaite pour une randonnée")

🔑 Corrigé disponible