Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme avec le tuto Python

help me please

Sujet résolu
16 juillet 2010 à 20:24:05

Salut à toutes et à tous,
Pour commencer, veuillez m'excuser si je ne respecte pas les règles de formes des messages car je suis nouveau ici.
Je suis depuis peut le tuto Python du site du zéro, et je suis en ce moment dans le chapitres sur les modules et les fonctions et je voulais essayer l'exemple suivant (donné dans le cours) ICI...et le problèmes est que j'ai un autre résultat bizarroïde chez moi o_O

Voici mon fichier multipli.py:

#!/home/xeo2/Python-3.1.2
# -*-coding:Utf-8 -*
"""module multipli contenant la fonction table"""

def table(nb, max=10):
    """Fonction affichant la table de multiplication par nb de
    1 * nb jusqu'à max * nb
    """
    i = 0
    while i<max:
        print(i+1 , "*" , nb , "=" , (i+1)*nb)
        i += 1


Et le fichier test.py:

#!/home/xeo2/Python-3.1.2
# -*-coding:Utf-8 -*
import os
from multipli import *

# test de la fonction table
table(3, 20)
os.system("pause")


Et enfin le résultat:


(1, '*', 3, '=', 3)
(2, '*', 3, '=', 6)
(3, '*', 3, '=', 9)
(4, '*', 3, '=', 12)
(5, '*', 3, '=', 15)
(6, '*', 3, '=', 18)
(7, '*', 3, '=', 21)
(8, '*', 3, '=', 24)
(9, '*', 3, '=', 27)
(10, '*', 3, '=', 30)
(11, '*', 3, '=', 33)
(12, '*', 3, '=', 36)
(13, '*', 3, '=', 39)
(14, '*', 3, '=', 42)
(15, '*', 3, '=', 45)
(16, '*', 3, '=', 48)
(17, '*', 3, '=', 51)
(18, '*', 3, '=', 54)
(19, '*', 3, '=', 57)
(20, '*', 3, '=', 60)
sh: pause: not found


OS: UBUNTU , version Python: 3.1.2

Alors, c’est quoi mon problème :(
  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2010 à 20:36:32

Juste que ton shell (sh) ne connaît pas 'pause'. Retire la ligne 'os.system("pause")' ou bien remplace par 'os.system("read")'.

Mieux encore: importe sys ('import sys'), puis utilise 'sys.stdin.read(1)' qui a au moins le mérite d'être portable.

Cordialement,
Vhann
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
16 juillet 2010 à 20:42:29

os.system('pause')


est réservé à windows il me semble

Pour linux, j'utilise

pause=input("pause...")


Edit: la réponse de Vhan est meilleure, je ne connaissais pas :)
  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2010 à 20:45:40

Si je reprends entièrement ton code celà s'affiche bien, à part le sh: pause : not found mais pour celà Vhann a très bien expliqué la procédure à suivre. N'empeche qu'avec ou sans le systèm pause, le code fonctionne comme il le doit chez moi. Tu utilises quel éditeur ?
  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2010 à 21:50:12

Je pense que c'est pas le problème principal qu'il avait...

Le problème, c'est l'affichage des virgules et de la parenthèse...
  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2010 à 21:56:45

Citation : Eiji Okuda

Je pense que c'est pas le problème principal qu'il avait...

Le problème, c'est l'affichage des virgules et de la parenthèse...


Exactement, car pour le "pause" je savais que ça ne marchais pas sous LINUX, alors d'autres idées ? :)
  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2010 à 22:14:16

Pour les parentheses et les virgules, c'est parce que tu affiches un couple. Tu est sans oute sur la 2.6 (ou 2.7). Sur cette version, print ne prend pas de parenthese. Donc quand tu en met, Python crois que tu créés un tuple et que tu l'affiche.

Il faut donc faire :
print taVar

#Au lieu de
print(taVar)


Et pour le os.system('pause'), c'est seulement un moyen pour empecher la fenetre de se fermer immédiatement. Puisque tu es sous linux je pense que tu n'as pas ce problème si tu lances le programme depuis la console. Sinon, puisque c'est seulement pour voir le résultat, pas la peine de s'embeter avec une fonction de sys ou de os. Un simple input() suffit.
  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2010 à 22:24:20

Citation : EPonix

Pour les parentheses et les virgules, c'est parce que tu affiches un couple. Tu est sans oute sur la 2.6 (ou 2.7). Sur cette version, print ne prend pas de parenthese. Donc quand tu en met, Python crois que tu créés un tuple et que tu l'affiche.

Il faut donc faire :

print taVar

#Au lieu de
print(taVar)




Merci pour ta réponse, mais normalement j'ai installer Python 3 comme il est montrer sur le tuto, et en plus je donne le chemin en début de mes fichiers pythons....alors, tu peut me dire pourquoi ça continue à rouler sous Python 2.6 ?! o_O
  • Partager sur Facebook
  • Partager sur Twitter
16 juillet 2010 à 23:39:33

#!/home/xeo2/Python-3.1.2

Ce chemin d'accès est étonnant, m'enfin s'il est juste ...
Voilà le chemin d'accès par défaut, il me semble : #!/usr/bin/python3.1
Du moins c'est le mien et celui par défaut je pense.
  • Partager sur Facebook
  • Partager sur Twitter
17 juillet 2010 à 11:45:55

Utilise plutôt apt-get si tu veux installer Python3 (là je parie que tu as juste téléchargé les sources sans même les compiler) :
sudo apt-get install python3

Et ensuite pour exécuter un code avec python 3 (python tout court doit être un symlink vers la 2.6 je suppose)
python3 ton_fichier.py


(ou peut-être python3.1 comme le dit max steely, essaie)
  • Partager sur Facebook
  • Partager sur Twitter
17 juillet 2010 à 12:07:48

Citation : MathX

Utilise plutôt apt-get si tu veux installer Python3 (là je parie que tu as juste téléchargé les sources sans même les compiler) :

sudo apt-get install python3


Et ensuite pour exécuter un code avec python 3 (python tout court doit être un symlink vers la 2.6 je suppose)

python3 ton_fichier.py



(ou peut-être python3.1 comme le dit max steely, essaie)



C'est bon ça marche :) , merci à vous tous de votre aide, maintenant je peut continuer le tuto tranquillement :D
  • Partager sur Facebook
  • Partager sur Twitter
28 mai 2011 à 1:12:03

Bonjour!
Pour ma part j'ajoute à la fin:
raw_input("Presser 'Entrer' pour terminer")

La fenêtre reste jusqu'à ce qu'on appuie sur 'Entrer' et on a une instruction avant de fermer le programme.
"raw_input" est une fonction "built-in" et il n'y a donc pas besoin d'importer de module (comme "os" ou "sys").

(P.S: j'utilise Python-2.7. Je ne sais pas si cela est encore valide avec la version 3.1.)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
28 mai 2011 à 9:57:15

Citation

Bonjour!
Pour ma part j'ajoute à la fin:

raw_input("Presser 'Entrer' pour terminer")


Euh... t'as vu la date?

Citation

La fenêtre reste jusqu'à ce qu'on appuie sur 'Entrer' et on a une instruction avant de fermer le programme.
"raw_input" est une fonction "built-in" et il n'y a donc pas besoin d'importer de module (comme "os" ou "sys").



oui, mais...

Citation

(P.S: j'utilise Python-2.7. Je ne sais pas si cela est encore valide avec la version 3.1.)



Eh bien non !
  • Partager sur Facebook
  • Partager sur Twitter