:orphan: .. _TP1_GBM3A: TP1 === 1. Écrire une boucle pour afficher les nombres de 1 à 10, en indiquant à chaque fois s'ils sont pairs ou impairs. 2. Demander à l'utilisateur son nom (utiliser :func:`input`), et afficher un message personnalisé (utiliser une :term:`f-string`). 3. Demander à l'utilisateur d'entrer cinq nombres, stockez-les dans une liste de `float`, puis calculer leur somme et moyenne. Que se passe-t-il si une des entrées n'est pas une entrée numérique? **Bonus:** Modifier le code pour fonctionner sur un nombre arbitraire de nombres d'entrée (en précisant le mode d'arrêt). 4. Créer une fonction `mult(x, y)` qui prend deux nombres en paramètres et retourne leur produit. Que se passe-t-il si les deux nombres ne sont pas du même type numérique (p.ex. `int` et `complex`)? 5. Écrire une fonction `get_longest_string(s1, s2)` qui renvoit la plus longue de deux chaînes de caractères, et `None` si elles sont de longueurs égales. 6. Écrire une fonction `addition(x, y)` qui prend pour paramètres deux éléments, et retourne l'addition des deux éléments s'ils sont de même type, `None` sinon. Que se passe-t-il si les paramètres d'entrées sont deux listes, ou deux chaînes, ou deux dictionnaires? 7. Écrire une fonction `random_pick(seq)` qui tire aléatoirement un élément d'une liste passée en paramètre (utiliser :func:`random.choice` de la bibliothèque standard :mod:`random`). La fonction doit retourner l'élément en affichant: - `It's an integer` si l'élément est un entier, - `It's a string` si l'élément est une chaîne de caractères, - `It's more complicated` dans tout autre cas. Que se passe-t-il si le paramètre d'entrée n'est pas une liste, ou n'est pas itérable? 8. Écrire une fonction `generate_name()` générant aléatoirement un nom, défini comme étant une chaîne de 3 à 12 caractères qui alterne voyelles et consonnes, et dont le premier caractère (une voyelle ou une consonne) est en majuscule (utiliser :meth:`str.capitalize`). **Bonus:** Écrire une fonction `is_valid_name(name)` vérifiant si la chaîne d'entrée constitue un nom valide selon les trois critères précédents (utiliser :func:`all` sur des listes en compréhension).