Skip to content

Instantly share code, notes, and snippets.

@PatWg
Last active October 6, 2023 11:42
Show Gist options
  • Save PatWg/4f4f894b3054281221ace11020707f17 to your computer and use it in GitHub Desktop.
Save PatWg/4f4f894b3054281221ace11020707f17 to your computer and use it in GitHub Desktop.
Correction de la série 3
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