Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 06-12-2020 11:10:43
- Lisou30000
- Membre
- Inscription : 06-12-2020
- Messages : 54
Python
Bonjour j’ai un devoir à faire sur python je le mets ci dessous. Je dois donc faire une liste mais je n’y arrive pas j’avais proposé après le premier return [3t**2+9*t+8] et pour le second [51*t-139]
Mais cela ne fonctionne pas
Hors ligne
#2 06-12-2020 11:11:55
- Lisou30000
- Membre
- Inscription : 06-12-2020
- Messages : 54
Re : Python
Pouvez vous me dire comment insérer des photos svp?
Hors ligne
#3 06-12-2020 12:01:58
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Python
Bonjour,
1. Tu te connectes à https://www.cjoint.com, tu suis les instructions, tu déposes (upload) ton document, tu récupères le lien qu'on te donne et le mets sans ton prochain post : on pourra ainsi consulter ta photo.
2. Si tu ne t'en sors pas (tu serais bien la première), va sur :https://www.zupimages.net/ et donne-nous le code ensuite...
3. Pour te permettre d'avancer. : ta liste doit être déclarée vide, et remplie au fur et à mesure.
Déclaration :
L =[]
Remplissage.
Supposons une boucle pour t allant de 0 à 10 (exclu) :
for t in range (0,10):
L.append(3*t**2+9*t+8)
print(L)
Et j'obtiens :
[8, 20, 38, 62, 92, 128, 170, 218, 272, 332]
Tu parles de return, donc cela sous entend qu'il y ait une fonction...
On la définit ainsi :
def tafonction(paramètres):
for t in range (0,10):
L.append(3*t**2+9*t+8)
return L
print(tafonction(paramètres))
Et tu obtiens la même chose :
[8, 20, 38, 62, 92, 128, 170, 218, 272, 332]
N-B : append = ajoute
@+
Hors ligne
#4 06-12-2020 15:13:10
- Devoir
- Invité
Re : Python
https://www.cjoint.com/c/JLgolf3ZDX2
Voici le lien
#5 06-12-2020 15:17:49
- Devoir
- Invité
Re : Python
https://www.cjoint.com/c/JLgoqQmmhT2
Et voici le second
#6 06-12-2020 15:23:06
- Devoir
- Invité
Re : Python
https://www.cjoint.com/c/JLgov3shD62
Je trouve ceci mais je comprends qu’il faut définisse L mais où dois—je placer
#7 06-12-2020 16:23:11
- Devoir
- Invité
Re : Python
je me suis corrigé mais j’ai encore une erreur je vous envoies ce que j’ai fait
#8 06-12-2020 16:24:46
- Devoir
- Invité
Re : Python
#9 06-12-2020 16:48:03
- Devoir
- Invité
Re : Python
J’ai réussi mais je n’arrive pas au Second,
def pos(t):
l=[]
for i un range(t+1):
.....
return l
#10 06-12-2020 17:59:01
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Python
bonsoir,
Je vois, il manque une consigne (peut-être deux)
Tu ne vas pas tester tous les t de 0 à l'infini, as-tu une limite supérieure pour tes tests en Python ?
Ensuite, où est la question, la consigne qui explique ce que fait la fonction pos(t)...
A ce que je crois comprendre :
* x(t) calcule la position du véhicule à un instant t particulier, précis et retourne cette position (et rien d'autre !!!)
* pos(t), elle, est chargée de stocker toutes ces positions dans la liste l...
Or, l est réinitialisée à vide à chaque appel de la fonction pos(t), donc cette fonction ne peut être appelée qu'une seule fois au contraire de la précédente.
Donc, pour moi, depuis l'extérieur des fonctions, on doit appeler la fonction pos(t) en lui passant une valeur max de t (si elle n'est pas fixée dans l'exercice, tu peux choisir ce que tu veux, 20, 30, 40, 50...
Et dans la fonction pos(t), tu dois remarquer la présence d'une boucle :
for i in range(t+1) :
où i prend toutes les valeurs de 0 à 20, 30, 40, 50 inclus (valeurs soit donnée par l'énoncé, soit fixée par toi.
On fait quelque chose avec la liste l dans cette boucle, puisqu'on retourne cette liste un e fois sortie de la bocle...
Raisonnons :
- à l'entrée, on définit une liste vide, à la sortie on retourne cette liste,
- à la sortie on retourne cette liste
- si elle est toujours vide, ça sert à quoi ? Réponse : à rien...
Conclusion la liste est remplie avec les positions successives du véhicule : voilà ce que fait la boucle.
Ce qui amène à une autre question : Et ces positions elles sont calculées où ?
Là le morceau d'énoncé est clair : dans la fonction x(t) !
Récapitulons.
Depuis l'extérieur des fonctions, tu appelles pos(t) en lui passant la valeur maxi de t.
Cette fonction crée une liste vide l.
Tu rentres dans une boucle d'index i allant de 0 à t+1 (exclu)
Dans cette boucle, tu vas appeler à chaque tour la fonction x(t) en lui passant non pas t mais i et ce i sera appelé t dans la fonction x(t) : tu dois savoir que les fonctions sont des sas étanches avec une entrée et une sortie et que les noms de variables ne sont pas connues en dehors...
Le boulot de x(t) sera de calculer la position du véhicule pour la valeur de i fournie devenue t dans la fonction et de la retourner.
La position calculée va revenir dans pos(t), c'est là que tu la récupères et que tu la stockes dans l.
def x(t):
calcul de position pour un t précis
retour de cette position calculée
def pos (t): # t est la valeur maxi
l=[] # création d'une liste vide
for i in range (t+1): on passe en revue toutes les valeurs entières entre 0 et t+1 (exclu)
Appel de la fonction x(t) en lui passant la valeur de i et on récupère le résultat du calcul que l'on va stocker dans l.
return l # on retourne la liste remplie
print(pos(30)) # On appelle la fonction f en lui passant la valeur 30 (par exemple, choisie par moi) et on affiche le résultat à l'écran.
Voilà ce que j'obtiens pour t = 30 :
[8, 20, 38, 62, 92, 128, 170, 218, 269, 320, 371, 422, 473, 524, 575, 626, 677, 728, 779, 830, 881, 932, 983, 1034, 1085, 1136, 1187, 1238, 1289, 1340, 1391]
Il y a... 31 valeurs parce qu'on commence à 0 : de 0 à 30, il y a 31 nombres.
Pas si simple comme exercice !
J'espère que tu y vois plus clair maintenant.
Je te laisse donc le soin de Pythonner...
Si tu as des questions n'hésite pas.
@+
Hors ligne
#11 06-12-2020 20:47:51
- Devoir
- Invité
Re : Python
D’accord je vais bien relire votre message merci beaucoup en tout cas je vous recontacte en cas d’éventuel problème.
Bonne soirée
#12 06-12-2020 21:02:45
- Devoir
- Invité
Re : Python
J’ai très bien compris mais je n’arrive pas à compléter après (t+1):
#13 06-12-2020 21:08:26
- Devoir
- Invité
Re : Python
x(t) ou x(i) ?
#14 06-12-2020 21:51:53
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Python
Re,
C'est le plus gros problème des débutants...
Quand tu es dans ta fonction pos, le temps (en s) qui s'écoule, est donné par la boucle
for i in range(t+1):
Donc le temps ici est représenté par l'indice i et tu dois donc appeler la fonction x(t) avec le paramètre i, soit x(i) ...
Mais il ne faut pas faire une fixation sur les lettres :
si i = 1, x(i) c'est en fait x(1)
si i = 2, x(i) c'est en fait x(2)
si i = 3, x(i) c'est en fait x(3)
..........................................
si i=10, x(i) c'est en fait x(10)
etc...
Et quand dans la boucle tu appelles x(i), tu rentres dans la fonction x(t), tu lui passes les valeurs 1, 2, 3...10... que la fonction met dans t puis fait les calculs en vérifiant si $t \in [0,7]$ ou non...
Par contre, tu ne pourrais écrire :
def x(u):
et utiliser la lettre t dans la fonction...
Tu aurais un magnifique message d'erreur qui te dirait : t ? J'connais pas t ! C'est quoi t ?
(Si c'était def x(u), dans tes formules de calcul, il y aurait u à la place de t)
Là, ta fonction x(t) est cohérente et tu vas l'appeler en lui passant le temps dans la lettre i.
Donc, dans la boucle, on écrit :
l.append(x(i))
(on pourrait l'écrire en 2 lignes :
distance = x(i) suivi de
l.append(distance)
Mais pourquoi, ne le fait-on pas ?... Mais pour gagner une ligne !
Si tu trouves que c'est plus clair avec 2 lignes, tu peux le faire sur 2 lignes, ça ne changera rien au résultat...)
Pourquoi n'essaies-tu pas ? Il n'y a aucun risque, ton ordi ne s'autodétruira pas dans les 10 s ^_^...
Au pire un essai raté déclenchera un message d'erreur, c'est tout.
Et là, il faudrait chercher à comprendre pourquoi ça plante...
Ça va mieux maintenant ?
@+
Hors ligne
#15 06-12-2020 22:21:34
- Devoir
- Invité
Re : Python
J’ai tout compris merci beaucoup bonne soirée.
#16 07-12-2020 12:59:53
- Devoir
- Invité
Re : Python
Je dois donc créer mon programme pour la vitesse mais que je dois renvoyer en km/h alors que je possède une fonction qui renvoie en m/s comment pourrais je faire ?
La fonction est (6*(t)+9) pour les valeurs de comprises entre 0 et 7 et (51) pour les valeurs supérieures
#17 07-12-2020 13:36:36
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Python
Re.
Simple ! Si, si ! je te l'assure...
Revenons à la définition :
une vitesse en m/s indique la distance en m parcourue à chaque seconde.
En conséquence, en km/h c'est la distance en km parcourue à chaque heure.
Prenons l'exemple d'un cycliste qui roule à 15 m/s : chaque seconde, il parcourt donc 15 m
Et en 1 h, il parcourt combien de m ?
1 h = 3600 s.
@+
Petit exercice de proportionnalité
En 1 h, il parcourt 15 * 3600 = 54 000 m, soit 54 km...
Donc 15 m/s c'est 54 km/h.
Et on peut pas le faire en une fois ?
Bien sûr que si, mais je voulais que tu comprennes et ne pas appliquer bêtement une formule.
On a multiplié par 3600 (pour passer à l'heure) puis divisé par 1000 (pour convertir en km) on a donc, en fait , multiplié par 3.6...
Donc si tu dois retourner une vitesse en km/h ayant à ta disposition une vitesse v en m/s, tu écris : return v*3.6
C'est clair ?
@+
Hors ligne
#18 07-12-2020 15:55:18
- Dessus
- Invité
Re : Python
je tape donc:
Def v(t):
l=[]
if 0<=t<=7:
l.append ((6*(t)+9)*3,6))
return l
else:
return (51*3,6)
def vit(t):
l=[]
for i in range (t+1):
l.append(v(i))
return l
Mais on me signale que append dois avoir deux valeurs.
#19 07-12-2020 16:43:22
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Python
Bonsoir,
Je vais tester, mais déjà commence par remplacer tous tes 3,6 par 3.6 la virgule décimale en Python, c'est un point...
@+
[EDIT]
Sans la suite de l'énoncé, tu m'obliges à jouer aux devinettes... M'enfin, j'ai vu quand même
Pour rire un peu, je parie qu'on doit trouver les mêmes questions avec l'accélération...
C'est la même astuce qu'avec x(t) et pos(t), sauf que là :
def v(t): (def avec une minuscule n !)
qui est une fonction qui calcule une vitesse instantanée à l'instant t selon que t est strictement inférieur à 8 (donc inférieur ou égal à 7) ou pas, et retourne cette vitesse .
def vit(t): qui va demander à v(t) de calculer la vitesse correspondant à un temps i, la récupère et la stocke dans la liste l
Ta fonction def v(t) fonctionne mais mal :
* si t<8, elle retourne une vitesse en km/h
* sinon, elle retourne une liste réduite à un élément, la vitesse 51*3.6
Comment veux-tu que Python y "retrouve ses petits" ?
Le stockage des vitesses dans une liste c'est le boulot de vit(t), le boulot de v(t) est, lui, de calculer la vitesse à un instant t (passé par le paramètre i ) et de la renvoyer à vit(t) pour qu'elle soit stockée par la boucle au fur et à mesure de son avancement...
Pigé, cette fois ?
Errare humanum est sed perseverare diabolicum ! ;-)
@+
Hors ligne
#20 07-12-2020 17:00:47
- Dessus
- Invité
Re : Python
def v(t) marche à présent mais pas le second
#21 07-12-2020 17:08:26
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Python
Je viens de te répondre, j'avais édité mon post #19
J'ai été un plus "bavard" dans l'affichage :
Liste des distances parcourues :
[8, 20, 38, 62, 92, 128, 170, 218, 269, 320, 371, 422, 473, 524, 575, 626, 677, 728, 779, 830, 881, 932, 983, 1034, 1085, 1136, 1187, 1238, 1289, 1340, 1391]Liste des vitesses correspondantes :
[32.4, 54.0, 75.6, 97.2, 118.8, 140.4, 162.0, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6, 183.6]
Je viens de retester.
Si tantôt tu renvoies un nombre, tantôt une liste à un élément, voilà à quoi ressemble l'affichage de la liste des vitesses :
[32.4, 54.0, 75.6, 97.2, 118.8, 140.4, 162.0, 183.6, [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6], [183.6]]
Des nombres, puis des listes à un élément, toujours la même d'ailleurs..
Tu vois la différence ?
Dernière modification par yoshi (07-12-2020 17:27:20)
Hors ligne
#22 07-12-2020 17:24:16
- Devoir
- Invité
Re : Python
J’ai compris mais quand t>7 qu’elle fonction dois- je écrire car dans mon énoncé il faut que j’envoie 51
#23 07-12-2020 17:26:18
- Dessus
- Invité
Re : Python
C’est comme dans x(t) où de je renvoyais (51*(t)-139) pour les valeurs supérieure à 7 l’orque je calculais la position.
#24 07-12-2020 17:39:04
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Python
RE,
C’est comme dans x(t) où de je renvoyais (51*(t)-139) pour les valeurs supérieure à 7 l’orque je calculais la position.
oui.
Si t>8 la dérivée est celle de 51t-139 et c'est une constante : (51t-139)' = 51.
A partir de t=8, la voiture roule à une vitesse constante de 51 m/s et n'accélère plus..
dans mon énoncé il faut que j’envoie 51
Tu avais écrit que tu devais retourner des km/h, parce que 51 c'est 51 m/s soit 183.6 km/h...
Je peux voir ce morceau d'énoncé ?
Selon ce qu'on te demande,
* soit tu renvoies ta vitesse avec conversion en km/h : return v*3.6
* soit tu la renvoies telle qu'après calcul et à la récupération dans la boucle, tu la convertis avant stockage.
En 2 lignes :
vitesse = v(i)*3.6
l.append(vitesse)
En une seule :
l.append(v(i)*3.6)
Hors ligne
#25 07-12-2020 17:48:04
- Devoir
- Invité
Re : Python
Oui bien sûr mais comment envoyer une photo?
je n’ai pas bien compris cette fois ci







