tg4/Chapitre 1 - Des bases en python/exercices_de_base.py
2023-09-21 13:14:08 +02:00

102 lines
3.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Exercice 1
def mini(L):
"""renvoie le minimum de la liste L."""
return min(L)
def mini(L): # Alternative
"""renvoie le minimum de la liste L."""
m = None
for v in L:
if m is None or v < m:
m = v
return m
# Exercice 2
def occurences(n: int) -> list:
"""compte les occurences de chaque chiffre dans le nombre entré."""
occurrences = [0] * 10
for digit in str(n):
occurrences[int(digit)] += 1
return occurrences
def occurences2(s: str) -> dict[str, int]:
"""compte les occurences de chaque caractère dans la string entrée."""
occurrences = {} # On créer un dictionnaire pour stocker les occurences
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
# pour la clé char mais qui retourne 0 si il n'y a pas de valeurs dans le dictionnaire
# pour cette clé.
valeur = occurrences.get(char, 0) + 1
# On met la valeur dans le dictionnaire
occurrences[char] = valeur
return occurrences # On retourne le dictionnaire des occurences
def occurences2(s: str, base=1) -> dict[str, str]:
occurences = {}
for char in s:
if char not in occurences:
occurences[char] = base
else:
occurences[char] += 1
return occurences
cette_phrase = 'gkjgkfjdfjtgmeek,beeknqel!kh56456fg535574ϛ Ϝ ϝ Ϟ‡ ˆ ϟ‡ Ϡ ϡ Ϣ ϣ Ϥ ϥ Ϧ ϧ Ϩϛ Ϝ ϝ Ϟ ϟ Ϡ ϡ ϛ Ϝ ϝ Ϟ ϟ Ϡ ϡ Ϣ '
print(cette_phrase, occurences2(cette_phrase))
# Exercice 3
def repet(liste: list) -> bool:
"""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)
def repet(liste: list) -> bool: # Alternative
"""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
def repet(liste: list):
occcurences = set()
for v in liste:
if v in occcurences:
return True
occcurences.add(v)
return False
def repet2(texte: str) -> (bool, dict):
"""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."""
return repet(texte), {(k, v) for k, v in occurences2(texte, base=0).items() if v > 0}
# Exercice 4
def fusion(liste1: list, liste2: list) -> list:
"""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) or j < len(liste2):
if liste1[min(i, len(liste1)-1)] < liste2[min(j, len(liste2)-1)]:
liste_fusion.append(liste1[i])
i += 1
else:
liste_fusion.append(liste2[j])
j += 1
return liste_fusion
print(fusion([1, 5, 8, 9, 13, 15], [2, 5, 6, 7, 100]))