Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python]

Problème traduction de l'algo en langage python.

Sujet résolu
29 septembre 2009 à 21:14:17

Bonsoir à tous.

Je viens ici car j'ai vraiment du mal à transcrire des algorithmes simples en langage python.
Par exemple, j'aimerai traduire cet algorithme en python, ou cet algorithme sert à calculer une valeur absolue d'un nombre demandé par l'opérateur.

Citation : d@nz

Algo ValAbs
Variables

saisies : Nb : réel #valeur fournie par l'opérateur.
affichées : Va : réel #valeur absolue de Nb.

Début

Afficher ("Donnez le nombre dont vous voulez la valeur absolue")
Saisir (Nb)
Si Nb>=0
Va <- Nb
Sinon
Va <- -Nb
Fsi
Afficher ("La valeur absolue est",Va)

Fin



J'ai essayé de le mettre en langage python, mais impossible, étant donné des erreurs que je n'arrive pas à corriger. Voici mon script :

Citation : d@nz

print ("Donnez une valeur de x svp")
chaine = raw_input()
x = float
if x>0 :
Va=x
print ("La valeur absolue du nombre est", Va)
else:
Va=-x
print ("La valeur absolue est", Va)



Quelqu'un peut t-il m'éclairer, et si possible, traduire mon algorithme en langage python?
Merci d'avance. ;)

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
29 septembre 2009 à 21:24:22

Alors déjà mettre ton code python dans les balises python

print ("Donnez une valeur de x svp")
chaine = raw_input()
x = int(chaine) # Ton erreur vient de là
if x>0 :
    Va=x # indentation
    print ("La valeur absolue du nombre est", Va)
else:
    Va=-x
    print ("La valeur absolue est", Va)


  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2009 à 21:30:35

Oups, j'avais pas vu. Ceci dit, lorsque je veux test ton code, ça me fait ça :

Donnez une valeur de x svp
Traceback (most recent call last):
  File "C:/Documents and Settings/HP_Propriétaire/Bureau/val.py", line 2, in <module>
NameError: name 'raw_input' is not defined

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
29 septembre 2009 à 21:33:45

Tu as mis ton encodage au début de ton fichier?
  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2009 à 21:39:42

Exact ;)
Voici un screen au cas ou :

Clique.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
29 septembre 2009 à 21:45:10

Met en 1ere ligne

-*- coding :cp1252 -*-

  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2009 à 21:46:40

NameError: name 'raw_input' is not defined


Enfin, moi j'dis ça j'dis rien :-°
  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2009 à 21:48:50

Ça me met : Invalid syntax pour la première *
Je quitte le pc pour ce soir, je reviendrez demain voir les réponses, en espérant qu'il y en aient.

Merci de ton aide en tout cas. ;)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
29 septembre 2009 à 21:52:48

Je ne suis pas sous windows et je ne peux pas tester, mais sur linux le code fonctionne parfaitement.

Revérifie et si ça fonctionne pas, j'ai peur de cette ligne de code

NameError: name 'raw_input' is not defined


As-tu correctement installé python, si oui quelle version?

Sans dec je suis pratiquement sur que tu as la version 3 et dans ce cas, remplace raw_input par input.

  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2009 à 21:56:44

Pour l'encodage, il faut qu'il soit en commentaire : précèdes-le d'un #
  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2009 à 23:32:59

Citation : fred1599

Je ne suis pas sous windows et je ne peux pas tester, mais sur linux le code fonctionne parfaitement.


A mon avis c'est pas une question d'OS, mais plutôt de version de Python ;)

Il me semble qu'à partie de la version 3.0, raw_input() est renommée en input() , et l'ancienne input() est supprimée.
  • Partager sur Facebook
  • Partager sur Twitter

Blond, bouclé, toujours le sourire aux lèvres...

Anonyme
30 septembre 2009 à 6:58:54

Citation

Il me semble qu'à partie de la version 3.0, raw_input() est renommée en input() , et l'ancienne input() est supprimée.



Tout à fait LoupSolitaire, je m'en suis rendu compte un peu tard (voir mon avant-dernier post).

Le problème doit être celui-ci

;)
  • Partager sur Facebook
  • Partager sur Twitter
30 septembre 2009 à 10:57:35

Oui j'utilise la version 3.1 de python. Je réessayerai chez moi avec :

input ()

et non
raw_input ()
  • Partager sur Facebook
  • Partager sur Twitter
30 septembre 2009 à 14:02:55

Donc raw_input() et input() (des version 2.x) sont réunis en une seule fonction input() dans la version 3.0 ?


PS : très explicite le titre :p .
  • Partager sur Facebook
  • Partager sur Twitter
30 septembre 2009 à 15:26:16

Suffit de lire :

http://docs.python.org/dev/3.0/whatsnew/3.0.html

Citation : Python 3.0

PEP 3111: raw_input() was renamed to input(). That is, the new input() function reads a line from sys.stdin and returns it with the trailing newline stripped. It raises EOFError if the input is terminated prematurely. To get the old behavior of input(), use eval(input()).


  • Partager sur Facebook
  • Partager sur Twitter
30 septembre 2009 à 16:31:51

En effet, le problème venait de là. C'est donc input () et non raw_input () pour ma version de Python. Outre ceci, je remercie fred1599, qui m'a expliqué une erreur que je ne savais pas corriger, c'est à dire le : x = int (chaine).

Sinon, avant de finir, j'aurai voulu savoir l'utilité de la 1ere ligne d'encodage. En cours, notre prof nous a dit de mettre -*- coding :Ftp-8 -*- alors que fred1599 parle de -*- coding :cp1252 -*-.
J'aurai voulu savoir à quoi cela correspond et quelle est la différence entre les deux.

Merci d'avance.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
30 septembre 2009 à 17:03:23

Citation

-*- coding :Ftp-8 -*-



Cela me dit rien, je pense que tu veux dire utf au lieu de Ftp

http://fr.wikipedia.org/wiki/UTF-8

Sinon pour cp1252 ils en parlent http://pythonfacile.free.fr/python/unicode.html

  • Partager sur Facebook
  • Partager sur Twitter
30 septembre 2009 à 17:12:12

Exact, c'est bien Utf-8 et non Ftp-8 (un moment d'égarement xD)
Merci pour le lien, j'vais mater ça. J'pense que je peux clôturer. Merci à tous. ;)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
30 septembre 2009 à 17:59:27

Pour cp1252 il y a bien sur un lien wikipedia

http://fr.wikipedia.org/wiki/CP1252
  • Partager sur Facebook
  • Partager sur Twitter