Forum debian-fr.org

Rechercher:

* Connexion   * M’enregistrer

* FAQ    * Rechercher





Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 
Auteur Message
 Sujet du message: Débutant python [Résolu]
MessagePosté: 09 Jan 2010 18:31 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 26 Déc 2007 19:43
Messages: 446
Localisation: http://forum.debian-fr.org/
Hi, je m'essaye au Python et déjà des soucis :cry: avec les
# -*- coding:Utf-8 -*- et consœurs.

je suis le tuto de http://python.developpez.com/cours/TutoSwinnen/
Je bloc ici :
Citation:
Exercices :
5.11. Soient les listes suivantes :
t1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
t2 = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre']
Écrivez un petit programme qui crée une nouvelle liste t3. Celle-ci devra contenir tous les éléments des deux listes en les alternant, de telle manière que chaque nom de mois soit suivi du nombre de jours correspondant : ['Janvier',31,'Février',28,'Mars',31, etc...].
5.12. Écrivez un programme qui affiche « proprement » tous les éléments d'une liste. Si on l'appliquait par exemple à la liste t2 de l'exercice ci-dessus, on devrait obtenir :
Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre

Mon code fonctionne, mais j'ai le hic avec les caractères spéciaux. Je retourne lire :
Citation:
4.6. Remarque concernant les caractères accentués et spéciaux :


Une petite recherche sur le Web, mais les exemples ne sont pas des listes. Je regarde la solution du tuto mais rien n'y fait, j'ai toujours :
Code:
['Janvier', 31, 'F\xc3\xa9vrier', 28, 'Mars', 31, 'Avril', 30, 'Mai', 31, 'Juin', 30, 'Juillet', 31, 'Ao\xc3\xbbt', 31, 'Septembre', 30, 'Octobre', 31, 'Novembre', 30, 'D\xc3\xa9cembre', 31]


Merci de vos explications

_________________
lenny - 2.6.25


Dernière édition par shell-boudeur le 11 Jan 2010 21:35, édité 1 fois.

Haut
 Profil  
 
 Sujet du message: Re: Débutant python
MessagePosté: 09 Jan 2010 20:37 
Hors ligne
Contributeur
Avatar de l’utilisateur

Inscription: 18 Juil 2007 16:57
Messages: 8380
Localisation: Grenoble
Quel est l'encodage de ton fichier et quel est la version de ton interpréteur python ?

_________________
Je suis Pitta, cartésien, irritable, irritant et névrosé (de plus je fais de l'entrisme pour zsh), si l'un de mes messages vous insupporte essayez d'y voir de l'ironie ou de ne pas en tenir compte. Bonne journée et gardez le sourire. :)


Haut
 Profil  
 
 Sujet du message: Re: Débutant python
MessagePosté: 10 Jan 2010 09:22 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 26 Déc 2007 19:43
Messages: 446
Localisation: http://forum.debian-fr.org/
Pour l'encodage, j'ai essayé l'utf et le latin
Ci-dessous, le code (la solution fournie, j'ai juste rajouté la 1ère ligne)
Code:
# -*- coding:Utf-8
# Combinaison de deux listes en une seule

# Listes fournies au départ :
t1 = [31,28,31,30,31,30,31,31,30,31,30,31]
t2 = ['Janvier','Février','Mars','Avril','Mai','Juin',
      'Juillet','Août','Septembre','Octobre','Novembre','Décembre']
# Nouvelle liste à construire (vide au départ) :
t3 = []
# Boucle de traitement :
i = 0
while i < len(t1):
    t3.append(t2[i])
    t3.append(t1[i])
    i = i + 1

# Affichage :
print t3

Code:
>>> sys.version_info
(2, 6, 4, 'final', 0)

_________________
lenny - 2.6.25


Haut
 Profil  
 
 Sujet du message: Re: Débutant python
MessagePosté: 10 Jan 2010 16:29 
Hors ligne
Contributeur
Avatar de l’utilisateur

Inscription: 18 Juil 2007 16:57
Messages: 8380
Localisation: Grenoble
J'ai essayé ceci :
Code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Combinaison de deux listes en une seule
import sys
# Listes fournies au départ :
t1 = [31,28,31,30,31,30,31,31,30,31,30,31]
t2 = ['Janvier','Février','Mars','Avril','Mai','Juin',
      'Juillet','Août','Septembre','Octobre','Novembre','Décembre']
# Nouvelle liste à construire (vide au départ) :
t3 = []
# Boucle de traitement :
i = 0
while i < len(t1):
    t3.append(t2[i])
    t3.append(t1[i])
    i = i + 1

# Affichage :
print sys.stdout.encoding
moi = True
for i in t3:
    if moi:
        print i.encode(sys.stdout.encoding,'replace')
    else:
        print i
    moi = not moi

Et il me plante sur le février avec :
Code:
Traceback (most recent call last):
  File "./test.py", line 24, in <module>
    print i.encode(sys.stdout.encoding,'replace')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)

Donc les chaines restent en ASCII. Je l'ai fais avec la version 2.6 de l'interpréteur.

Mais si tu utilise python 3 tu peut simplement faire print(t3) et tout s'affiche comme il faut.

_________________
Je suis Pitta, cartésien, irritable, irritant et névrosé (de plus je fais de l'entrisme pour zsh), si l'un de mes messages vous insupporte essayez d'y voir de l'ironie ou de ne pas en tenir compte. Bonne journée et gardez le sourire. :)


Haut
 Profil  
 
 Sujet du message: Re: Débutant python
MessagePosté: 10 Jan 2010 17:36 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 26 Déc 2007 19:43
Messages: 446
Localisation: http://forum.debian-fr.org/
Apparemment, c'est assez galère toute cette histoire d'unicode, d'utf etc...
Citation:
Mais si tu utilise python 3 tu peut simplement faire print(t3) et tout s'affiche comme il faut.

En clair, le codeur python n'utilise pas de caractères spéciaux s'il veut que son script fonctionne partout :arrow:
je commence à me demander si je fais bien de me mettre à ce langage ?
désolé de la question, mais je viens de vb (appris sur le tas) alors... :?: :mrgreen:

_________________
lenny - 2.6.25


Haut
 Profil  
 
 Sujet du message: Re: Débutant python
MessagePosté: 10 Jan 2010 17:45 
Hors ligne
Vraiment, particulièrement bavard(e)!
Avatar de l’utilisateur

Inscription: 17 Déc 2007 21:19
Messages: 1403
Localisation: Avesnois (59)
Bonsoir,

shell-boudeur a écrit:
Apparemment, c'est assez galère toute cette histoire d'unicode, d'utf etc...
je commence à me demander si je fais bien de me mettre à ce langage ?
désolé de la question, mais je viens de vb (appris sur le tas) alors... :?: :mrgreen:


Python est porteur, beaucoup le choisissent (notamment pour wxpython d'après les retours que j'ai eus)
Sinon perl est aussi pas mal, as tu jeté une oeil dans ce sens ?

Mais c'est comme pour tout apprentissage je pense, les débuts sont fastidieux mais si l'on persiste ça paye !

pas mal de tutos là :
http://www.olivierberger.org/python/

Bon courage

Cyrille

_________________

BLAG on Inspiron 1525: http://zenblagger.org [2.6.35.5-libre.29.fc14.x86_64]
Testing -i386 sur desktop. Linux 2.6.26 + Gnome

http://www.fsf.org


Haut
 Profil  
 
 Sujet du message: Re: Débutant python
MessagePosté: 10 Jan 2010 20:09 
Hors ligne
Contributeur
Avatar de l’utilisateur

Inscription: 18 Juil 2007 16:57
Messages: 8380
Localisation: Grenoble
shell-boudeur a écrit:
Apparemment, c'est assez galère toute cette histoire d'unicode, d'utf etc...
Citation:
Mais si tu utilise python 3 tu peut simplement faire print(t3) et tout s'affiche comme il faut.

En clair, le codeur python n'utilise pas de caractères spéciaux s'il veut que son script fonctionne partout :arrow:
je commence à me demander si je fais bien de me mettre à ce langage ?
désolé de la question, mais je viens de vb (appris sur le tas) alors... :?: :mrgreen:

Le python (comme le perl) peuvent avoir se genre de problème la version 3 de python (et 6 de perl) corrigent cela.

En python il y a des solutions. D'après ce que j'ai compris ce sont des modificateurs du genre u"chaine". Mais je n'ai jamais appris ce langage, il faudrait que je m'y penche plus.

_________________
Je suis Pitta, cartésien, irritable, irritant et névrosé (de plus je fais de l'entrisme pour zsh), si l'un de mes messages vous insupporte essayez d'y voir de l'ironie ou de ne pas en tenir compte. Bonne journée et gardez le sourire. :)


Haut
 Profil  
 
 Sujet du message: Re: Débutant python
MessagePosté: 10 Jan 2010 23:13 
Hors ligne
Contributeur
Avatar de l’utilisateur

Inscription: 18 Juil 2007 16:57
Messages: 8380
Localisation: Grenoble
Je viens d'un peu plus m'y intéresser et en fait ça marche si tu fait l'affichage élément par élément.

_________________
Je suis Pitta, cartésien, irritable, irritant et névrosé (de plus je fais de l'entrisme pour zsh), si l'un de mes messages vous insupporte essayez d'y voir de l'ironie ou de ne pas en tenir compte. Bonne journée et gardez le sourire. :)


Haut
 Profil  
 
 Sujet du message: Re: Débutant python
MessagePosté: 11 Jan 2010 15:45 
Hors ligne
Nouvel utilisateur

Inscription: 03 Déc 2008 22:21
Messages: 31
quand tu fais "print t3", python affiche le contenu de l'objet en ascii. Donc avec les codes utf-8. la fonction print n'est pas faite pour afficher "proprement" un tableau.

maintenant, remplace ton code d'affichage par :
Code:
# Affichage :
txt = ""          # variable texte vide
for i in t3 :
   txt += str(i) + ", "   # ajout des champs du tableau à la chaine de texte, séparation des champs par une virgule
print txt          # affichage de la chaine de texte


et tout s'imprime bien.

_________________
Le blog de Tuxicoman


Haut
 Profil  
 
 Sujet du message: Re: Débutant python
MessagePosté: 11 Jan 2010 21:34 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 26 Déc 2007 19:43
Messages: 446
Localisation: http://forum.debian-fr.org/
Merci beaucoup, je vais étudier ça de plus près

_________________
lenny - 2.6.25


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 

Index du forum » Divers » Programmation


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Aller à:  
Flux RSS Flux RSS Liste des flux Liste des flux
Powered by phpBB® Forum Software © phpBB Group
Traduction par: phpBB-fr.com
SEO
[ Time : 0.214s | 14 Queries | GZIP : Off ]