[Python] 2 questions (fichier ; arrays)
Fermé
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
-
20 févr. 2008 à 20:10
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 27 févr. 2008 à 09:12
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 27 févr. 2008 à 09:12
A voir également:
- [Python] 2 questions (fichier ; arrays)
- Fichier rar - Guide
- Fichier host - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier iso - Guide
10 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
20 févr. 2008 à 22:23
20 févr. 2008 à 22:23
Salut,
Pour ton 1, met l'attribut "a" au lieu de "w", ça ajoutera en fin de fichier :-)
Pour ton 2, je pense qu'il est rare de trouver des fonctions d'affichage pour débugger aussi bien faites qu'en php (pour une fois que j'admet un avantage de php par rapport à python).
Si tu veux afficher comme print_r il faudra que tu te concoctes toi même une fonction pour faire ça...
Pour ton 1, met l'attribut "a" au lieu de "w", ça ajoutera en fin de fichier :-)
Pour ton 2, je pense qu'il est rare de trouver des fonctions d'affichage pour débugger aussi bien faites qu'en php (pour une fois que j'admet un avantage de php par rapport à python).
Si tu veux afficher comme print_r il faudra que tu te concoctes toi même une fonction pour faire ça...
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
23 févr. 2008 à 01:31
23 févr. 2008 à 01:31
Merci.
J'ai essayé de reproduire un équivalent de la fonction print_r, mais elle n'est pas terrible.
Les crochets d'ouverture et de fermeture ne sont pas toujours affichés au même niveau, et je ne trouve pas pourquoi. En plus, l'index de chaque élément n'est pas affiché.
La voici :
--
Sylvain
J'ai essayé de reproduire un équivalent de la fonction print_r, mais elle n'est pas terrible.
Les crochets d'ouverture et de fermeture ne sont pas toujours affichés au même niveau, et je ne trouve pas pourquoi. En plus, l'index de chaque élément n'est pas affiché.
La voici :
def print_r(expression,niveau_en_cours=0): type_expression=type(expression) resultat='' resultat+=(niveau_en_cours)*' ' #Si la variable est un tableau if type_expression==list: nb_composantes=len(expression) i=0 resultat+='[\n' #on affiche chaque composante avec l'indentation for composante in expression: i=i+1 resultat+=(niveau_en_cours)*' ' resultat+=str(print_r(composante,niveau_en_cours+1)) if i!=nb_composantes: resultat+=',' resultat+='\n' resultat+=(niveau_en_cours+1)*' ' resultat+=']' #Sinon on retourne la variable sous forme de chaine else: resultat+=str(expression) return resultat
--
Sylvain
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
23 févr. 2008 à 14:14
23 févr. 2008 à 14:14
Je pense qu'il faut que print_r soit une fonction récursive vu qu'une liste peut contenir une autre liste etc...
EDIT: Shame on me! J'ai mal lu ton code...
EDIT: Shame on me! J'ai mal lu ton code...
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
23 févr. 2008 à 17:46
23 févr. 2008 à 17:46
Ben pour la fermeture des crochets tu mets:
resultat+=(niveau_en_cours+1)*' '
Pas besoin de mettre +1
resultat+=(niveau_en_cours+1)*' '
Pas besoin de mettre +1
def print_r(expression,niveau_en_cours=0): type_expression=type(expression) resultat='' resultat+=(niveau_en_cours)*' ' #Si la variable est un tableau if type_expression==list: nb_composantes=len(expression) i=0 resultat+='[\n' #on affiche chaque composante avec l'indentation for composante in expression: i=i+1 resultat+=niveau_en_cours*' ' resultat+=str(print_r(composante,niveau_en_cours+1)) if i!=nb_composantes: resultat+=',' resultat+='\n' resultat+=niveau_en_cours*' ' resultat+=']' #Sinon on retourne la variable sous forme de chaine else: resultat+=str(expression) return resultat
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
23 févr. 2008 à 18:52
23 févr. 2008 à 18:52
Non, ce n'est pas ça. Même en mettant niveau_en_cours+1*' ', les crochets fermants étaient avant les ouvrants.
--
Sylvain
--
Sylvain
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
26 févr. 2008 à 10:37
26 févr. 2008 à 10:37
Pour ton 2), peut-être le module pprint ?
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
26 févr. 2008 à 19:15
26 févr. 2008 à 19:15
mmm...
Ca fonctionne avec les arrays, pprint ?
J'ai trouvé de l'aide sur ce module, mais il est question d'objets, par d'arrays.
http://quentel.pierre.free.fr/python-trad/module-pprint.html
https://docs.python.org/3/library/pprint.html
J'ai essayé :
Mais aucun ne retourne quelquechose du genre :
--
Sylvain
Ca fonctionne avec les arrays, pprint ?
J'ai trouvé de l'aide sur ce module, mais il est question d'objets, par d'arrays.
http://quentel.pierre.free.fr/python-trad/module-pprint.html
https://docs.python.org/3/library/pprint.html
J'ai essayé :
import pprint a=[1,2,3] pp = pprint.PrettyPrinter(indent=4) pp.pprint(a) Ou encore : import pprint a=[1,2,3] a.pprint() a.pprint pprint(a)
Mais aucun ne retourne quelquechose du genre :
[ 1, 2, 3 ]
--
Sylvain
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
26 févr. 2008 à 22:33
26 févr. 2008 à 22:33
pprint marche avec les arrays ,même imbriqués, mais il ne va à la ligne que quand ça dépasse...
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
26 févr. 2008 à 23:03
26 févr. 2008 à 23:03
Ah, effectivement...
avec des arrays très long, les valeurs sont bien affichés.
Mais comment pprint détermine-t-il, justement, à partir de quelle colonne "ça dépasse" ?
--
Sylvain
avec des arrays très long, les valeurs sont bien affichés.
Mais comment pprint détermine-t-il, justement, à partir de quelle colonne "ça dépasse" ?
--
Sylvain
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
27 févr. 2008 à 09:12
27 févr. 2008 à 09:12
Je crois qu'il prend 80 par défaut, mais ça doit pouvoir se surcharger ou modifier.