Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb de chaîne

11 réponses
Avatar
Etienne Rousee
Bonjour,

Avec IDLE, la chaîne u') Nombre d\'itérations = ' passe.
Par contre, avec Eclipse et Pydev, le é ne passe plus.
Que dois je faire ?

--

Etienne

10 réponses

1 2
Avatar
Bruno Desthuilliers
Etienne Rousee a écrit :
Bonjour,

Avec IDLE, la chaîne u') Nombre d'itérations = ' passe.
Par contre, avec Eclipse et Pydev, le é ne passe plus.
Que dois je faire ?



D'abord apprendre à poster une description précise du symptôme (avec
copie du message d'erreur et du traceback s'il y en a). "ne passe plus",
c'est un peu court...
Avatar
Etienne Rousee
Le 08/06/2010 13:47, Bruno Desthuilliers a écrit :
Etienne Rousee a écrit :
Bonjour,

Avec IDLE, la chaîne u') Nombre d'itérations = ' passe.
Par contre, avec Eclipse et Pydev, le é ne passe plus.
Que dois je faire ?



D'abord apprendre à poster une description précise du symptôme (avec
copie du message d'erreur et du traceback s'il y en a). "ne passe plus",
c'est un peu court...



Mon code contient l'instruction:

plt.ylabel('Maximum = (' + str(kmax) + ' ; ' + str(nmax)
+ u') Nombre d'itérations = '
+ str(k))

Après avoir fait en tête de fichier:

import matplotlib.pyplot as plt

L'erreur est:

SyntaxError: Non-ASCII character 'xe9' in file C:Documents and
SettingsutilworkspaceVracsrcCollatz.py on line 53, but no encoding
declared; see http://www.python.org/peps/pep-0263.html for details

Je n'ai pas compris grand chose à la page indiquée.

Et je voudrais bien pouvoir utiliser les caractères accentués.

Merci d'avance.

--

Etienne
Avatar
danieldelay

L'erreur est:

SyntaxError: Non-ASCII character 'xe9' in file C:Documents and
SettingsutilworkspaceVracsrcCollatz.py on line 53, but no encoding
declared; see http://www.python.org/peps/pep-0263.html for details



Bonjour,

Il faut regarder dans les options de ton éditeur l'encodage de caractère
qu'il utilise, par exemple "utf-8", et indiquer cet encodage au tout
début de ton fichier python en rajoutant une ligne du genre

# -*- coding: utf-8 -*-

(l'encodage utf-8 est conseillé, il devient l'encodage par défaut dans
python 3)

Daniel
Avatar
Etienne Rousee
Il faut regarder dans les options de ton éditeur l'encodage de caractère
qu'il utilise, par exemple "utf-8", et indiquer cet encodage au tout
début de ton fichier python en rajoutant une ligne du genre

# -*- coding: utf-8 -*-

(l'encodage utf-8 est conseillé, il devient l'encodage par défaut dans
python 3)



Merci beaucoup, ça marche.

--

Etienne
Avatar
Bruno Desthuilliers
Etienne Rousee a écrit :
(snip)

D'autres t'on déjà répondu pour l'encodage donc pb résolu. Je me permet
une ou deux petites suggestions au passage:


plt.ylabel('Maximum = (' + str(kmax) + ' ; ' + str(nmax)
+ u') Nombre d'itérations = '



Tu n'a pas besoin d'utiliser une chaine unicode ici. Mais si tu veux
utiliser de l'unicode, au moins fait le partout - au lieu de concaténer
unicode et str !-)

Egalement, utiliser des double quotes t'évite de devoir échapper les
simples quote.

+ str(k))




Python propose des fonctionnalités de formatage de chaine qui rendent le
code plus lisible. En Python 2.x, par exemple:

plt.ylabel(
"Maximum = (%s ; %s) Nombre d'itérations = %s" % (kmax, nmax, k)
)

HTH
Avatar
Etienne Rousee
Le 09/06/2010 09:58, Bruno Desthuilliers a écrit :
Python propose des fonctionnalités de formatage de chaine qui rendent le
code plus lisible. En Python 2.x, par exemple:

plt.ylabel(
"Maximum = (%s ; %s) Nombre d'itérations = %s" % (kmax, nmax, k)
)



D'accord, c'est plus lisible et je préfère.
Le problème est que ça ne fonctionne pas.
J'obtiens deux petits carrés à la place du é.
J'utilise Python 2.6.5 avec Eclipse.

--

Etienne
Avatar
Bruno Desthuilliers
Etienne Rousee a écrit :
Le 09/06/2010 09:58, Bruno Desthuilliers a écrit :
Python propose des fonctionnalités de formatage de chaine qui rendent le
code plus lisible. En Python 2.x, par exemple:

plt.ylabel(
"Maximum = (%s ; %s) Nombre d'itérations = %s" % (kmax, nmax, k)
)



D'accord, c'est plus lisible et je préfère.
Le problème est que ça ne fonctionne pas.
J'obtiens deux petits carrés à la place du é.



Où ça ? Lors de l'affichage de ce label à l'exécution, ou dans ton
éditeur de code ? Désolé de devoir poser la question, mais ma boule de
cristal est chez le garagiste pour la révision annuelle...

Anyway : t'a un problème d'encodage. Vérifie déjà que l'encodage de ton
fichier source est correctement déclaré (c'est à dire que la déclaration
correspond à l'encodage effectif). Après, regarde la doc de l'outil
concerné (éditeur de code ou bibliothèque utilisée) selon l'endroit où
apparait ton pb.
Avatar
Etienne Rousee
Le 10/06/2010 10:06, Bruno Desthuilliers a écrit :
Etienne Rousee a écrit :
Le 09/06/2010 09:58, Bruno Desthuilliers a écrit :
Python propose des fonctionnalités de formatage de chaine qui rendent le
code plus lisible. En Python 2.x, par exemple:

plt.ylabel(
"Maximum = (%s ; %s) Nombre d'itérations = %s" % (kmax, nmax, k)
)



D'accord, c'est plus lisible et je préfère.
Le problème est que ça ne fonctionne pas.
J'obtiens deux petits carrés à la place du é.



Où ça ? Lors de l'affichage de ce label à l'exécution, ou dans ton
éditeur de code ?



A l'exécution, bien sûr.


Anyway : t'a un problème d'encodage. Vérifie déjà que l'encodage de ton
fichier source est correctement déclaré (c'est à dire que la déclaration
correspond à l'encodage effectif). Après, regarde la doc de l'outil
concerné (éditeur de code ou bibliothèque utilisée) selon l'endroit où
apparait ton pb.



Dans Eclipse, j'ai mis utf-8 dans Edit - Set encoding ainsi que
dans Project - Text file encoding.
Et j'ai rajouté la ligne # -*- coding: utf-8 -*-
au début du fichier.
J'ai du oublier quelque chose, mais quoi ?
Par contre, ces modifications ont été suffisantes pour mon
ancien code, avec les str.

Eclipse utilise pydev. Peut-être y a-t-il un rapport ?

--

Etienne
Avatar
Etienne Rousee
Le 10/06/2010 10:06, Bruno Desthuilliers a écrit :
Anyway : t'a un problème d'encodage. Vérifie déjà que l'encodage de ton
fichier source est correctement déclaré (c'est à dire que la déclaration
correspond à l'encodage effectif). Après, regarde la doc de l'outil
concerné (éditeur de code ou bibliothèque utilisée) selon l'endroit où
apparait ton pb.



J'ai aussi mis utf-8 dans Windows → Preference → General → workspace
et j'ai rajouté la ligne -Dfile.encoding=UTF-8 dans eclipse.ini
Rien n'y fait.

--

Etienne
Avatar
Etienne Rousee
Le 10/06/2010 10:06, Bruno Desthuilliers a écrit :

Bon, la ligne:

plt.ylabel(u"Maximum = (%s ; %s) Nombre d'itérations = %s" % (kmax,
nmax, k))

au lieu de :

plt.ylabel("Maximum = (%s ; %s) Nombre d'itérations = %s" % (kmax, nmax,
k))

fonctionne, donc EOT, je suppose ...

Merci à vous deux.

--

Etienne
1 2