# -*- coding: utf-8 -*-
from string import ascii_lowercase
from unicodedata import normalize
from pdb import set_trace

if __name__ == "__main__":
    # exercice : sortir la liste des nombres impairs
    liste = [4, 8, 5, 36, 78, 0, -5, 3, -10]
    liste_impairs = []
    append_liste = liste_impairs.append
    pair = 2
    for nombre in liste:
        if not nombre % pair:
            append_liste(nombre)
    print(liste_impairs)

    # exercice : sortir la liste des nombres impairs (par liste de comprehension)
    print([nombre for nombre in liste if not nombre % 2])

    # exercice : afficher toutes les tables de multiplication
    valeurs = range(0, 11)
    format_chaine = '{1} X {0} = {2}'.format
    table_pattern_format = 'Table de {}'.format
    for une_table in valeurs:
        print(table_pattern_format(une_table))
        for ligne in valeurs:
            print(f'{une_table} X {ligne} = {ligne*une_table}')
            print(format_chaine(une_table,ligne,ligne*une_table))

    # exercice : afficher les phrases qui sont des hétérogrammes (une lettre présent au max 1 fois)
    phrases = [
        "Lampez un fort whisky",
        "The quick brown fox jumps over the lazy dog",
        "Plombez vingt fuyards",
        "The big dwarf only jumps",
        "Allons enfants de la patrie",
        "Tu l'as trop ecrase cesar ton port salut",
    ]
    set_trace()
    for phrase in phrases:
        phrase_min = phrase.lower()
        compteur = phrase_min.count
        for lettre in ascii_lowercase:
            if compteur(lettre) > 1:
                break
        else:
            print(phrase)

    # exercice : afficher les phrases qui sont des pangrammes (toutes les lettres de l'alphabet (au moins 1 fois))
    phrases = [
        "Portez ce vieux whisky au juge blond qui fume",
        "The quick brown fox jumps over the lazy dog",
        "Voix ambiguë d'un coeur qui au zéphyr préfère les jattes de kiwis",
        "Vif juge, trempez ce blond whisky aqueux",
        "Fripon, mixez l'abject whisky qui vidange",
        "Prouvez, juge, que le fameux sandwich au yak tue",
        "Buvez de ce bourbon que le patron juge fameux",
        "Voyez le brick énorme que j'examine près du wharf",
    ]

    # exercice : dire quels sont les palindromes dans la liste de mots
    mots = [
        "radar",
        "kayak",
        "voiture",
        "Ressasser",
        "1234+8765=9999=5678+4321",
    ]
    for mot in mots:
        mot_minus = mot.lower()
        if mot_minus == mot_minus[::-1]:
            print(mot)

    # exercice : trier les planetes par la taille de leur rayon
    venus = {"rayon": 6051, "nom": "Venus"}
    mercure = {"rayon": 2439, "nom": "Mercure"}
    terre = {"rayon": 6378, "nom": "Terre"}
    pluton = {"nom": "Pluton"}
    planetes = [venus, mercure, terre, pluton]
    def recuperer_rayon(une_planete:dict)->int:
        """
        permet de récupérer le rayon
        :param une_planete: type dict
        :return: le rayon
        """
        rayon = une_planete.get('rayon',0)
        return rayon

    print(recuperer_rayon(venus))
    planetes.sort(key=recuperer_rayon, reverse=True)
    planetes.sort(key=lambda planete:planete.get('rayon',0))
    print(planetes)
