DM python 2nd

Réponses à toutes vos questions de la 2nde à la Terminale toutes séries
Tucyos

DM python 2nd

par Tucyos » 29 Fév 2020, 17:11

Bonjour

Je bloque sur un exercice sur python a partir d'un algorithme que j'ai du faire et je précise que je suis en seconde. Il faut que je fasse un programme qui montre que c'est impossible de dépasser 7500 livres

l = 7500

while l:
if l > 7500:
print("Il y a bien plus de 7500 livres")
else:
l = l * (1 - 2 / 100) + 30
break
print(l)

Vu que il ne dépassera pas 7500 livres il n'affiche pas le résultat, du coup ma question est comment montrer qu'il ne peut pas le dépasser et qu'il ne le pourrait jamais
Merci d'avance et j'ai aussi mis mon algorithme juste en dessous
Image



GaBuZoMeu
Habitué(e)
Messages: 6151
Enregistré le: 05 Mai 2019, 09:07

Re: DM python 2nd

par GaBuZoMeu » 29 Fév 2020, 17:44

Première ligne : "l=7500"
Ça commence mal. Dans l'algorithme que tu reproduis, on initie l à 5000.

Deuxième ligne : "while l:"
while l quoi ??? ce qui suit while et précède les deux points doit être un test qui retourne un booléen (vrai ou faux). l n'est pas un booléen.
Et puis, si on regarde bien ton programme, on arrête de boucler quand on a fait 1000 boucles. Ce n'est donc pas un "while" qu'il faut. ...

LB2
Habitué(e)
Messages: 1504
Enregistré le: 05 Nov 2017, 16:32

Re: DM python 2nd

par LB2 » 29 Fév 2020, 18:12

Bonjour,

le questionneur n'y est sans doute pour rien mais cet algorithme me laisse également très circonspect.

Avant de se lancer dans cet algorithme là, il serait bon de savoir écrire un algorithme très simple calculant et affichant les n=10 (ou 100, ou 1000...) premiers termes de la suite, par exemple.

Tucyos

Re: DM python 2nd

par Tucyos » 29 Fév 2020, 19:53

A vrai dire c’était mon premier algorithme mais c'est sur le programme que j'aurai besoin d'aide je l'ai refais et je ne sais pas comment faire une boucle qui répète une action avec un nombre de fois défini.

Dans mon programme sa serait de répéter 1000 fois l = l*(1-2/100)+30 et puis après cela serait de dire que c'est impossible d'avoir l > 7500

Voici ce que j'ai fais pour l'instant:

l = 5000

if l > 7500:
print("Il y a bien plus de 7500 livres")
else:
l = l * (1-2/100) + 30
if l > 7500:
print("Il y a bien plus de 7500 livres")
else:
l = l * (1-2/100) + 30
if l > 7500:
print("Il y a bien plus de 7500 livres")
else:
l = l * (1-2/100) + 30
print(l)

(Il y a bien une tabulation sur l'IDE mais je n'arrive pas a la faire ici)

Avatar de l’utilisateur
chadok
Membre Relatif
Messages: 320
Enregistré le: 04 Nov 2017, 21:44
Localisation: Bretagne

Re: DM python 2nd

par chadok » 29 Fév 2020, 20:28

Mais où est passée ta boucle ? Sans boucle, ton programme va être très long à écrire ;)
Et quand tu écris ton programme ici, fais-le entre 2 balises [code], ça fera apparaître tes indentations.

Tucyos

Re: DM python 2nd

par Tucyos » 29 Fév 2020, 21:10

la boucle sa serait:
while l < 2000:
puis le code ?

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

Re: DM python 2nd

par fatal_error » 29 Fév 2020, 21:33

pour faire un boucle qui répère n fois tu peux:
for i in range(n):
...
ou bien

i = 0
while i < n:
...i = i + 1
la vie est une fête :)

Avatar de l’utilisateur
chadok
Membre Relatif
Messages: 320
Enregistré le: 04 Nov 2017, 21:44
Localisation: Bretagne

Re: DM python 2nd

par chadok » 29 Fév 2020, 21:38

l = le nombre de boucles , ou le nombre de livres ?
Il faut que tu réfléchisses au problème dans sa globalité, sans jouer aux devinettes ;)
Si l = le nombre de livres, alors tu initialises l à 5000, pas à 2000. Et tu regardes si l peut atteindre 7500 en faisant des boucles. Pigé ? ;)

Tucyos

Re: DM python 2nd

par Tucyos » 29 Fév 2020, 21:50

Je crois que j'ai trouvé en faisant ce code sa me m'est bien que c'est impossible
Code: Tout sélectionner
l = 5000
nb_repetitions = 1000

for i in range(nb_repetitions):
   if l > 7500:
        print("Il y a bien plus de 7500 livres")
   else:
       l = l * (1-2/100) + 30
print(l)
if l < 2000:
    print("Il est impossible d'avoir plus de 7500 livres")

Avatar de l’utilisateur
chadok
Membre Relatif
Messages: 320
Enregistré le: 04 Nov 2017, 21:44
Localisation: Bretagne

Re: DM python 2nd

par chadok » 29 Fév 2020, 22:10

C'est presque parfait, tu apprends très vite :-)
Deux petites remarques :
- il y a un petit piège avec la commande Range : il faut taper range(1:n+1) pour faire n boucles. Là, tu n' en as fait que 999 ;
- ton test final "if l < 2000" est inutile. Tu es sorti de la boucle avec l < 7500, c' est tout ce qu' on te demandait. Bravo

Tucyos

Re: DM python 2nd

par Tucyos » 29 Fév 2020, 22:16

C'est bon comme ça ?
Code: Tout sélectionner
l = 5000
nb_repetitions = 1000

for i in range(nb_repetitions+1):
   if l > 7500:
        print("Il y a bien plus de 7500 livres")
   else:
       l = l * (1-2/100) + 30
print(l)
print("Il est impossible d'avoir plus de 7500 livres")

Avatar de l’utilisateur
chadok
Membre Relatif
Messages: 320
Enregistré le: 04 Nov 2017, 21:44
Localisation: Bretagne

Re: DM python 2nd

par chadok » 29 Fév 2020, 22:19

EDIT : excuse-moi, c' est toi qui as raison ! Ton range(n) fait bien n boucles :super:
Tout comme mon range(1,n+1), mais qui est juste plus compliqué à écrire ;)

Tucyos

Re: DM python 2nd

par Tucyos » 29 Fév 2020, 22:22

A quoi sert le 1, dans range(1,n+1) pour le +1 je comprend mais pas le 1,

Avatar de l’utilisateur
chadok
Membre Relatif
Messages: 320
Enregistré le: 04 Nov 2017, 21:44
Localisation: Bretagne

Re: DM python 2nd

par chadok » 29 Fév 2020, 22:26

A part ça, supprime carrément ta dernière ligne : elle est piégeuse, car tu n' as pas mis de test devant. Donc elle s'affichera toujours !...

Avatar de l’utilisateur
chadok
Membre Relatif
Messages: 320
Enregistré le: 04 Nov 2017, 21:44
Localisation: Bretagne

Re: DM python 2nd

par chadok » 29 Fév 2020, 22:33

Tucyos a écrit:A quoi sert le 1, dans range(1,n+1) pour le +1 je comprend mais pas le 1,

C' est moi qui t' ai embrouillé la tête, oublie :D
Range, avec 2 termes, sert à parcourir une plage. Par exemple, écris ce petit programme :
Code: Tout sélectionner
for i in range(3,12+1):
   print(i)

Tucyos

Re: DM python 2nd

par Tucyos » 29 Fév 2020, 22:33

Ah ok j'ai compris.Mais du coup ou je met mon print("Il est impossible d'avoir plus de 7500 livres")?

Avatar de l’utilisateur
chadok
Membre Relatif
Messages: 320
Enregistré le: 04 Nov 2017, 21:44
Localisation: Bretagne

Re: DM python 2nd

par chadok » 01 Mar 2020, 18:26

Je dirais, nulle part ! Ta suite semble converger vers 1500, ton programme fonctionne, tu as fait le taf. Mais ton PC n' a rien démontré. Il n'a surtout pas démontré que la suite n'atteindra jamais 7500 :-)

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

Re: DM python 2nd

par fatal_error » 01 Mar 2020, 21:35

hello,

1) Dans le meilleur des mondes, tu pourrais tester tant que la nouvelle valeur est différente de l'ancienne, l'idée étant: ma suite converge, au bout d'un moment, vuqe ma représentation de nombre est finie, je vais forcément trouver le même nombre.

Dans la réalité, je serais pas si sûr car à cause des arrondis, peut être que tu vas osciller près de la limite, auquel cas, il faut non pas conserver la valeur précédente, mais quelques unes...

Essaie 1, avec un peu de chance, ca marche!
la vie est une fête :)

 

Retourner vers ✎✎ Lycée

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 42 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite