-
-
Save PatWg/4f4f894b3054281221ace11020707f17 to your computer and use it in GitHub Desktop.
Correction de la série 3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from typing import List | |
from random import randint | |
'''Exercice 1: Boucle while et break''' | |
i: int = 0 | |
while i < 10: | |
print(i) | |
if i == 5: | |
break | |
i += 1 | |
""" | |
a) Ce programme affichera 0, 1, 2, 3, 4, 5. | |
b) Le mot-clé break permet de "sortir d'une boucle" même si l'exécution de celle-ci n'est a priori pas terminée. | |
""" | |
'''=====FIN Exercice 1=====''' | |
'''Exercice 2: Code tracing''' | |
liste: List[int] = [-15, -12, -3, -1, 5, 17, 23] | |
n: int = len(liste) | |
i: int = 0 | |
j: int = n - 1 | |
found_pair: bool = False | |
while i < j: | |
if liste[i] + liste[j] == 0: | |
found_pair = True | |
break | |
elif liste[i] + liste[j] < 0: | |
i += 1 | |
else: | |
j -= 1 | |
if found_pair: | |
print("Paire trouvée !") | |
else: | |
print("Pas de paire trouvée...") | |
''' | |
| | i | j | liste[i] | liste[j] | found_pair | | |
|--------+---+---+----------+----------+------------| | |
| Step 0 | 0 | 6 | -15 | 23 | False | | |
| Step 1 | 0 | 5 | -15 | 17 | False | | |
| Step 2 | 0 | 4 | -15 | 5 | False | | |
| Step 3 | 1 | 4 | -12 | 5 | False | | |
| Step 4 | 2 | 4 | -3 | 5 | False | | |
| Step 5 | 2 | 3 | -3 | -1 | False | | |
''' | |
'''=====FIN Exercice 2=====''' | |
'''Exercice 3: Boucle While - Nombre mystère''' | |
random_number: int = randint(0, 10000) | |
attempts: int = 0 | |
# On initialise la variable par une valeur qui ne peut pas être choisie | |
# aléatoirement afin de rentrer dans la boucle la première fois | |
guess: int = -1 | |
while guess != random_number: | |
guess = int(input(f"Nombre en 0 et 10000.")) | |
if guess < random_number: | |
print("C'est plus !") | |
elif guess > random_number: | |
print("C'est moins !") | |
else: | |
print("Trouvé !") | |
break | |
attempts += 1 | |
print(f"Vous avez trouvé en {attempts} essais !") | |
print(f"Le nombre mystère était {random_number}.") | |
''' | |
Explications de l'algorithme: | |
random_number <- nombre aléatoire compris entre 0 et 10000 | |
compteur_essai <- 0 | |
guess <- -1 | |
TANT QUE guess est différent de random_number FAIRE: | |
guess <- saisie de l'utilisateur | |
SI guess < random_number ALORS: | |
Afficher: C'est plus! | |
SINON SI guess > random_number ALORS: | |
Afficher: C'est moins! | |
SINON: | |
Afficher: Trouvé ! | |
QUITTER | |
compteur_essai <- compteur_essai + 1 | |
''' | |
'''=====FIN Exercice 3=====''' | |
'''Exercice 4: Interpréteur''' | |
should_continue: bool = True | |
while should_continue: | |
print("Je vais évaluer un calcul pour vous.") | |
number1_string: str = input("Tapez le premier nombre:") | |
number1: int = int(number1_string) | |
number2_string: str = input("Tapez le second nombre:") | |
number2: int = int(number2_string) | |
operation: str = input("Tapez l'opération: ") | |
if operation == "+" or operation == "addition": | |
result = number1 + number2 | |
print(f"{number1} + {number2} = {result}") | |
elif operation == "-" or operation == "soustraction": | |
result = number1 - number2 | |
print(f"{number1} - {number2} = {result}") | |
elif operation == "*" or operation == "multiplication": | |
result = number1 * number2 | |
print(f"{number1} * {number2} = {result}") | |
elif operation == "/" or operation == "division": | |
if number2 == 0: | |
print(f"Division par zéro, calcul impossible.") | |
else: | |
result_as_float: float = number1 / number2 | |
print(f"{number1} / {number2} = {result_as_float}") | |
else: | |
print(f"Désolé, je ne connais pas l'opération '{operation}'.") | |
maybe_quit: str = input("Tapez 'q' pour quitter, ou autre chose pour recommancer: ") | |
if maybe_quit == 'q': | |
print("Bye!") | |
should_continue = False | |
'''=====FIN Exercice 4=====''' | |
'''Exercice 5: Définition et appel de fonction''' | |
def is_leap_year(year: int) -> bool: | |
return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) | |
day: int = int(input("Jour: ")) | |
month: int = int(input("Mois: ")) | |
year: int = int(input("Année: ")) | |
nb_days_in_month: int = 0 | |
new_month: bool = True | |
for i in range(0, 16, 1): | |
print(f"Le cours numéro {i+1} aura lieu le {day}.{month}.{year}.") | |
if new_month: | |
if month in (1, 3, 5, 7, 8, 10, 12): | |
nb_days_in_month = 31 | |
elif month in (4, 6, 9, 11): | |
nb_days_in_month = 30 | |
else: | |
if is_leap_year(year): | |
nb_days_in_month = 29 | |
else: | |
nb_days_in_month = 28 | |
new_month = False | |
if day + 7 > nb_days_in_month: | |
if month < 12: | |
month += 1 | |
else: | |
month = 1 | |
new_month = True | |
day = (day + 7) - nb_days_in_month | |
else: | |
day += 7 | |
'''=====FIN Exercice 5=====''' | |
'''Exercice 6: Fonctions, default argument values, named parameters ''' | |
def favorite_course(course_name: str = "ICC") -> None: | |
print(f"Mon cours préféré est {course_name}") | |
def liked_and_disliked(liked: str = "ICC", disliked: str = "Maths") -> None: | |
print(f"Mon cours préféré est {liked}.") | |
print(f"Mon cours le moins préféré est {disliked}.") | |
favorite_course() | |
favorite_course("Physique") | |
liked_and_disliked() | |
liked_and_disliked(disliked="ICC", liked="Maths") | |
''' | |
a) Ce programme affiche: | |
Mon cours préféré est ICC. | |
Mon cours préféré est Physique. | |
Mon cours préféré est ICC. | |
Mon cours le moins préféré est Maths. | |
Mon cours préféré est Maths. | |
Mon cours le moins préféré est ICC. | |
b) La définition d'une fonction peut utiliser les "defaults arguments values". | |
En donnant une valeur par défaut, il est possible d'appeler une fonction sans | |
donner de valeur à l'argument concerné; la valeur par défaut sera utilisée. | |
c) L'appel d'une fonction peut utiliser les "keyword arguments". En utilisant | |
ces keyword arguments, il est possible de passer outre l'ordre dans lequel | |
les paramètres apparaissent dans la définition de la fonction. | |
''' | |
'''=====FIN Exercice 6=====''' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment