Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/08/2007, à 19: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 ! big_smile

Bon, Python, je le sens bien !
Alors que C, C++ me semble plus difficile ... neutral

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 ?  smile
Merci
Guillaume

Dernière modification par Gillaume (Le 07/08/2007, à 14:47)


Guili Guili

Hors ligne

#2 Le 05/08/2007, à 19: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 tongue

Dernière modification par tylhdar (Le 05/08/2007, à 19: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, à 19: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, à 19:53

tylhdar

Re : [Résolu] gros débutant en python : besoin d'aide

sad


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, à 19: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, à 20: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, à 20: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, à 20: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, à 20:45

HymnToLife

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.


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#9 Le 05/08/2007, à 20:53

aleph

Re : [Résolu] gros débutant en python : besoin d'aide

> HymnToLife

Non. Sans donner d'explications.

#10 Le 05/08/2007, à 20:57

reeth

Re : [Résolu] gros débutant en python : besoin d'aide

aleph a écrit :
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?

aleph a écrit :

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, à 21:27

HymnToLife

Re : [Résolu] gros débutant en python : besoin d'aide

aleph a écrit :

> 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, à 21:29)


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#12 Le 05/08/2007, à 23: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, à 23: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, à 23:25

Hiigaran

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.


Edit:
Pour HymnToLife : mon "trop lourd" est un peu exagéré, c'est vrai roll

Dernière modification par Hiigaran (Le 05/08/2007, à 23:30)


L'intelligence des cons est une chose difficile à comprendre pour les gens intelligents.

Hors ligne

#15 Le 05/08/2007, à 23:28

HymnToLife

Re : [Résolu] gros débutant en python : besoin d'aide

Hiigaran a écrit :
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, à 23: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, à 23: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, à 23: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, à 23: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, à 02:24)

#20 Le 06/08/2007, à 00:07

Gillaume

Re : [Résolu] gros débutant en python : besoin d'aide

Hiigaran a écrit :

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 big_smile
Je continue sur ma lancée.

ça me convient très bien :
Pour mon niveau de deb. smile

print a, "euros =", a*1.65, "dollar"

Guili Guili

Hors ligne

#21 Le 06/08/2007, à 00:13

HymnToLife

Re : [Résolu] gros débutant en python : besoin d'aide

/b/nt/ a écrit :

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 06/08/2007, à 00:17)


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#22 Le 06/08/2007, à 00: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, à 01:13)

#23 Le 06/08/2007, à 00: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, à 01: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, à 02:27)

#25 Le 06/08/2007, à 07: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