Skip to content

Instantly share code, notes, and snippets.

@PatWg
Created September 27, 2023 12:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PatWg/0ad9b01966643dedc9227dbde5fe1a81 to your computer and use it in GitHub Desktop.
Save PatWg/0ad9b01966643dedc9227dbde5fe1a81 to your computer and use it in GitHub Desktop.
Correction Série 1
'''Exercice 1
L'idée de cet exercice est de pouvoir retravailler les types de variables ainsi
que les opérations qui peuvent être effectuées en fonction de ces types. En
particulier, il s'agit de mettre en évidence le fait que les "annotations de
type" ne sont ajoutées qu'à titre indicatif. Cela n'influence en aucun cas le
type de la variable annotée. Le seul élément déterminant dans la définition du
type d'une variable est la valeur qui lui est assignée, c'est-à-dire la valeur
qui se trouve à droite du symbole d'affectation.
Bien que ces annotations soient optionnelles, il est utile de se poser
régulièrement la question du type de variables manipulées.
'''
'''Exercice 2 '''
my_name: str = "Patrick"
# On utilise la fonction len() pour déterminer la longueur d'une chaîne de caractères.
length: int = len(my_name)
print(my_name)
print("Nombre de lettres dans le prénom:", length)
'''Exercice 3'''
# a) Tout en majuscule
print(my_name.upper())
# b) Uniquement première lettre en majuscule
print(my_name.capitalize())
# ou
print(my_name[0].upper() + my_name[1:].lower())
# c) Tiret au milieu
# L'exercice 1 a montré que l'opérateur de division retourne un float
# Pour déterminer l'indice du milieu de la chaîne de caractères, on peut
# utiliser l'opérateur qui calcule le quotient de la division euclidienne.
# Ensuite, on voit que le slicing peut être effectué sans fournir de valeurs
# pour la borne inférieure ou pour la borne supérieure. Cela permet de récupérer
# tous les éléments depuis le début jusqu'à `mid`, ou depuis `mid` jusqu'à la
# fin
mid: int = length // 2
print(my_name[:mid] + '-' + my_name[mid:])
'''Exercice 4'''
# Code initial
distance = 10
speed = 3
duration = distance // speed
print("Distance à parcourir: " + str(distance) + " km")
print(f"Vitesse: {speed} km/h")
print(f"Durée du trajet: {duration} h")
# a) Cette question permet de mettre en avant l'utilité des f-strings dans la
# construction de chaînes de caractères utilisant des valeurs contenues dans des
# variables.
# b) On note que le calcul effectué n'est pas précis du fait de l'opérateur "//"
# c) Il faudra montrer comment ajouter un breakpoint et comment lancer le mode
# debug
# d) Il faut ici pouvoir récupérer la partie décimale de la division, puis la
# convertir en minutes.
duration_minutes = int(((distance / speed) - duration) * 60)
print(f"Non... vraie durée du trajet: {duration} h {duration_minutes} min")
# ou:
# On utilise une autre fonction donnée par Python qui s'appelle divmod() et qui
# retourne justement la partie entière et la partie décimale de la division en
# un seul appel de fonction.
duration_hours, rest = divmod(distance, speed)
duration_minutes = int(rest / speed * 60)
print(f"Non... vraie durée du trajet: {duration_hours} h {duration_minutes} min")
'''Exercice 5'''
day: int = 22
month: str = "09"
year: int = 2023
# a) Une variable de type int ne peut pas contenir de zéro avant un chiffre.
# b)
print(f"Aujourd'hui, nous sommes le {day}.{month}.{year}")
# c)
print(f"Le prochain cours d'ICC aura lieu le {day+7}.{month}.{year}")
# d) On ne peut plus incrémenter "bêtement" le jour ou le mois, du fait du
# commencement d'un nouveau mois ou d'une nouvelle année. Il s'agit de faire
# ressortir l'idée qu'un programme devra réaliser des instructions différentes
# en fonction de conditions bien formulées.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment