RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Comprendre l'instruction WHILE.

Forum : PYTHON
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ PYTHON

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGE : [1]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM PYTHON

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
pcsystemd
Nouveau membre
Inscrit : 19/02/2008
Messages : 5
Message
#149624
Posté le 25/02/08 à 07:31
Bonjour
j'apprend Python et a ce propos je suis le tutorial de Gérard Swinnen : Apprendre à programmer avec Python.

Je suis dans le tuto a la boucle While donc au début mais je suis bloqué avec trois des exercices et je ne veux pas allé plus loin tant que je n'ai pas bien compris.

Aucun dit :
Exercices :

4.2. Écrivez un programme qui affiche les 20 premiers termes de la table de multiplication par 7.

4.3. Écrivez un programme qui affiche une table de conversion de sommes d'argent exprimées en euros, en dollars canadiens. La progression des sommes de la table sera « géométrique »,
comme dans l'exemple ci-dessous :
1 euro(s) = 1.65 dollar(s)
2 euro(s) = 3.30 dollar(s)
4 euro(s) = 6.60 dollar(s)
8 euro(s) = 13.20 dollar(s)
etc. (S'arrêter à 16384 euros)

4.4. Écrivez un programme qui affiche une suite de 12 nombres dont chaque terme soit égal au triple du terme précédent.


Pour le dernier exercice le 4.4, j'ai essayé ce qui suit mais est ce que cela est vraiment correct?


>>> a, b, c = 3, 3, 3 >>> while c < 300000 : ... print b, ... a, b, c = b, a*b, c*3 ... 3 9 27 243 6561 1594323 10460353203 16677181699666569 174449211009120179071170507 2909321189362570808630465826492242446680483 507528786056415600719754159741696356908742250191663887263627442114881


Est il possible que quelq'un m'explique les deux premiers exercices et m'indique si ce que j'ai fait pour le troisième et la bonne façon de procéder.

Merci

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

linkin_pc
Admin Projet
Superviseur :
- Méthodologie.
Modérateur :
- Flex
Chef de projet(s) :
- Time Counter
- Time Counter Ad.
- Let Us Share

Avatar de linkin_pc
Inscrit : 06/10/2006
Messages : 320
Message
#149629
Posté le 25/02/08 à 09:05
Salut.
Tu voudrais que quelqu'un t'explique tous ca dans quel sens ? qu'il te fournisse des programmes python ou qu'il t'explique juste ce que t'as à faire ?

Si c'est la deuxieme solution, je vais essayer /

c'est simple, pour le premier tu n'as qu'à faire une boucle allant de 1 à 20 et à chaque fois tu écris le résultat * 7

i <- 1;
tant que i < 20 faire
ecrire(i*7);
i<- i+1;
finfaire

pour ce qui est du deuxieme :

S <- 16 384;
ecrire ("1 euro = 1.65 dollar"); somme <- 0;
i <- 2;
tant que i < S faire
somme <- i * 1.65;
i <- i*2;
ecrire (i + "euro = "+ somme +" dollar");
finfaire;

c'est assez simple de le coder en python. mais bon voila le principe t'as qu'à coder et ca ira.

A+
__________________________
A partir du 14 Mars à 08h43, je passe en mode Flex ....
Le code..............
Ya rien de mieux Ke le kod............

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

pcsystemd
Nouveau membre
Inscrit : 19/02/2008
Messages : 5
Message
#149646
Posté le 25/02/08 à 11:20
Bonjour et merci pour ces explications : effectivement pour répondre a ta question je ne souhiate pas du tout fait mais je souhaite comprendre .

Quand je saisis ton premier code il ne m'affiche pas les 20 premiers termes mais c'est peut etre moi qui est mal compris:


>>> i = 7 >>> while i < 20 : ... print (i*7); ... i = i+1; ... 49 56 63 70 77 84 91 98 105 112 119 126 133


Pour ce qui est du deuxième code j'ai une erreur également :


>>> s = 16384 >>> print ("1 euro = 1.65 dollar");somme = 0; 1 euro = 1.65 dollar >>> i = 2; >>> while i < S : ... somme = i*1.65; ... i = i*2; ... print (i+ "euro = "+ somme + "dollar"); ... Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'S' is not defined


Merci

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

linkin_pc
Admin Projet
Superviseur :
- Méthodologie.
Modérateur :
- Flex
Chef de projet(s) :
- Time Counter
- Time Counter Ad.
- Let Us Share

Avatar de linkin_pc
Inscrit : 06/10/2006
Messages : 320
Message
#149704
Posté le 25/02/08 à 17:20
Salut
c'est plus que normal qu'il ne t'affiche pas les résultats escomptés.

Tiens regarde tes codes :
- dans le premier code tu fais : i = 7;
c'est pas ce que tu dois faire. Fais plutot i = 1; et ca marche...

- dans ton deuxieme code :
tu appelles une valeur S qui n'est définie nulle part. tu as bien déclaré s = 16 384 mais là c'est un "s minuscule". change simplement "s" par "S" et ca marche comme sur des roulettes.

Alors je crois que ca va. j'ai testé et tout marche bien. alors sois juste attentif et concentré.
A+
__________________________
A partir du 14 Mars à 08h43, je passe en mode Flex ....
Le code..............
Ya rien de mieux Ke le kod............

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

pcsystemd
Nouveau membre
Inscrit : 19/02/2008
Messages : 5
Message
#149714
Posté le 25/02/08 à 20:12
Désolé, pour ces fautes d\'inattention et merci encore. Donc je modifie mais j'ai toujours une erreur :


>>> S = 16384 >>> print ("1 euro = 1.65 dollar");somme = 0; 1 euro = 1.65 dollar >>> i = 2; >>> while i < S: ... somme = i*1.65; ... i = i*2; ... print (i+ "euro = "+ somme + "dollar"); ... Traceback (most recent call last): File "<stdin>", line 4, in ? TypeError: unsupported operand type(s) for +: 'int' and 'str'

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

linkin_pc
Admin Projet
Superviseur :
- Méthodologie.
Modérateur :
- Flex
Chef de projet(s) :
- Time Counter
- Time Counter Ad.
- Let Us Share

Avatar de linkin_pc
Inscrit : 06/10/2006
Messages : 320
Message
#149721
Posté le 26/02/08 à 06:04
salut

Rassures toi que l'instruction "print (i+ "euro = "+ somme + "dollar"); " est valable.
Si c'est pas le cas c'est cela qui bloque ton programme. Sinon j'ai aucune idée à toi de voir.
__________________________
A partir du 14 Mars à 08h43, je passe en mode Flex ....
Le code..............
Ya rien de mieux Ke le kod............

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

pcsystemd
Nouveau membre
Inscrit : 19/02/2008
Messages : 5
Message
#149779
Posté le 27/02/08 à 08:17
Bonjour,

voila j'ai enfin le bon code :



>>> S = 16384 >>> print ("1 euro = 1.65 dollar");somme = 0 1 euro = 1.65 dollar >>> i = 2 >>> while i < S: ... somme = i*1.65; ... i =i*2 ... print (i.__str__()+ "euro = %i dollar" % somme) ... 4euro = 3 dollar 8euro = 6 dollar 16euro = 13 dollar 32euro = 26 dollar 64euro = 52 dollar 128euro = 105 dollar 256euro = 211 dollar 512euro = 422 dollar 1024euro = 844 dollar 2048euro = 1689 dollar 4096euro = 3379 dollar 8192euro = 6758 dollar 16384euro = 13516 dollar


Merci beaucoup pour ton aide. A+

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

mouton
Nouveau membre
Inscrit : 18/02/2008
Messages : 6
Message
#150070
Posté le 05/03/08 à 19:16
Il me semble qu'il y ait plus simple pour le 3e algorithme.


En fait je ne vois pas trop comment C est choisi dans ton code.

On te demande 12 nombres, pas plus, pas moins. Tu vas donc effectuer 12 fois la même opération. A savoir afficher un nombre, et le multiplier par trois.

3 possibilités s'offrent à toi :
- La plus simple est dans ce cas -ci d'utiliser une boucle FOR, car quelque soit le nombre d'origine, tu ne feras jamais plus ni moins de 12 boucles, mais ce n'est pas le sujet ici.
- Puisque tu effectue 12 opérations, on va creer une Condition qui sera vraie pendant 12 boules, et fausse à la 13e :
On initialise i à la valeur 1
On augmente i de 1 à chaque boucle.
Une fois finie la 12e boucle : i = 13. On doit alors trouver une condition vraie si i est entre 1 et 12, fausse si i = 13
La condition est donc i<=12.

numinit = 1 # c'est le numéro qui sera multiplié par 3 à chaque boucle. i=1 #On initialise i à 1 While i<=12: # Tant que i est inférieur à 12 i=i+1 print(numinit) numinit=3*numinit #FIN


-Dernier moyen simple, sans utiliser d'indice i
Puisque tu sais que le dernier nombre que tu vas afficher est
3*3*3*3*3*3*3*3*3*3*3*numero initial = 3^11 * numero initial

Tu peux tout simplement t'arréter une fois que ton numéro est égal à 3^11 * numero initial.

La condition est donc Tant que numinit<> 3*3*3*3*...*3*numinitial

Voila voila, en espérant avoir aidé a faire comprendre ce qu'est un while. Pour l'utiliser il suffit de trouver la bonne condition d'arrêt.
__________________________
Ceci n'est rien d'autre que la fin du message. A bientôt.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM PYTHON



    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.