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.
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............
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
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............
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'
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............
>>> 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
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.