Bonjour, je dois faire l'exercice 127 p153 du livre Bordas terminale.
Enoncé : "Un lapin se déplace dans un terrier composé de trois galeries A,B et C. À chaque fois qu'il est soumis à un stimulus, le lapin reste dans la galerie où il se trouve ou change de galerie.
Soit n un entier naturel, On note:
an→ la probabilité que le lapin soit dans la galerie A
bn→ la probabilité que le lapin soit dans la galerie B
cn→ la probabilité que le lapin soit dans la galerie C
(Voir image pour le reste)
J'ai réussi l'intégralité de l'exercice sans problème à l'exception du programme python. Je ne le trouve vraiment pas clair, quelqu'un pourrait-il m'aider ? Je ne vois vraiment pas comment le compléter.
Les valeurs initiales pour n=0 sont a=1 ; b = 0 et c=0 (je ne sais pas où mettre ces informations)
Les formules pour calculer les probabilités sont :
a=(1/3)*a+(1/4)*b
b=(2/3)*a+(1/2)b+(2/3)*c
c=(1/4)*b+(1/3)c
Je sais que ces 3 probabilités doivent être calculées en même temps.
Le "in range" doit aller de 1 à n+1
(enfin je suppose car on connaît déjà les valeurs pour n=0)
Mais ce sont les "L" qui me pose problème...
Dès le début, je ne sais pas quoi mettre à "l=..."
Merci d'avance pour votre aide !
Bonjour,
Juste en passant,
l=[] est une liste
(comme il est dit dans l'énoncé : "renvoie la LISTE des trois probabilités")
Va voir dans un tuto python, ce qu'est une liste et comment cela s'utilise...
Je laisse la place (désolé, pas dispo ce matin).
bonjour à vous
@ZEDMAT, je pourrai prendre le relai.
Le "in range" doit aller de 1 à n+1 --- exact
Dès le début, je ne sais pas quoi mettre à "l=..." --- on initialise la liste L pour l'étape 0 (je mets une majuscule pour la lisibilité ici)
Ici, la fonction lapin doit renvoyer un tableau avec les 3 valeurs a(n), b(n) et c(n)
La dernière ligne pourrait être return ( a, b, c) mais je suppose que cette syntaxe ne marche pas.
Donc ici, on contourne :
l[0]=a
l[1]=b
l[2]=c
return (l)
Et du coup, au début il faut initialiser l, pour dire que l est un tableau.
Je ne pratique pas assez Python, mais je pense qu'une des solutions pour la 1ère ligne, ça pourrait être quelque chose comme :
l=[0,0,0]
MAIS
Il y a une erreur dans ce que tu proposes.
Au début, on a : a=1 , b=0 , c=0
Après la 1ère boucle, on veut avoir : a=1/3 , b=2/3 , c=0
Déroulons ton programme.
Au début tu as bien : a=1 , b=0 , c=0
Puis tu exécutes l'instruction a=(1/3)*a+(1/4)*b ; donc a=1/3
Puis tu exécutes l'instruction b=(2/3)*a+(1/2)b+(2/3)*c ; et tu obtiens : b=2/9
Alors que tu voulais b=2/3
Je te laisse chercher comment corriger ça.
en attendant le retour de liliewideos
@ ty59847,
"La dernière ligne pourrait être return ( a, b, c) mais je suppose que cette syntaxe ne marche pas."
si, si, cette syntaxe fonctionne; elle retourne les 3 probas dans un triplet - avec des parenthèses.
"Donc ici, on contourne (sous-entendu : avec une liste)" c'est plus qu'un artifice d'écriture pour le return.
l'intervention de la liste (ou de toute autre variable) permet de palier la difficulté que tu as pointée du doigt :
la liste conserve 'intactes' les 3 probas de rang n pendant les calculs des probas de rang n+1.
c'est pourquoi initialisation de L, avant la boucle, doit correspondre aux probas des 3 suites à l'étape 0 :
ainsi, dès la 1ère itération dans la boucle, on commence les calculs avec i=1... etc. jusqu'à i=n
@liliewideos
pour pouvoir tester la fonction, et répondre à la question 3)
il faudra que tu appelles l'exécution de cette fonction : soit dans le corps du programme,
soit directement dans ton interpréteur (essaie avec plusieurs valeurs croissantes de n)
ps : je serai absente cet aprèm, je laisse la main.
Déjà, merci d'avoir pris le temps de me répondre mais je sais bien tout ça mais c'est la tournure du programme que je comprends pas.
Je répète j'ai fais TOUT LE RESTE DU DEVOIR. Il me manque juste le programme python. Si seulement mon prof faisait son travail en nous enseignant mais il ne nous dit rien c'est débrouillez vous... ça me déprime sérieux !
Voilà où j'en suis du coup (toujours aussi flou) :
def lapin(n):
L= **
For i in range (1;n+1) :
a=***;b=***;c=***
L[0] = a
L[1] = b
L[2] = c
Return (L)
** toujours floue je ne sais pas si je dois mettre les valeurs de a b c pour n=0 ou alors démarrer tout à zéro ou je dois mettre L[0], L[1] , L[2]
*** ce sont les formules mais où je mets les valeurs initiales
Je teste avec le programme edupython de l'école mais rien ne marche...
Si seulement ils nous laissaient faire les programmes de a à z... leurs programmes n'ont ni queue ni tête à chaque fois
La liste L contient les valeurs de a, b et c.
Donc avant d'entrer dans la boucle, on met dans la liste L les valeurs initiales de a, b et c.
Donc
L=[1,0,0] puisque "au départ " le lapin est dans la galerie A.
Je pense que je me suis mal exprimée.
Le problème n'est pas de faire un programme Python qui fonctionne, ça j'y arrive sans le moindre problème.(voir photo)
Le problème est de respecter le script de l'exercice.
Je m'explique, d'habitude, je rajoute des lignes car je trouve les programmes incomplets.
Mais, mon prof a été hyper claire, si je rajoute quoi que ce soit il me colle un zéro direct, car je cite "il faut que tu arrêtes de te prendre pour une mathématiciennes!"
Donc j'ai juste besoin de votre aide pour que le programme colle au script de l'énoncé...
Je vois pas l'intérêt, du moment que mon programme fonctionne... Et puis compléter ça peut vouloir dire rajouter des lignes de codes...
Enfin bref, j'ai vraiment besoin de votre aide
salut,
pour qu'on puisse copier ton code il faut le mettre entre les balises generees en cliquant sur le bouton </> situe sous le message
moncode
J'ai oublié de joindre "ton" image, un peu raturée
A l'avenir ne mets plus des liens vers des images "externes" (elles seront supprimées par les modérateurs ). Apprends à joindre des images à ton message (voir l'outil Img sous la fenêtre où tu écris).
Ensuite pour les scripts python, il y a beaucoup mieux .
Ton script dans l'éditeur python est du vulgaire texte que tu peux copier (CTRL+C) et ensuite venir coller (CTRL+V)dans ton message sur l'
En plus pour garder les indentations de ton script, copie le, ce script, entre des balises code que tu actives avec l'outil </> (toujours dans les outils sous la fenêtre où tu écris....
mets ton script entre les 2 balises
et regarde ce que tu obtiens en mode Aperçu avant de POSTER.
Là tu fais un blocage. Tu as décidé que cet exercice était mal conçu, et 'inconsciemment', à l'insu de ton plein gré, tu veux montrer que cet exercice est mal conçu.
La solution, c'est la copie de ce que tu as fait. La solution est même un petit peu plus simple que ce que tu as fait.
Laisse tomber cet exercice, passe une bonne nuit. Et demain, en 20 secondes, tu vas trouver.
def lapin(n):
l=[1,0,0]
for i in range (1,n+1):
a=(1/3)*l[0]+(1/4)*l[1];b=(2/3)*l[0]+(1/2)*l[1]+(2/3)*l[2];c=(1/4)*l[1]+(1/3)*l[2]
l[0]=a
l[1]=b
l[2]=c
return(l)
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :