tg4/Chapitre 1 - Des bases en python/exercices_de_base.py

102 lines
3.1 KiB
Python
Raw Normal View History

2023-09-07 17:05:46 +00:00
# Exercice 1
def mini(L):
"""renvoie le minimum de la liste L."""
return min(L)
2023-09-07 17:13:49 +00:00
def mini(L): # Alternative
2023-09-07 17:05:46 +00:00
"""renvoie le minimum de la liste L."""
2023-09-07 17:13:49 +00:00
m = None
for v in L:
if m is None or v < m:
m = v
2023-09-07 17:05:46 +00:00
return m
2023-09-07 17:13:49 +00:00
2023-09-07 17:05:46 +00:00
# Exercice 2
2023-09-07 17:13:49 +00:00
def occurences(n: int) -> list:
2023-09-07 17:05:46 +00:00
"""compte les occurences de chaque chiffre dans le nombre entré."""
occurrences = [0] * 10
for digit in str(n):
occurrences[int(digit)] += 1
return occurrences
2023-09-07 17:13:49 +00:00
def occurences2(s: str) -> dict[str, int]:
2023-09-07 17:05:46 +00:00
"""compte les occurences de chaque caractère dans la string entrée."""
2023-09-13 09:37:47 +00:00
occurrences = {} # On créer un dictionnaire pour stocker les occurences
2023-09-13 09:34:28 +00:00
for char in s: # Pour chaques caractères dans dans s:
# On calcule la nouvelle valeur d'occurence pour le caractère
# Pour cela on utilise get(char, 0) pour récupérer la valeur dans le dictionnaire
2023-09-13 09:37:47 +00:00
# pour la clé char mais qui retourne 0 si il n'y a pas de valeurs dans le dictionnaire
# pour cette clé.
2023-09-13 09:34:28 +00:00
valeur = occurrences.get(char, 0) + 1
# On met la valeur dans le dictionnaire
occurrences[char] = valeur
return occurrences # On retourne le dictionnaire des occurences
2023-09-07 17:05:46 +00:00
2023-09-20 09:15:05 +00:00
def occurences2(s: str, base=1) -> dict[str, str]:
2023-09-13 09:41:16 +00:00
occurences = {}
for char in s:
if char not in occurences:
2023-09-20 09:15:05 +00:00
occurences[char] = base
2023-09-13 09:41:16 +00:00
else:
occurences[char] += 1
return occurences
2023-09-07 17:13:49 +00:00
cette_phrase = 'gkjgkfjdfjtgmeek,beeknqel!kh56456fg535574ϛ Ϝ ϝ Ϟ‡ ˆ ϟ‡ Ϡ ϡ Ϣ ϣ Ϥ ϥ Ϧ ϧ Ϩϛ Ϝ ϝ Ϟ ϟ Ϡ ϡ ϛ Ϝ ϝ Ϟ ϟ Ϡ ϡ Ϣ '
print(cette_phrase, occurences2(cette_phrase))
2023-09-07 17:05:46 +00:00
# Exercice 3
2023-09-07 17:13:49 +00:00
def repet(liste: list) -> bool:
2023-09-07 17:05:46 +00:00
"""renvoie True s'il y a au moins une répétition dans la liste entrée,
renvoie False sinon."""
return len(set(liste)) != len(liste)
2023-09-07 17:13:49 +00:00
2023-09-07 17:16:05 +00:00
def repet(liste: list) -> bool: # Alternative
2023-09-07 17:05:46 +00:00
"""renvoie True s'il y a au moins une répétition dans la liste entrée,
renvoie False sinon."""
occurences = {}
for v in liste:
if v in occurences:
return True
occurences[v] = 1
return False
2023-09-13 09:48:19 +00:00
def repet(liste: list):
occcurences = set()
for v in liste:
if v in occcurences:
return True
occcurences.add(v)
return False
2023-09-13 09:57:01 +00:00
2023-09-07 17:13:49 +00:00
def repet2(texte: str) -> (bool, dict):
2023-09-07 17:05:46 +00:00
"""renvoie de plus la liste des répétitions avec les effectifs.
Si un caractère ou un motif apparait x fois, avec x > 1,
on convient qu'il y a (x-1) répétitions."""
2023-09-20 09:15:05 +00:00
return repet(texte), occurences2(texte, base=0)
2023-09-07 17:05:46 +00:00
# Exercice 4
2023-09-07 17:13:49 +00:00
def fusion(liste1: list, liste2: list) -> list:
2023-09-07 17:05:46 +00:00
"""liste1 et liste2 sont déjà triées croissantes.
Renvoie liste_fusion qui est la concaténation ORDONNEE des deux listes"""
liste_fusion = []
i, j = 0, 0
while i < len(liste1) and j < len(liste2):
if liste1[i] < liste2[j]:
liste_fusion.append(liste1[i])
i += 1
else:
liste_fusion.append(liste2[j])
j += 1
return liste_fusion
2023-09-07 17:13:49 +00:00
print(fusion([1, 5, 8, 9, 13, 15], [2, 5, 6, 7, 100]))