Fonctions - Exercices supplémentaires#
Exercice 1#
Écrivez une fonction qui convertit des bits en octets.
Écrivez une fonction qui convertit des octets en bits.
Convertissez 3664000 bits en octets.
Convertissez 512 octets en bits.
Astuce
Un octet contient 8 bits.
# Écrire le programme ici
Solution
1# Convertit des bits en octets
2def conversion_bits_octets(a):
3 return a / 8
4
5# Convertit des bits en octets
6def conversion_octets_bits(a):
7 return a * 8
8
9nb_octets = conversion_bits_octets(3664000)
10print("La conversion de 3664000 bits en octets donne", nb_octets)
11
12nb_bits = conversion_octets_bits(512)
13print("La conversion de 512 octets en bits donne", nb_bits)
Exercice 2#
Pour les prochaines vacances, vous décidez de partir en vacances au Japon. Vous avez de l'argent sur un compte épargne et de l'argent que vous avez gagné en travaillant cet été.
Écrivez un programme qui permet de convertir en YEN les montants qui sont sur un
compte épargne et sur un compte courant afin de déterminer le montant que vous
aurez à disposition.
Le taux est de 1 CHF = 174 YEN.
def convertit_chf_en_yen(montant_chf):
# à compléter
compte_courant_chf = 1540
compte_epargne_chf = 2467
# Complétez le programme
budget_yen =
print("Tu auras", budget_yen, "YEN.")
Solution
1# Compléter la fonction
2def convertit_chf_en_yen(montant_chf):
3 taux_conversion = 174
4 return montant_chf * taux_conversion
5
6
7compte_courant_chf = 1540
8compte_epargne_chf = 2467
9
10budget_yen = convertit_chf_en_yen(1540) + convertit_chf_en_yen(2467)
11print("Tu auras", budget_yen, "YEN.")
Exercice 3#
Écrivez une fonction qui prend en paramètre un code de réduction et retourne le pourcentage de rabais donné par ce code de réduction. Le code déjà donné utilise cette fonction pour calculer le prix final d'un article après y avoir appliqué la réduction. Les réductions sont les suivantes :
20% (0.2) pour le code SUN
35% (0.35) pour le code STX
50% (0.5) pour le code MAX
0% (0) pour les autres codes
def calcule_reduction(code):
# à compléter
# ne pas modifier le code ci-dessous
prix = float(input("Quel est le prix de l'article? "))
code_reduc = input("Quel est le code de réduction? ")
reduction = calcule_reduction(code_reduc)
prix_final = prix * (1 - reduction)
print("Le prix final est de", prix_final, "CHF.")
Solution
1def calcule_reduction(code):
2 if code == "SUN":
3 return 0.2
4 elif code == "STX":
5 return 0.35
6 elif code == "MAX":
7 return 0.5
8 else:
9 return 0
10
11prix = float(input("Quel est le prix de l'article? "))
12code_reduc = input("Quel est le code de réduction? ")
13
14reduction = calcule_reduction(code_reduc)
15prix_final = prix * (1 - reduction)
16print("Le prix final est de", prix_final, "CHF.")
Exercice 4#
Pour calculer le prix de l'amende à payer en cas de dépassement de vitesse, consultez le document suivant: Liste sanctions
Écrivez une fonction qui retourne le prix de l'amende à payer en fonction de la vitesse autorisée et la vitesse mesurée par le radar. Traitez seulement le cas où le dépassement de vitesse a lieu sur l'autoroute et n'excède pas 25 km/h.
def amende(vit_autorisee, vit_mesuree):
# à compléter
# ne pas modifier le code ci-dessous
print(amende(120,140))
print(amende(120,145))
print(amende(120,120))
Solution
1def amende(vit_autorisee, vit_mesuree):
2 depassement = vit_mesuree - vit_autorisee
3 if depassement <= 0:
4 return 0
5 elif depassement <= 5:
6 return 20
7 elif depassement <= 10:
8 return 60
9 elif depassement <= 15:
10 return 120
11 elif depassement <= 20:
12 return 180
13 elif depassement <= 25:
14 return 260
15 else:
16 print("La sanction sera plus qu'une amende.")
17 return -100
18
19print(amende(120,140))
20print(amende(120,145))
21print(amende(120,120))
22print(amende(120, 180))
Astuce
Pour faciliter la compréhension de code, il est courant de créer des fonctions
qui testent une certaine condition. Par exemple, la fonction est_pair(n)
retourne True si la nombre est pair et False sinon.
1def est_pair(nombre):
2 if nombre % 2 == 0:
3 return True
4 else:
5 return False
6
7print(est_pair(107))
Exercice 5#
Écrivez un programme qui demande à l'utilisateur un nombre entier strictement positif et affiche tous ses diviseurs. Ce programme doit:
contenir un procédé qui vérifie que la réponse de l'utilisateur est bien un nombre strictement positif. Si ce n'est pas le cas, lui demander un autre nombre.
contenir une fonction
est_diviseur()qui teste si un nombre est diviseur d'un autre nombre.contenir une fonction
est_premier()qui teste si un nombre est premier.
def est_diviseur(nombre, diviseur):
# à compléter
def est_premier(nb_diviseurs):
# à compléter
n = int(input("Choisir un nombre entier strictement positif:"))
# Complétez le programme
Solution
1def est_diviseur(nombre, diviseur):
2 if nombre % diviseur == 0:
3 return True
4 else:
5 return False
6
7def est_premier(nb_diviseurs):
8 if nb_diviseurs == 2:
9 return True
10 else:
11 return False
12
13n = int(input("Choisir un nombre entier strictement positif:"))
14while n <= 0:
15 n = int(input("Le nombre doit être strictement positif!"
16 "Choisir un nombre entier strictement positif:"))
17
18nb_diviseurs = 0
19
20for i in range(1, n + 1):
21 if est_diviseur(n, i):
22 print(i, "est diviseur de", n)
23 nb_diviseurs += 1
24
25if est_premier(nb_diviseurs):
26 print(n, "est un nombre premier.")
27else:
28 print(n, "n'est pas un nombre premier.")
Important
L'ordre des paramètres lors de l'appel de la fonction doit être le même que lors de la définition de la fonction.
Exercice 6#
La suite de Syracuse est une suite d'entiers naturels définie de la manière suivante:
si le nombre est pair, diviser par 2,
sinon multiplier par 3 et ajouter 1.
Cette suite à la particularité de toujours se terminer par 4, 2, 1.
Écrivez un programme qui demande à l'utilisateur de choisir un nombre et affiche la suite de Syracus (jusqu'à ce que la suite arrive à 1).
def syracuse(n):
# à compléter
n = int(input("Choisir un nombre entier plus grand que 0."))
# Complétez le programme
Solution
1def syracuse(n):
2 if n % 2 == 0:
3 return n // 2
4 else:
5 return 3 * n + 1
6
7n = int(input("Choisir un nombre entier plus grand que 0."))
8
9while n != 1:
10 n = syracuse(n)
11 print(n)