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

87 lines
2.7 KiB
Python
Raw 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 stoker 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
# mais qui retourne 0 si il n'y a pas de valeurs dans le dictionnaire.
valeur = occurrences.get(char, 0) + 1
# On met la valeur dans le dictionnaire
occurrences[char] = valeur
return occurrences # On retourne le dictionnaire des 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 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), occurences2(texte)
# 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) and j < len(liste2):
if liste1[i] < liste2[j]:
liste_fusion.append(liste1[i])
i += 1
else:
liste_fusion.append(liste2[j])
j += 1
liste_fusion.extend(liste1[i:])
liste_fusion.extend(liste2[j:])
return liste_fusion
print(fusion([1, 5, 8, 9, 13, 15], [2, 5, 6, 7, 100]))