la meme expression est interpretée de 2 façons différentes !!

la meme expression est interpretée de 2 façons différentes !! - Python - Programmation

Marsh Posté le 15-07-2010 à 16:31:32    

Bonjour,
voila je développe une application avec des calculs de coordonnées mais je tombe sur un truc vraiment bizzarre
Cette expression :

Code :
  1. print int((((max_y*1024.)/6378137.)*180./3.141592654))


vaut bien 44 comme prévu (max_y vaut environ 4800) et a la ligne suivante, cette expression :

Code :
  1. coordonnees[0] = int((((max_y*1024.)/6378137.)*180./3.141592654))
  2. print coordonnees[0]


vaut 2674 !!!!!  :??:  :??:  :??:  
Alors la je suis complètement perdu !! je n'est aucune ligne entre les deux et j'ai fait plusieurs fois copier coller pour vérifier que j'ai bien la même expression !!
Si quelqu'un comprend !! :??:  :??:  :??:

Reply

Marsh Posté le 15-07-2010 à 16:31:32   

Reply

Marsh Posté le 15-07-2010 à 17:39:27    

Bonjour,
 
 
 
Sur mon ordi, le code suivant  

Code :
  1. max_y = 4800
  2. print max_y
  3. print int((((max_y*1024.)/6378137.)*180./3.141592654))
  4. coordonnees = [9,34,24]
  5. coordonnees[0] = int((((max_y*1024.)/6378137.)*180./3.141592654))
  6. print coordonnees[0]
  7. print max_y


 
donne
 
4800
44
44
4800

 
Que donne ce code de 7 lignes sur ton ordi ?
 
 
 
 
 
 
 
N’y a-t-il vraiment aucune instruction entre  
 

Code :
  1. coordonnees[0] = int((((max_y*1024.)/6378137.)*180./3.141592654))


 
et  
 

Code :
  1. print coordonnees[0]


 
dans ton code ???


Message édité par eyquem le 15-07-2010 à 17:40:06
Reply

Marsh Posté le 15-07-2010 à 19:44:01    

Citation :


N’y a-t-il vraiment aucune instruction entre  
 

Code :
  1. coordonnees[0] = int((((max_y*1024.)/6378137.)*180./3.141592654))


 
et  
 

Code :
  1. print coordonnees[0]


 
dans ton code ???


Merci de m'aider. Le script que tu m'a donné marche dans un script à part mais si je l'insère dans mon script, il ne marche plus.
quand j'ai vu ce problème, j'ai éliminer tout les appels aux fonction ... bref toutes les lignes entre.
J'ai aussi essayé ça :

Code :
  1. max_y = 4800
  2. print max_y
  3. print int((((max_y*1024.)/6378137.)*180./3.141592654))
  4. coordonnees = [9,34,24]
  5. a=int((((max_y*1024.)/6378137.)*180./3.141592654))
  6. print a
  7. coordonnees[0] = a
  8. print coordonnees[0]
  9. print max_y


et sa me donne :
4800
44
44
2674
4800
donc je pense que le problème vient de la ligne ou j'assigne la valeur à ma liste.
Je vais essayer de réinstaller python, on sait jamais.
Je te tiens au courant. Merci

Reply

Marsh Posté le 15-07-2010 à 20:35:42    

Re, Je viens de réinstaller python et sa marche.
J'avait eu un virus donc je pense que sa venait de là. bref c'est réglé.
Je crois qu'il va falloir que je passe sous linux !! :lol:  
Merci de ton aide eyquem.

Reply

Marsh Posté le 15-07-2010 à 20:37:41    

Citation :

Le script que tu m'a donné marche dans un script à part


 
Donc ça ne sert à rien de réinstaller Python, ce n’est pas lié à des causes aussi haut placées que le fonctionnement fondamental de Python.
 
 

Citation :

mais si je l'insère dans mon script, il ne marche plus.


Donc il y a quelque chose dans ton script qui produit le problème. Il faut chercher dans ton script, pas à l’extérieur.
 
 
 
 
 
Je verrais bien la procédure suivante:
 
tu pars de ton script complet et tu élimines progressivement des portions.
Évidemment, il faut que chaque élimination laisse le script fonctionnel, et après chaue élimination tu lances une exécution.
 
Il faut espérer qu’arrivé à une certaine élmimination , le comportement foireux disparaitra, ce qui localisera la cause du problème dans le script.


Message édité par eyquem le 15-07-2010 à 20:44:27
Reply

Marsh Posté le 15-07-2010 à 20:44:05    

Ah flute, je n’ai pas vu ton message. Ça m’aurait évité d’écrire une bêtise.  :(  
 
Je suis ébahi qu’une réinstallation ait corrigé le problème.  :ouch:  
Et si c’était dû à un virus, j’aimerais qu’on m’explique comment un virus arrive à produire un tel effet.
 
 
 
Mais enfin, constatons: le pb est réglé. Ouf

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed