#1 Le 05/08/2007, à 18:26
- Gillaume
[Résolu] gros débutant en python : besoin d'aide
Bonjour à tous,
j'ai téléchargé sur developpez.com, le tuto pour débuter sous python...
ya 18 ans que j'ai pas écrit du code,,, c'était en turbo pascal !
Bon, Python, je le sens bien !
Alors que C, C++ me semble plus difficile ...
Bon, ma question de débutant :
Je suis en plein dans la création de boucle, avec if, while,, et le résultat avec print.
Je dois ecrire une table de conversion Euro <=> Dollar.
du genre
1 euro = 1.65 dollar
2 euro = 3.30 dollar
... ...
jusqu'a 16384 euros.
==> J'ai un probleme pour afficher le résultat.
Je mets ceci
a = 0
while ( a < 16384 ):
a = a + 1
print a "euros =" a*1.65 "dollar"
et il me renvoie ceci
File "<stdin>", line 3
print a "euros =" a*1.65 "dollar"
^
SyntaxError: invalid syntax
je sens bien que ça vient des "
Vous pouvez m'aider ?
Merci
Guillaume
Dernière modification par Gillaume (Le 07/08/2007, à 13:47)
Guili Guili
Hors ligne
#2 Le 05/08/2007, à 18:50
- tylhdar
Re : [Résolu] gros débutant en python : besoin d'aide
a = 0
while ( a < 16384 ):
a = a + 1
print str(a )+"euros ="+ str(a*1.65) +"dollar"
python y'a pas mieux
Dernière modification par tylhdar (Le 05/08/2007, à 18:52)
un matériel non compatible linux est un matériel défectueux
ubuntu 10.4 sur pc1 ; debian squeeze sur pc2
Hors ligne
#3 Le 05/08/2007, à 18:51
- Hiigaran
Re : [Résolu] gros débutant en python : besoin d'aide
Bonsoir,
Quand tu affiches une phrase , il faut penser à séparer les variables (ici "a") et les chaines de caractères (ici "euros =" et "dollars")
Donc tu dois plutôt écrire :
print a, "euros =", a*1.65, "dollar"
L'intelligence des cons est une chose difficile à comprendre pour les gens intelligents.
Hors ligne
#4 Le 05/08/2007, à 18:53
- tylhdar
Re : [Résolu] gros débutant en python : besoin d'aide
un matériel non compatible linux est un matériel défectueux
ubuntu 10.4 sur pc1 ; debian squeeze sur pc2
Hors ligne
#5 Le 05/08/2007, à 18:59
- Hiigaran
Re : [Résolu] gros débutant en python : besoin d'aide
Tylhdar, à mon avis la conversion des variables en chaines de caractères est trop lourde et inutile même si elle n'est pas fausse. C'est une mauvaise habitude qu'il ne faudrait pas inculquer à un débutant (je suis moi même débutant en python , et en prog en général, et j'ai trop eu affaire à ces mauvais conseils)
L'intelligence des cons est une chose difficile à comprendre pour les gens intelligents.
Hors ligne
#6 Le 05/08/2007, à 19:19
- tylhdar
Re : [Résolu] gros débutant en python : besoin d'aide
Le problème c'est que quand on est autodidacte et pas pro, c'est dur de faire la différence entre les bonnes et les mauvaises habitudes.
Dernière modification par tylhdar (Le 05/08/2007, à 19:20)
un matériel non compatible linux est un matériel défectueux
ubuntu 10.4 sur pc1 ; debian squeeze sur pc2
Hors ligne
#7 Le 05/08/2007, à 19:43
- aleph
Re : [Résolu] gros débutant en python : besoin d'aide
print ('%i %s %f %s') % (a, 'euros=', a * 1.65, 'dollars')
#mieux à mon goût
print ('%i euros= %f dollars') % (a, a * 1.65)
#ou nouveau avec Python 2.5, théoriquement plus compréhensible
print '%(veuro)i euros= %(vdollar)f dollars' % {'veuro': a, 'vdollar': a * 1.65}
Les trois versions impriment
12 euros= 19.800000 dollars
12 euros= 19.800000 dollars
12 euros= 19.800000 dollars
Il n'y a pas mieux.
Python Library Reference 3.6.2 String Formatting Operations
Attention : a dans la boucle while est un entier
#8 Le 05/08/2007, à 19:45
- HymnToLife
Re : [Résolu] gros débutant en python : besoin d'aide
Tylhdar, à mon avis la conversion des variables en chaines de caractères est trop lourde et inutile même si elle n'est pas fausse.
C'est exactement la même chose... Réfléchis un peu, quand tu exécutes print sur une variable de type int, il faut bien qu'il la convertisse pour pouvoir l'afficher. Que la conversion se fasse avant ou après ne change strictement rien.
- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !
Hors ligne
#9 Le 05/08/2007, à 19:53
- aleph
Re : [Résolu] gros débutant en python : besoin d'aide
> HymnToLife
Non. Sans donner d'explications.
#10 Le 05/08/2007, à 19:57
- reeth
Re : [Résolu] gros débutant en python : besoin d'aide
print ('%i %s %f %s') % (a, 'euros=', a * 1.65, 'dollars') #mieux à mon goût print ('%i euros= %f dollars') % (a, a * 1.65) #ou nouveau avec Python 2.5, théoriquement plus compréhensible print '%(veuro)i euros= %(vdollar)f dollars' % {'veuro': a, 'vdollar': a * 1.65}
Peux-tu expliquer pourquoi l'utilisation d'un dictionnaire est plus compréhensible? C'est dû à la façon de programmer en python? C'est une spécificité de la 2.5?
Attention : a dans la boucle while est un entier
Est-ce que cela change quelquechose au niveau des variables? Python est typé dynamiquement, donc on ne devrait pas vraiment s'en préoccuper non?
Merci
Hors ligne
#11 Le 05/08/2007, à 20:27
- HymnToLife
Re : [Résolu] gros débutant en python : besoin d'aide
> HymnToLife
Non. Sans donner d'explications.
Si. Et en donnant une explication.
print evaluates each expression in turn and writes the resulting object to standard output (see below). If an object is not a string, it is first converted to a string using the rules for string conversions. The (resulting or original) string is then written.
http://docs.python.org/ref/print.html
C'est pas bien malin de faire celui qui sait tout quand on ne sait en fait pas grand-chose. Après, on a l'air con quand on tombe sur quelqu'un qui sait...
Dernière modification par HymnToLife (Le 05/08/2007, à 20:29)
- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !
Hors ligne
#12 Le 05/08/2007, à 22:05
- aleph
Re : [Résolu] gros débutant en python : besoin d'aide
> reeth
> Peux-tu expliquer pourquoi l'utilisation d'un dictionnaire est plus compréhensible?
*Je* ne trouve pas cela nettement plus compréhensible, c'est pour cela que j'ai utilisé le mot "théoriquement". Depuis son implémentation, je n'ai pas souvenir de l'avoir vu très souvent.
> C'est dû à la façon de programmer en python?
> Probablement qu'on a pensé que c'était plus "pythonic" lors de son implémentation.
> C'est une spécificité de la 2.5?
Non, ici mea culpa. C'est bien plus ancien que je le pensais. Je viens d'essayer avec Python 2.4 (donc 2.4.0), Python 2.3.4 et Python 2.2.1 sans problème.
> Est-ce que cela change quelquechose au niveau des variables? Python est typé dynamiquement, donc on ne devrait pas vraiment s'en préoccuper non?
Ce n'est pas le problème ici. La variable itérante est de type int et par conséquent dans le "print statement" que j'ai proposé on utilise un %i et non un %f (ou %e, %g). D'où ma remarque.
-------
> HymnToLife
Il est évident qu'un "print statement" imprime un string. La question est de savoir quand, où et comment la conversion d'un nombre en string se fait. Pour les types de base comme les int, float, ou maintenant les strings (puisqu'ils sont devenus une class), la représentation en caractère s'effectue au niveau de la méthode __repr__ via repr().
> C'est pas bien malin de faire celui qui sait tout quand on ne sait en fait pas grand-chose. Après, on a l'air con quand on tombe sur quelqu'un qui sait...
Ce n'est pas mon intention, je pense simplement que pour aider Guillaume, il est inutile de rentrer dans trop de détails. La méthode que j'ai proposée est une des meilleurs. Point. Même si un simple
print fait bien souvent l'affaire.
Ceci dit, j'ai aussi été il y quelques années débutant (Python 1.5.2, CNRI). Pas plus intelligent, simplement un peu plus expérimenté.
-----
Pour ceux qui ne le savent pas, dans la prochaine version le "statement" print disparaîtra au profit d'une fonction. Les questions de format sont d'aileurs très discutées.
#13 Le 05/08/2007, à 22:18
- HymnToLife
Re : [Résolu] gros débutant en python : besoin d'aide
En tout cas, dire que "la conversion en chaînes de caractères est trop lourde", comme l'a fait Hiigaran, est faux. Ces deux boucles :
a = 0
while ( a < 16384 ) :
a = a + 1
b = a*1.65
print a, "euros =", b, "dollars"
et
while ( a < 16384 ) :
a = a + 1
b = a*1.65
print "%i euros = %f dollars" % (a, b)
mettent des temps comparables à s'exécuter, y compris pour des a allant jusqu'à 10^6.
- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !
Hors ligne
#14 Le 05/08/2007, à 22:25
- Hiigaran
Re : [Résolu] gros débutant en python : besoin d'aide
Hiigaran a écrit :Tylhdar, à mon avis la conversion des variables en chaines de caractères est trop lourde et inutile même si elle n'est pas fausse.
C'est exactement la même chose... Réfléchis un peu, quand tu exécutes print sur une variable de type int, il faut bien qu'il la convertisse pour pouvoir l'afficher. Que la conversion se fasse avant ou après ne change strictement rien.
C'est pas très logique ce que tu dis : si print convertit une variable int en une string, pourquoi alors demander par la suite l'opération identique, ça n'a aucun sens et c'est comme je le disait lourd et inutile.
Edit:
Pour HymnToLife : mon "trop lourd" est un peu exagéré, c'est vrai
Dernière modification par Hiigaran (Le 05/08/2007, à 22:30)
L'intelligence des cons est une chose difficile à comprendre pour les gens intelligents.
Hors ligne
#15 Le 05/08/2007, à 22:28
- HymnToLife
Re : [Résolu] gros débutant en python : besoin d'aide
HymnToLife a écrit :Hiigaran a écrit :Tylhdar, à mon avis la conversion des variables en chaines de caractères est trop lourde et inutile même si elle n'est pas fausse.
C'est exactement la même chose... Réfléchis un peu, quand tu exécutes print sur une variable de type int, il faut bien qu'il la convertisse pour pouvoir l'afficher. Que la conversion se fasse avant ou après ne change strictement rien.
C'est pas très logique ce que tu dis : si print convertit une variable int en une string, pourquoi alors demander par la suite l'opération identique, ça n'a aucun sens et c'est comme je le disait lourd et inutile.
Tu as une variable de type int. Tu appelles print dessus. Python convertit en string et affiche.
Tu as une variable de type int. Tu la convertis en string. Tu appelles print dessus. Python l'affiche.
Différence ?
- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !
Hors ligne
#16 Le 05/08/2007, à 22:33
- Hiigaran
Re : [Résolu] gros débutant en python : besoin d'aide
La différence, c'est que tu fais toi même (permet moi l'expression) ce que Python peu faire pour toi (cette 'fonction' est là pour ça)
L'intelligence des cons est une chose difficile à comprendre pour les gens intelligents.
Hors ligne
#17 Le 05/08/2007, à 22:36
- HymnToLife
Re : [Résolu] gros débutant en python : besoin d'aide
Exactement. Et le faire toi-même permet de contrôler plus finement le processus. Par exemple, pour un nombre non-entier (comme c'est le cas ici), pouvoir contrôler le nombre de décimales affichées, la notation utilisée, la méthode d'arrondi, etc. Et puis, perso, je trouve que
print "%i euros = %f dollars" % (a, b)
est plus élégant que
print a, "euros =", b, "dollars"
- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !
Hors ligne
#18 Le 05/08/2007, à 22:45
- Hiigaran
Re : [Résolu] gros débutant en python : besoin d'aide
Je pense que chacun à sa façon de coder. Mais il ne faut pas oublier que Guillaume est un débutant et il ne doit certainement pas chercher à faire du code élégant, mais plutôt du code simple.
L'intelligence des cons est une chose difficile à comprendre pour les gens intelligents.
Hors ligne
#19 Le 05/08/2007, à 22:52
- /b/nt/
Re : [Résolu] gros débutant en python : besoin d'aide
j'ai commencé à utiliser Python. quel IDE me conseillez-vous ? j'aime pas voir le résultat sur un terminal .
Dernière modification par /b/nt/ (Le 17/08/2007, à 01:24)
#20 Le 05/08/2007, à 23:07
- Gillaume
Re : [Résolu] gros débutant en python : besoin d'aide
Je pense que chacun à sa façon de coder. Mais il ne faut pas oublier que Guillaume est un débutant et il ne doit certainement pas chercher à faire du code élégant, mais plutôt du code simple.
Merci les gars
Je continue sur ma lancée.
ça me convient très bien :
Pour mon niveau de deb.
print a, "euros =", a*1.65, "dollar"
Guili Guili
Hors ligne
#21 Le 05/08/2007, à 23:13
- HymnToLife
Re : [Résolu] gros débutant en python : besoin d'aide
j'ai commencé à utiliser Python. quel IDE me conseillez-vous ? j'aime pas voir le résultat sur un terminal .
Il y a idle, qui est dans les dépôts :
sudo apt-get install idle
Dernière modification par HymnToLife (Le 05/08/2007, à 23:17)
- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !
Hors ligne
#22 Le 05/08/2007, à 23:29
- /b/nt/
Re : [Résolu] gros débutant en python : besoin d'aide
Merci HymnToLife pour votre réponse.
Par ailleurs je voudrais savoir comment utiliser le terminal avec gedit?
Dernière modification par /b/nt/ (Le 06/08/2007, à 00:13)
#23 Le 05/08/2007, à 23:52
- HymnToLife
Re : [Résolu] gros débutant en python : besoin d'aide
Utiliser le terminal avec Gedit ? Gedit est un éditeur de texte, si je ne m'abuse...
- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !
Hors ligne
#24 Le 06/08/2007, à 00:18
- /b/nt/
Re : [Résolu] gros débutant en python : besoin d'aide
D'abord idle a bien fonctionné.
Quant à gedit, j'ai cru qu'on peut compiler dans un terminal un fichier gedit ( contenant un programme écrit python)
Dernière modification par /b/nt/ (Le 06/08/2007, à 01:27)
#25 Le 06/08/2007, à 06:31
- reeth
Re : [Résolu] gros débutant en python : besoin d'aide
On créé un fichier avec Gedit. On l'enregistre en nom.py, puis on se déplace dans le répertoire où il est contenu, cd /home/<utilisateur>/prog_python/nom.py par exemple, puis un petit chmod +x nom.py pour pouvoir l'exécuter (il faut penser à ajouter #!/usr/bin/python en haut du fichier). Enfin ./nom.py pour lancer le programme. Tu peux aussi faire "python nom.py" pour le lancer.
Hors ligne