# 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]))