Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2453 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  mauvais depart

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

mauvais depart

n°1616902
noise83
Posté le 29-09-2007 à 12:24:09  profilanswer
 

Bonjour je debute dans le python, notament grace a des tutos trouvés sur le net.
 
J'utilise Idle, tous va bien mais au moment d'enregistrer un script, je me retrouve avec une fenetre  
 
"non ASCII found, yet no encoding  
.add a line like
 
# -*- coding: cp1252 -*-
 
choose ok to save this file as cp1252
Edityour general option to slave the warning
 
je choisis ok  
 
et quand je lance le processus,  j'obtient une fenetre :
 
syntax error
 
There an error in your program:
 
invalid syntax.
 
j'ai pourtant essayer de regarder si j'avai fais une erreur, j'en ai pas trouvé, devant mes echec, j'ai fait un copier coler du code donné sur le site et la encore les meme fenetre...
 
Je tourne sous vista. et j'utilise python 2.5.1
 
Pouvez vous me dire d'ou vient l'erreur?

mood
Publicité
Posté le 29-09-2007 à 12:24:09  profilanswer
 

n°1616954
masklinn
í dag viðrar vel til loftárása
Posté le 29-09-2007 à 15:45:38  profilanswer
 

Faudrait ptet penser à lire les messages d'erreur au lieu de cliquer "ok" sans réfléchir hein [:pingouino]
 
Tu as des caractères non-ascii dans ton source (avec des accents par exemple), python ne les gère pas par défaut, il faut lui indiquer ton encodage avec une annotation spécifique. Donc IDLE te prévient, et te demande si tu veux rajouter la ligne indiquant l'encodage (# -*- coding: encodage_de_ton_fichier -*-).
 
Il te fournit ensuite deux options: "ok", qui indique "ok rien à foutre", et "Edit my file" qui indique "Rajoute l'annotation d'encodage au fichier".
 
Donc commence par rajouter cette indication d'encodage (ou par dégager les accents de ton source).


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1617079
noise83
Posté le 30-09-2007 à 10:56:32  profilanswer
 

merci bien , en effet c'etai tout bête .
 
J'ai une deuxieme question tout aussi bête surement mais comme un dis un con qui demande reste con qq seconde...
 
J'explique, quand je met la condition "else" l'indentation ne se fait pas automatiquement sous windows, je fais donc 4 espaces comme indiqué dans le tuto de Gerard Swinnen et la ....
 
 
>>> a = 20
>>> if (a >1 00):
 print ' a est superieur a la centaine'
      else:
       
  File "<pyshell#8>", line 3
    else:
         
^
IndentationError: unindent does not match any outer indentation level
>>>  
 
 
ça doit encore etre tout bête...

Message cité 1 fois
Message édité par noise83 le 30-09-2007 à 10:58:50
n°1617081
masklinn
í dag viðrar vel til loftárása
Posté le 30-09-2007 à 11:25:16  profilanswer
 

noise83 a écrit :

merci bien , en effet c'etai tout bête .

 

J'ai une deuxieme question tout aussi bête surement mais comme un dis un con qui demande reste con qq seconde...

 

J'explique, quand je met la condition "else" l'indentation ne se fait pas automatiquement sous windows, je fais donc 4 espaces comme indiqué dans le tuto de Gerard Swinnen et la ....

 


>>> a = 20
>>> if (a >1 00):
 print ' a est superieur a la centaine'
      else:
     
  File "<pyshell#8>", line 3
    else:
       
^
IndentationError: unindent does not match any outer indentation level
>>>

 


ça doit encore etre tout bête...


Ta condition "else" ne doit surtout pas être indentée ici, la ligne "if" n'est pas indentée (même si elle n'est pas collée au bord gauche) à cause du marqueur ">>> " de shell, qui ajoute des caractères mais pas d'indentation (c'est pas super clair je sais, mais c'est comme ça)

 

Donc un if/else doit ressembler à ça dans le shell:

Code :
  1. >>> if True:
  2.     print "ok"
  3. else:
  4.     print "nok"
  5.  
  6.     
  7. ok
  8. >>>
 

Accessoirement, les parenthèses dans ton "if" sont inutiles et redondantes, elles ne sont à utiliser que pour clarifier une condition ou pour créer des groupes incompatibles avec la précédences naturelle.

 

Typiquement, une opération du type

Code :
  1. >>> a = 5
  2. >>> b= 6
  3. >>> c = 7
  4. >>> d = 8
  5. >>> if a < b != c > d:
  6.     print "ok"


ne va rien imprimer du tout, parce que les opérateurs de comparaison ont tous la même précédence, donc évaluation de la gauche vers la droite, donc c'est équivalent à

Code :
  1. if (((a < b) != c) > d):
  2.     print "ok"


qui n'est pas du tout ce que je voulais.

 

Donc je rajoute des parenthèses pour bypasser la précédence naturelle, et ça donne

Code :
  1. >>> if (a < b) != (c > d):
  2.     print "ok"
  3.  
  4.     
  5. ok


mais chez toi il n'y a qu'une seule opération et elle n'est pas ambigue, donc pas de parenthèses.


Message édité par masklinn le 30-09-2007 à 11:26:06

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1617101
noise83
Posté le 30-09-2007 à 12:13:10  profilanswer
 

merci pour tes conseils, en effet sans indentation tout fonctionne.
 
Tu as entierement raison pour les parenthese mais comme je te le disai plus haut j'en suis pour le moment au stade "tutoriel" je suppose qu'il nous les font mettre pour prendre les bonnes habitudes , et que au fur et a mesure on doit alleger sont code de soit meme.
 
Cela dis je vai essayer de prendre l'habitude de faire au plus simple.
 
Merci encore.

n°1617125
gzii
court-circuit
Posté le 30-09-2007 à 14:46:30  profilanswer
 

Ca n'est pas un mauvais départ, c'est un départ ;)

n°1617140
noise83
Posté le 30-09-2007 à 16:28:10  profilanswer
 

Merci gzii, en effet c'est dur et laborieux mais faut bien y passer et comme on dis c'est en tombant qu'on apprend...

n°1828339
fred0062
Posté le 17-12-2008 à 09:20:18  profilanswer
 

bonjour, je me mêle de votre conversation , pardon par avance.
Je m'essaye à python et quand après une suite de lignes je tape print  il me marque  
"SyntaxError: invalid syntax (<pyshell#11>, line 2)"
Donc moi pas comprendre !! :??:

n°1828369
gzii
court-circuit
Posté le 17-12-2008 à 10:37:15  profilanswer
 

Tu tapes print quoi ?
(la ligne entière)
Et avec Python 3 ?
Si oui print devient une fonction
print('hello')
au lieu de  
print 'hello'


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  mauvais depart

 

Sujets relatifs
Formulaire upload fichier = mauvais dossier [resolu][InstallShield] Fichier copié au mauvais endroit
Creation d'un site (point de depart: zero)Point de départ pour programmer un lecteur multimedia ?
mauvais renvoi des mots avec accentsubtilité (?) en CSS - alignement mauvais dans Firefox
[C#.NET] DataGridViewComboBoxColumn, events et valeur de depart ?window.status=....mauvais index retourné dans firefox
Mauvais lancement de cookie, comportement étrange[oracle] Expression du mauvais type
Plus de sujets relatifs à : mauvais depart


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)