Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 05-01-2021 14:20:20

Lisou30000
Membre
Inscription : 06-12-2020
Messages : 54

Devoir python

Bonjour j’ai un devoir à faire et j’aimerais un peu d’aide svp !

Dernière modification par Lisou30000 (05-01-2021 14:21:26)

Hors ligne

#2 05-01-2021 14:23:16

Lisou30000
Membre
Inscription : 06-12-2020
Messages : 54

Re : Devoir python

J’aimerais envoyer une photo comment faire ?

Hors ligne

#3 05-01-2021 14:49:07

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 988

Re : Devoir python

Re,

1. Déposer ta photo là-bas : https://www.cjoint.com
2. Copier le code que tu vas obtenir ele coller dans ton prochain message : on ira la voir !

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#4 05-01-2021 18:07:10

Devoir
Invité

#5 05-01-2021 18:31:35

Devoir
Invité

Re : Devoir python

1)a) après l’exécution de l’algorithmique je trouve d=55 et D=245
Je ne comprends cette phrase « interprétez les deux valeurs ainsi obtenues dans le cadre du voyage d’Aurélien »

#6 05-01-2021 18:37:49

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 988

Re : Devoir python

Bonsoir,

Alors qu'as-tu fait ?
Et essaie de ne pas me répondre : j'y comprends rien !

Q1.
a) Quelles valeurs contiennent d et D après exécution de l'algorithme 1 ?
b) Quelles valeurs contiennent n, d et D après exécution de l'algorithme 2 ?

On laisse de côté les tableaux pour l'instant.

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#7 05-01-2021 18:55:04

Devoir
Invité

Re : Devoir python

d contient le nombre de km soit 55 après l’exécution de l’algo 1
Et D contient 245 mais je n’arrive pas à voir à quoi il correspond

#8 05-01-2021 18:56:29

Devoir
Invité

Re : Devoir python

Puis dans l’algo 2
n contient le nombre de jour
d le nombre de km
et D je ne sais toujours pas du coup

#9 05-01-2021 20:58:29

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 988

Re : Devoir python

Re,

En relisant la première phrase et en analysant l'algorithme, on s'aperçoit que
- n c'est le nombre jours
- avant modification  de d par d+5, c'est la distance parcourue le jour i.
  Après modification par d = d+5, d sera la distance parcourue le lendemain
- D c'est la distance totale parcourue depuis le départ.

N-B
Les algorithmes sont totalement indépendants du langage de programmation
Avec n=7.
En Python, si tu traduis
Pour i allant de 1 à n,
par :
for i in range(1, n):
tu auras la surprise de constater que i s'arrête à 6...
Donc si on veut réellement aller de 1 à n, il faut écrire for i in range(1,n+1):

Revenons à nos moutons
Algo 1. Exécution à la main (sans Python)
i= 1  (jour 1)
D = 0 + 20
d = 25
d augmente de 5 chaque jour, c'est à dire : chaque jour la distance journalière est supérieure de 5 km à celle celle de la veille, sauf que le 1er jour, elle n'augmente pas par rapport à la veille. En effet la veille du départ, tu n'étais pas encore partie, tu n'avais encore rien parcouru du tout.
L'algorithme est incorrectement exprimé :
ce ne devrait pas être :
chaque jour il parcourt 5 km de plus que la veille,
mais
chaque jour, à partir du 2e, il parcourt 5 km de plus que la veille,
Donc, reprenons le 2e jour
i =2
D = 20 + 25 = = 45 km
distance d qui sera parcourue le 3e jour (et qui sera ajoutée à D) : d= 25 +5  = 30 km

i=3 (3e jour)
Distance totale D après 3 jours : D = 45 + 30 = 75 km
distance d qui sera parcourue le 4e jour (et qui sera ajoutée à D) : d= 30 + 5 = 35 km
------------------------------------------------------------------------------------------------------

Si tu regardes l'algorithme tel qu'il est écrit
jour 1 :
D = 0 + 20 = 20 (parce qu'il avait prévu que le 1er jour, il parcourrait 20 km)
d  = 20 + 5 = 25 qui est le nombre de km qui seront parcourus le lendemain

L'algorithme est incorrectement exprimé :On devrait écrire :
n <--- 7
D <--- 0
d <--- 20
Pour i allant de 1 à n:
     A partir du 2e jour : d <--- d+5
     D <--- D + d

parce que ce ne devrait pas être :
chaque jour il parcourt 5 km de plus que la veille,
mais
chaque jour, à partir du 2e, il parcourt 5 km de plus que la veille,

Le programme Python correspondant serait :

n=7
D=0
d=20
for i in range(1,n+1):
    if i >= 2:
        d = d+5
    D = D + d

--------------------------------------------------------------------
Donc, si je suis bêtement l'algo tel qu'il est écrit, j'obtiens :
i=1 jour 1
D = 0+20 = 20 km
d = 20+5 = 25  km (distance qui sera parcourue le jour 2 et qui sera ajoutée au total D)

i=2 jour 2
D = 20+25 = 45 km
d = 25+5 = 30  km (distance qui sera parcourue le jour 3 et qui sera ajoutée au total D)

i=3 jour 3
D = 45+30 = 75  km
d = 30+5 = 35 km (distance qui sera parcourue le jour 4 et qui sera ajoutée au total D)

J'ai le même souci avec l'algorithme 2.... le d est toujours le nombre de km qui seront parcourus le lendemain....
n    1      2    3
D  20    45   75
d  25    30    35

Tu comprends ou pas ?

Elle est où cette fonction durée ?

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#10 05-01-2021 21:50:01

Devoir
Invité

Re : Devoir python

J’ai bien compris maintenant mais cela me se le bizarre que mon prof ce soit trompé sur l’exercice.
Je comprends alors que d contient t la distance parcourue  le jour suivant, D est le totale des distance parcourue depuis le 1er jour et n est le jour.

#11 05-01-2021 22:01:35

Devoir
Invité

Re : Devoir python

Pour répondre à la question a) Donc dans le cadre de son voyage, Aurélien aura parcourue 50 km ce 7 eme jour et aura cumulé en tout 245km depuis le début de son voyage. C’est bien cela?
Puis pour répondre à la question b) Il aura parcourue 70 km le 11eme jour et aura cumulé depuis le début de son voyage 495 km. Toujours bon?

#12 05-01-2021 22:47:59

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 988

Re : Devoir python

Salut,

Non, ton prof ne s'est pas trompé, ce n'est pas lui l'auteur de l'exercice. C'est un sujet copié dans un livre.
Et même si c'est lui qui s'est trompé, il faut bien que tu comprennes que l'algorithmique et la programmation Python sont deux activités toutes récentes et que rares sont les profs (de maths) qui s'y intéressaient déjà avant que ce ce soit dans les programmes.
Donc la majorité n'est pas très bien formée (ils n'y peuvent rien) et bien trop vite.
Question a) d'accord.
Avec le programme modifié que j'ai proposé on retrouve bien 245 km et 50 km le 7e jour.
Parce que l'algo 1, tel qu'il est écrit annonce 55 km dans ses calculs du 7e jour, alors que 55 km c'est pour le 8e.
Et donc, en réalité, il faut aller chercher le d du 6e jour (50 km) pour pouvoir l'ajouter au total provisoire des 6 premiers jours et D = 245 km.
Et si le voyage dure 7 jours, le 7e jour, il est terminé (j'enfonce un e porte ouverte) et dans ce cas, il est ridicule de calculer d pour le 8 jour...

question b) Pas d'accord.  sauf pour 70.
Il lui faut 12 jours pour dépasser 500 km
Au 11e jour il aura parcouru 495 km et 495 < 500 donc la condition est toujours vérifiée.
Elle ne devient fausse et Tant que D < 500 est encore vrai.
Le voyage dure 1 jour de plus et là, D ayant dépassé 500 km, le programme s'arrête et le voyage avec :
n   D  d
1 20 25        20 < 500 ? Oui, on continue
2 45 30        45 < 500 ? Oui, on continue
3 75 35        75 < 500 ? Oui, on continue
4 110 40
5 150 45
6 195 50
7 245 55
8 300 60
9 360 65
10 425 70   425 < 500 ? Oui, on continue.
11 495 75   495 < 500 ? Oui, on continue.
12 570 80   570 < 500 ? Non ? Arrêt du programme.

Ok ?

A suivre (demain)...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#13 05-01-2021 23:25:35

Devoir
Invité

Re : Devoir python

pour répondre à la question b) Il aura parcourue 75 km le 12eme jour et aura cumulé depuis le début de son voyage 570 km. Toujours bon?

#14 06-01-2021 08:22:13

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 988

Re : Devoir python

Re,

Cette fois d'accord.
Je repose ma question :
Où est la fonction "placardée sur le mur de la classe" ou qui t'aurait été envoyée pour que tu la complètes ?

Examens médicaux ce matin.
Je reviens au clavier dès que possible.

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#15 06-01-2021 08:59:42

Devoir
Invité

Re : Devoir python

Bonjour je n’ai pas de fonction mais je vous aie envoyé le sujet, j’ai que cet algorithme.

#16 06-01-2021 14:31:24

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 988

Re : Devoir python

Re-bonjour

Question 1.c
Modifier un des des 2 algorithmes...
Je modifie l'algo 2
n <--- 0
D <-- 0
d <-- 20
Tant que D<2900:
    n <-- n+1
    D <-- D+d
    d  <-- d+5

Tu dois pouvoir répondre à la question : quelle variable... etc ?

Question 2
Comment vas-tu compléter la fonction durée si tu n'as pas en ta possession cette fonction ?
Très bizarre...
Mais ce n'est pas grave, je peux en écrire une...
Par exemple, avec passage des valeurs des argument a,b,L et récupération puis affichage des résultats demandés :

def duree(a,b,L):
    n=1
    D=a
    while D<L:
        n=n+1
        a=a+b
        D=D+a
    trop = D-L
    a=a-trop
    return n,a

n,a = duree(20,5,2900)
print("Durée du voyage d'Aurélien :",n,"jours")
print("Distance parcourue le dernier jour:",a,"km")

Voilà ce que ça donne :

Durée du voyage d'Aurélien : 31 jours
Distance parcourue le dernier jour: 125 km

Questions ?

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#17 06-01-2021 15:32:04

Devoir
Invité

Re : Devoir python

Ah oui je change D<500 en D<2900 et c’est la variable n qui va renvoyer la durée du vapotage d’Aurélien et oui j’ai une fonction, je n’avait pas compris, je vous l’envoie.

#18 06-01-2021 15:33:50

Devoir
Invité

#19 06-01-2021 17:35:16

Devoir
Invité

Re : Devoir python

Je dois donc compléter la fonction après les pointillés.

#20 06-01-2021 18:59:09

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 988

Re : Devoir python

Bonjour,

Ce programme à compléter est affligeant, on va le faire et comme ça ton prof sera content.
Sauf que la fonction ne tient pas debout !
Et dire qu'il est supposé permettre les calculs d'une situation réelle....
Donc, le dénommé Aurélien est assez bête pour,  le 31e jour quand il arrive à Moscou après 2900 km pour continuer encore 45 km plus loin ?
Ou alors, arrivé à Moscou, au terme 2900 km, il décide de parcourir 45 km à l'intérieur de la ville ?
Parce que, techniquement, après 31 jours, il aura parcouru 2945 km et non 2900...

Alors que avec la fonction que je t'ai soumise, Aurélien lorsqu'il a atteint Moscou et parcouru 2900 km s'arrête et n'effectue pas les 45 km de plus.
Et ce dernier jour donc, au lieu de parcourir 170 km, il s'arrête à 170 - 45  = 125 km ce dont tui te serais aperçue si tu avais essayé de comprendre ce que je t'avais proposé.
Pour éviter le problème du if (que tu n'as encore peut-être pas utilisé), qu'est-ce que j'ai fait ?
J'ai écrit
n=1
D=20
parce que comme ça, j'écris que le 1er jour il parcourt a=20 km, et au total 20 km, avec une augmentation chaque jour suivant de b=5 km

Après quoi je commence ma boucle Tant que :
while D < L:  # je teste si la distance totale parcourue D est inférieure à la distance maximale à parcourir
     n=n+1  # c'est le jour d'après.
    # Puisque le 1er jour est passé,  chaque jour, la distance journalière a est augmentée de b pour être ensuite
    # ajoutée à la distance totale D
    # Ainsi distance totale parcourue et distance parcourue le jour n seront bien sur la même ligne :
     a=a+b
     D=D+a

La fonction devient (il est vivement recommandé de ne pas utiliser de ne pas utiliser de lettres accentuées dans les nomns de fonctions et de variables):
def duree (a,b,L):
    n=1
    D=a
    d=a
    while D<L:
          n=n+1
          d=d+b
          D=D+d

Et ça donne ceci (juste la fin), si j'écris la ligne print(n,d,D) :
................
24 135 1860
25 140 2000
26 145 2145
27 150 2295
28 155 2450
29 160 2610
30 165 2775
31 170 2945
Le 24e jour,  distance du 24e j : 130+5 = 135 km, Distance totale parcourue 1860 km
Le 25e jour,  distance du 25e j : 135+5 = 140 km, Distance totale parcourue 1860+140=2000 km
Le 26e jour,  distance du 25e j : 140+5 = 145 km, Distance totale parcourue 2000+145=2145 lm

----------------------------------------------------------------------------------------------------------------------------------------------------------
Mais maintenant on sait ce qu'il faut compléter, donc on va être bêtes et disciplinés et faire comme le veut l'auteur de l'exercice.
Probablement parce qu'il a estimé que vous ne seriez pas capables de comprendre et donc de compléter, voilà ce qui est attendu :;

def duree(a,b,L):
    n=0
    D=0
    d=a
    while D<L:
        n=n+1
        D=D+d
        d=d+b
        print(n,D,d) #ligne inutile
    return [n,D,d-b]

Tu peux supprimer la ligne inutile (à ne pas mettre dans le devoir), elle est juste-l) pour que tu puisses si tu le souhaites, tester et voir défiler jour jour après jour, en appelant la fonction ainsi : print(duree(20,5,2900))...
On va bien voir si ton prof te reproche le d-b dans le return...
Si oui, alors il faudra lui faire remarquer que, puisque la valeur de d est recalculée après la distance totale, le d utilisé dans le calcul de D est celui du jour précédent...

Si on appelle la fonction avec print(duree(20,5,2900)),
n= 0
D=0,
d=a (=20)

le 1er jour,
n=n+1     # n vaut 1
D= D+d   # D= 0=20, le d n'a pas encore été modifié
d=d+b     #d=25  cette nouvelle valeur de d sera ajoutée à D le 2e jour :

2e jour :
n=n+1   # n vaut 1
D=D+d  # (D = 20+25 =45) le d vaut 25 et sera modifié ligne suivante
d=d+b   # (d = 25+5 = 30)   cette nouvelle valeur de d sera ajoutée à D le 3e jour...
..........................
  n       D       d
30    2775  170
31    2945  175  # ce 175 ne sert à rien

Te sens-tu capable de justifier ce d-b si on te dit que c'est faux ?

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#21 06-01-2021 19:16:40

Devoir
Invité

Re : Devoir python

Merci oui j’ai bien compris mais c’est devoir a rendre donc je suis sure qu’il est tiendra rigueur et me mettra des pénalités

#22 06-01-2021 20:39:04

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 988

Re : Devoir python

Bonsoir,

Je te comprends.
Je t'ai donné ma position.
Dans le dernier code que je t'ai fourni,

il t'est dit que l
La réponse à cette question ne sera validée complétée que si la fonction durée fonctionne

La fonction durée comme je j'ai complétée à la fin fonctionne : elle produit des résultats.
Il n'y a aucun doute là-dessus : tu peux la tester en laissant la ligne print.
La seule chose qu'on pourrait te reprocher, c'est le d-b au lieu de d.
Mais qui te dit que celui qui a écrit cet exercice, ne s'est pas dit : tiens, je vais voir si celui qui va répondre, comprend vraiment ce qui se passe dans la fonction, je vais leur demander de donner la valeur de la distance parcourue le dernier jour !
Et tous ceux qui répondraient d auraient faux !
Ceci est tout a fait conforme à ce qu'on ta demandé :

 

def duree(a,b,L):
    n=0
    D=0
    d=a
    while D<L:
        n=n+1
        D=D+d
        d=d+b
        print(n,D,d) #ligne inutile
    return [n,D,d-b]

On t'a dit de compléter :

def duree(a,b,L):
    n=0
    D=0
    d=...             ---> j'ai complété par d = a
    while .... :     ---> j'ai complété par D < L  (Distance totale calculée < Distance à parcourir)
        n = n+1
        D = D+.... ---> J'ai complété par D = D + d  (Distance totale parcourue  = Distance totale de la veille +
                                 distance du jour)
        d = ....      ---> J'ai complété par d + b         (distance journalière + valeur b)
    return [...,...,...]   ---> j'ai complété par n, D, d-b : nombre de jours, Distance totale parcourue, distance
                                        journalière finale...

La seule chose qu'on pourrait te dire d-b, c'est faux alors que pourtant, c'est vrai.
Mais ça n'empêche pas la fonction duree de fonctionner...

Tu peux facilement faire le test ici : https://www.usborne.fr/activit%C3%A9s/a … -en-ligne/
copier/coller en bas de page dans la fenêtre main.py (à gauche :
def duree(a,b,L):
    n=0
    D=0
    d=a
    while D<L:
        n=n+1
        D=D+d
        d=d+b
        print(n,D,d) #ligne inutile
    return [n,D,d-b]

Et après le return

tu écris : duree(20,5,2900)
et tu appuies sur le triangle noir Run qui point vers la droite et tu obtiens ceci :
t6zx.png


Maintenant, tu fais ce que tu veux, tu n'es obligée à rien : tu es libre de ton choix...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#23 06-01-2021 21:39:24

Devoir
Invité

Re : Devoir python

Oui j’ai bien compris,  maintenant l’exercice n’est pas fini je vous l’envoie.
Je sais comment justifier si une suite et arithmétique ou géométrique mais j’ai besoin un peu d’aide.

#24 06-01-2021 21:42:13

Devoir
Invité

#25 06-01-2021 22:38:32

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 988

Re : Devoir python

Bonsoir,

Fais-tu attention à ce que tu envoies ?
Je n'en ai pas l'impression...
Comment veux-tu que je te réponde sur Fibonacci ?
Parce que
1. Toi, tu ne m'as dit lequel des deux algos permet de calculer le nombre de couples de lapins et pourquoi : je ne peux donc te dire ni oui, ni non.
2. Sur le document que tu viens d'envoyer (suis ton propre lien et va voir!), ces deux algos sont tronqués... Tout ce qu'on en voit, c'est Fin du pour...
Voici les 40 premiers nombres de la suite de Fibonacci :
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155

A partir du 3e nombre inclus, chaque nombre est la somme des deux précédents :
2 = 1 + 1
3 = 2 + 1
5 = 3 + 2
8 = 5 + 3
13 = 8 + 5
21 = 13 + 8...
Donc suis pas à pas les instructions de chacun des 2 algos (comme si tu étais une machine bête et disciplinée) et tu verras facilement lequel des deux algos est le bon.
C'est pour t'aider que je t'ai mis la liste des 40 premiers nombres  : je pense que ça doit suffire, sinon, demandes-en 100, 200, 500, 1000...
Mais 1000 nombres ça tiendrait de la place... Voilà le 1000e nombre, il a 209 chiffres :
43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875

Je reprends demain.

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

Pied de page des forums