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

#5 06-12-2020 15:17:49

Devoir
Invité

Re : Python

#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

#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

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quarantesept plus soixante huit
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums