====== Matrices ====== ===== Liens ===== *[[https://python.sdv.univ-paris-diderot.fr/15_bonnes_pratiques/|Guides bonnes conduites]] *[[https://python-gtk-3-tutorial.readthedocs.io/en/latest/|GTK Python tutorial]] *[[https://zestedesavoir.com/tutoriels/1294/des-bases-de-donnees-en-python-avec-sqlite3/|Bases de données sqlite / Python]] *[[https://zestedesavoir.com/tutoriels/870/des-interfaces-graphiques-en-python-et-gtk/|GTK Python (zeste de savoir)]] *[[http://zetcode.com/python/gtk/|Tuto Python GTK]] *[[ https://zestedesavoir.com/tutoriels/1729/programmation-avec-tkinter/programmation-evenementielle-avec-tkinter/#1-boucle-evenementielle|Prog éven. Tk]] *[[https://www.pythonforbeginners.com/os/python-system-administration|Python admin sys linux]] *[[https://docs.python.org/fr/3/library/subprocess.html|Processur et sous processus]] *[[https://stackabuse.com/executing-shell-commands-with-python/ | Lancer des commandes shell depuis python ]] ===== Créer une matrice ===== ragnarok@Fenrir:~$ python3 Python 3.7.6 (default, Dec 19 2019, 09:25:23) [GCC 9.2.1 20191130] on linux >>> score = [['joueur1','joueur2','joueur3','joueur4'],[150.0,-50.0,-50.0,-50.0],[-20.0,-20,0,-20,0,60]] >>> print(score) [['joueur1', 'joueur2', 'joueur3', 'joueur4'], [150.0, -50.0, -50.0, -50.0], [-20.0, -20, 0, -20, 0, 60]] >>> type(score) La matrice a été créée. On voit bien qu'il s'agit en fait d'une liste de listes. ===== Accéder à un élément de la matrice ===== >>> score[2][2] 0 >>> score[2][3] -20 >>> score[0][0] 'joueur1' Ces listes peuvent contenir tous types d'éléments >>> type(score[0][0]) >>> type(score[1][1]) >>> score[1:][1:] [[-20.0, -20, 0, -20, 0, 60]] ===== Parcourir la matrice ===== ==== Parcourir les lignes ==== >>> for lignes in score : ... print(lignes) ... ['joueur1', 'joueur2', 'joueur3', 'joueur4'] [150.0, -50.0, -50.0, -50.0] [-20.0, -20, 0, -20, 0, 60] ==== Parcourir la matrice : ==== >>> for lignes in score : ... for col in lignes: ... print(col) ... joueur1 joueur2 joueur3 joueur4 150.0 -50.0 -50.0 -50.0 -20.0 -20 0 -20 0 60 ==== Parcourir la matrice avec index ==== >>> for i_line, line in enumerate(score): ... print(i_line, ' : ', line) ... 0 : ['joueur1', 'joueur2', 'joueur3', 'joueur4'] 1 : [150.0, -50.0, -50.0, -50.0] 2 : [-20.0, -20, 0, -20, 0, 60] >>> for i_line, line in enumerate(score): ... for i_col, col in enumerate(line): ... print (i_col, ' : ', col) ... 0 : joueur1 1 : joueur2 2 : joueur3 3 : joueur4 0 : 150.0 1 : -50.0 2 : -50.0 3 : -50.0 0 : -20.0 1 : -20 2 : 0 3 : -20 4 : 0 5 : 60 ====== Dictionnaires ====== Créer un ensemble de joueur. [ragnarok@asgard-freeBSD:~] $ python3.6 Python 3.6.9 (default, Jul 9 2019, 01:18:18) [GCC 4.2.1 Compatible FreeBSD Clang 6.0.1 (tags/RELEASE_601/final 335540)] on freebsd12 Type "help", "copyright", "credits" or "license" for more information. >>> joueur = dict() >>> for i in range(0,3): ... joueur["nom{}".format(i+1)] = 100+i*100 ... La liste de joueur est crée (ici avec des scores définis par des multiples de 100 >>> joueur {'nom1': 100, 'nom2': 200, 'nom3': 300} >>> ===== Parcourir les clés ===== >>> for j in joueur: ... print(j) ... nom1 nom2 nom3 ou >>> for j in joueur.keys(): ... print(j) ... nom1 nom2 nom3 ===== Parcourir les valeurs ===== >>> for values in joueur.values(): ... print(values) ... 100 200 300 ===== Parcourir les clefs et les valeurs ===== >>> for cle,valeur in joueur.items(): ... print("La cle est: {} et la valeur est: {}.".format(cle,valeur)) ... La cle est: nom1 et la valeur est: 100. La cle est: nom2 et la valeur est: 200. La cle est: nom3 et la valeur est: 300. ===== Afficher une valeur ===== >>> joueur['nom1'] 100 ===== Remplacer une valeur ===== >>> joueur['nom1'] 100 >>> joueur['nom1'] = 5000 >>> joueur['nom1'] 5000 ===== Au final ===== On peut parcourir un dictionnaire grâce aux méthodes **keys** (parcourt les clés),**values** (parcourt les valeurs) ou **items** (parcourt les couples clé-valeur). ====== Sortie WEB ====== « term2web »est une petite bibliothèque Python qui redirige tous les 'print(...)' et 'input(...)' vers une page web. On peut ainsi, grâce aux propriétés CSS, formater le texte affiché par ces fonctions, et ainsi rendre les programmes visuellement plus attrayants que lorsqu'ils sont affichés dans l'habituel et austère terminal texte. Le dépôt GitHub de cette bibliothèque se trouve à l'adresse : https://github.com/epeios-q37/term2web-python , et il y a une notice explicative à l'adresse : https://q37.info/s/rhj9qmb9 . Il y a aussi une démonstration en ligne, accessible à l'adresse : ** https://q37.info/s/kjjcfcp3 ** https://github.com/epeios-q37/term2web-python ====== Permutations ====== **Liens doc** [http://www.python-simple.com/python-modules-autres/itertools.php|Doc en FR] [https://docs.python.org/fr/3.9/library/itertools.html|Doc officielle] **Exemple:** #!/usr/bin/env python3 # -*- coding: utf-8 -*- from itertools import permutations phrase = input('Saisir phrase à mélanger : ') n = 0 for x in permutations(phrase.split(), len(phrase.split())): print(x) **Et en sortie** /usr/bin/python3.8 /home/ragnarok/PycharmProjects/guitare/phrase.py Saisir phrase à mélanger : une deux trois ('une', 'deux', 'trois') ('une', 'trois', 'deux') ('deux', 'une', 'trois') ('deux', 'trois', 'une') ('trois', 'une', 'deux') ('trois', 'deux', 'une') Process finished with exit code 0