j’ai commencé à etudier le langage python seul , je me suis arreté sur l ex :
ecrivez un programme qui affiche une suite de 12 nombres dont chaque terme soit le triple du precedent.
la reponse de l’auteur est :
a , c = 1,1
while c < 13 :
print a ,
a , c=a*3 , c+1
priere de bien vouloir m’expliquer le fonctionnement de ce programme point par point.y a til de bons sites pour apprendre ce langage et merci bcp.
Je ne connais en rien python mais je pense pouvoir décrypter l’exemple que tu donne :
a , c = 1,1 => initialisation des deux variables à 1
while c < 13 : => tant que c est inférieur à 13 on fait :
print a , => affichage de a
a , c=a3 , c+1 [b][i]=> a=a3 et c=c+1[/i][/b]
Ce qui me tracasse dans ton programme c’est que je ne voi pas la fin de la boucle “while” et que à la fin de la ligne “print” il y a une virgule … peut être est-ce lié.
Que te donne l’éxecution de ce programme ? Je dirai que la boucle s’éxecute 13 fois avant de sortir …
Apparement il est possible de faire plusieurs affectations/opérations en une seule ligne, il faut respecter l’ordre des variables et opérations avant et après l’opérateur, le tout séparé par des virgules.
Voilà en espérant t’avoir aidé
Hello ,
python utilise l’indentation pour cela …
# init var.
a = 1
nb_iter = 12
for iter in range(nb_iter):
# indentation ...
print a , # avec la virgule, on ne passe pas à la ligne
a *= 3 # a = a * 3
avec la virgule, on ne passe pas à la ligne
tu es sur ? c = 1 , c < 13 … à méditer
Plongez au coeur de Python : diveintopython.adrahon.org/
Quelques liens pour le python :
python.org/
python.developpez.com/
python-eggs.org/
pythonfacile.free.fr/
wikipython.flibuste.net/
fr.wikibooks.org/wiki/Exemples_de_scripts_Python
A+
[quote=“Mimoza”]Je ne connais en rien python mais je pense pouvoir décrypter l’exemple que tu donne :
a , c = 1,1 => initialisation des deux variables à 1
while c < 13 : => tant que c est inférieur à 13 on fait :
print a , => affichage de a
a , c=a3 , c+1 [b][i]=> a=a3 et c=c+1[/i][/b]
Ce qui me tracasse dans ton programme c’est que je ne voi pas la fin de la boucle “while” et que à la fin de la ligne “print” il y a une virgule … peut être est-ce lié.
Que te donne l’éxecution de ce programme ? Je dirai que la boucle s’éxecute 13 fois avant de sortir …
Apparement il est possible de faire plusieurs affectations/opérations en une seule ligne, il faut respecter l’ordre des variables et opérations avant et après l’opérateur, le tout séparé par des virgules.
Voilà en espérant t’avoir aidé [/quote]
[size=150]merci pour la reponse , dans le programme on c =a3 mais toi tu as ecrit a= a3 , quelle est la vraie reponse , et merci bcp[/size]
Il y a une virgule pour séparer, python peut travailler par couple (ou plus) ça fait un peut tape-à-l’oeil, ça impressionne les néophytes
a , c=a*3 , c+1 => a=a*3 et c=c+1
en faisant a , c = on indique que l’on va appliquer une opération sur a en premier (a*3) et sur c en deuxième (c+1), au lieu de faire deux lignes clairs, on écrit tout sur une seule.
[quote=“ADcomp”]Hello ,
python utilise l’indentation pour cela …
# init var.
a = 1
nb_iter = 12
for iter in range(nb_iter):
# indentation ...
print a , # avec la virgule, on ne passe pas à la ligne
a *= 3 # a = a * 3
avec la virgule, on ne passe pas à la ligne
tu es sur ? c = 1 , c < 13 … à méditer
A+[/quote]
Ok merci de ces explications. Mais se baser sur l’identation me semble légèrement dangereux comme méthode, c’est sur que ça oblige a avoir un code propre mais quand même.
Pour le nombre de boucle j’ai écrit un peut vite en effet, 12 fois devrait suffire
Mais bon comme je l’ai dit j’ai jamais fait de python
Ça peut être pratique dans certains cas mais pas trop là.
D’ailleurs python pourrais faire ça en plus cours.
Merci ADcomp pour tes précieux liens
Pour l’instant, je n’avais que le pdf des cours de Swinnen, voilà de quoi l’enrichir…
[quote=“debianhadic”]Il y a une virgule pour séparer, python peut travailler par couple (ou plus) ça fait un peut tape-à-l’oeil, ça impressionne les néophytes
a , c=a*3 , c+1 => a=a*3 et c=c+1
en faisant a , c = on indique que l’on va appliquer une opération sur a en premier (a*3) et sur c en deuxième (c+1), au lieu de faire deux lignes clairs, on écrit tout sur une seule.[/quote]
[size=150]merci bcp , je suis debutant en python , mais c’etais le poit qui m’ rebuté, certainement je vais solliciter ton aide en etudiant ce langage . merci bcp[/size]
[size=200]YA PAS DE QUOI MAIS LA PROCHAINE FOIS BRANCHE TON SONOTONE [/size]
@ M3t4linux : pas de quoi …
@ debianhadic : +1
[size=200]JE N’ARRIVE PAS À LIRE, TU PEUX L’ÉCRIRE PLUS GROS[/size]
Super langage, ça, le Python. Je m’y suis mis, une fois, et c’est plutot cool.
Mais bon, un moment donné je me suis mis a pratiquer beaucoup de guitare, alors j’ai plus le temps.
Surtout quand tu programme, l’important c’est vraiment de comprendre ce que tu fais et tous les principes logiques qu’il y a derrière. Si tu te concentre sur les concepts, les autres langages seront plus faciles a apprendre car tu auras appris a penser logiquement, et non en python.
Et ne riez pas de sa tronche, s’il vous plait.
Ça peut être pratique dans certains cas mais pas trop là.
D’ailleurs python pourrais faire ça en plus cours.[/quote]
Donc oui il est possible de faire court :
[code]#!/usr/bin/python
a = 1
print [a*(3**i) for i in range(1, 12)][/code]
Et aucun problème d’indentation. Pour mieux comprendre il faut connaitre les “list comprehensions” qui est la bizarrerie du langage. En fait on génère une liste avec une sorte de boucle for.