Exerice de Maths Python
Réponses à toutes vos questions de la 2nde à la Terminale toutes séries
-
human999
- Membre Naturel
- Messages: 13
- Enregistré le: 10 Mar 2019, 10:39
-
par human999 » 10 Mar 2019, 10:51
Bonjour à tous , je suis arrivée à une question de mon exercice ou je ne comprend plus voici la question :
Proposer un algorithme en langage Python permettant de calculer pour tout n ∈ N\{0} la somme suivante :
S= 1 + 1/2 + ··· + 1/i + ··· + 1/n
Quelle est la valeur du plus petit entier n telle que S ≥ mois + jour de votre naissance ? Avec Janvier = 1 · · · Décembre = 12.
Alors le premier problème c'est que je comprend pas la question qu'est-ce-que je dois faire sachant qu'on à peine vu le langage python on a juste recopier un programme qui n'a rien à voir avec celui là . Après plusieurs recherche je pense que je dois faire une boucle de la forme :
n=int(input("saisir la valeur de n:"))
S=0
for i in range (n):
print('i=',i)
S=S+1
print('S='S)
Sauf que je sais pas trop quoi mettre dedans dans l'exercice on parle de Janvier=1 et decembre=12 je dois remplacer n par ces valeurs ? , et qu'est ce que i ? les pointillés correspondent à quoi ?
J'avoue que je suis perdue à cette question pourtant les autres étaient plus abordables mais elles n'ont aucun rapport . Si quelqu'un pouvait m'expliquer comment on procède ça serai génial car j'aimerai bien comprendre si un jour il le met dans un contrôle . Merci à tous et très bonne journée .
-
Sa Majesté
- Membre Transcendant
- Messages: 6275
- Enregistré le: 23 Nov 2007, 14:00
-
par Sa Majesté » 10 Mar 2019, 11:46
Salut
Si par exemple tu es née le 10 mars alors :
1) je te souhaite un bon anniversaire
2) 10 mars donne 10 + 3 = 13 donc tu dois trouver le plus petit n tel que 1+1/2+...+1/n ≥ 13
-
chan79
- Membre Légendaire
- Messages: 10330
- Enregistré le: 04 Mar 2007, 19:39
-
par chan79 » 10 Mar 2019, 11:48
human999 a écrit:
n=int(input("saisir la valeur de n:"))
S=0
for i in range (n):
print('i=',i)
S=S+1
print('S='S)
salut
quelques modifs à faire:
n=int(input("saisir la valeur de n:"))
S=0
for i in range(1,n+1):
S=S+1/iprint("S(",n,")=",S)
tu peux aussi utiliser la commande while
-
human999
- Membre Naturel
- Messages: 13
- Enregistré le: 10 Mar 2019, 10:39
-
par human999 » 10 Mar 2019, 11:55
Salut , merci pour vos réponses donc si j'ai bien compris je prend par exemple mon anniversaire , le 9 septembre je fais 9+9 = 18
Ensuite je reprend ma boucle python et je remplace n par 18 dans n=int et il me donne la valeur de i et je trouve S ?
-
Sa Majesté
- Membre Transcendant
- Messages: 6275
- Enregistré le: 23 Nov 2007, 14:00
-
par Sa Majesté » 10 Mar 2019, 12:09
human999 a écrit:Salut , merci pour vos réponses donc si j'ai bien compris je prend par exemple mon anniversaire , le 9 septembre je fais 9+9 = 18
OK
human999 a écrit:Ensuite je reprend ma boucle python et je remplace n par 18 dans n=int et il me donne la valeur de i et je trouve S ?
Non car si tu fais ça, ça va juste te donner la valeur de S pour n=18, c'est-à-dire 1+1/2+1/3+ ... + 1/18.
Or ce que tu veux c'est la plus petite valeur de n pour laquelle 1+1/2+1/3 + ... + 1/n dépasse 18.
-
human999
- Membre Naturel
- Messages: 13
- Enregistré le: 10 Mar 2019, 10:39
-
par human999 » 10 Mar 2019, 12:18
Mais pour avoir la plus petite valeur de n c'est quoi la méthode prcq je vois pas comment faire puisque j'ai pas bcp de données a part 9 et 18
S= 1 + 1/2 + ? je comprend pas comment je dois faire
-
chan79
- Membre Légendaire
- Messages: 10330
- Enregistré le: 04 Mar 2007, 19:39
-
par chan79 » 10 Mar 2019, 12:22
A priori, on y va à tâtons ou bien on fait une boucle pour n
-
human999
- Membre Naturel
- Messages: 13
- Enregistré le: 10 Mar 2019, 10:39
-
par human999 » 10 Mar 2019, 12:23
Donc il faudrait faire une autre boucle sn-1 mais comment on fait ça ?
-
human999
- Membre Naturel
- Messages: 13
- Enregistré le: 10 Mar 2019, 10:39
-
par human999 » 10 Mar 2019, 12:37
Sa Majesté a écrit:Non car si tu fais ça, ça va juste te donner la valeur de S pour n=18, c'est-à-dire 1+1/2+1/3+ ... + 1/18.
Or ce que tu veux c'est la plus petite valeur de n pour laquelle 1+1/2+1/3 + ... + 1/n dépasse 18.
Je comprend pas ce que tu veux dire je dois trouve la petite valeur de n mais N=9 comment je peux mettre ça ? tu pourrai m'expliquer stp ?
-
chan79
- Membre Légendaire
- Messages: 10330
- Enregistré le: 04 Mar 2007, 19:39
-
par chan79 » 10 Mar 2019, 12:41
je reviens dans 1 heure

-
human999
- Membre Naturel
- Messages: 13
- Enregistré le: 10 Mar 2019, 10:39
-
par human999 » 10 Mar 2019, 12:45
Ok merci bcp a tt à l'heure
chan79 a écrit:je reviens dans 1 heure

-
LB2
- Habitué(e)
- Messages: 1504
- Enregistré le: 05 Nov 2017, 16:32
-
par LB2 » 10 Mar 2019, 12:57
Bonjour,
c'est très important de comprendre que dans ce problème, tu ne sais pas à l'avance combien de termes il te faudra pour dépasser la valeur donnée (18 par exemple)
Une boucle while (exercice : avec quelle condition?) est donc toute indiquée, bien plus adaptée à ton problème qu'une boucle for.
Une boucle for est utile lorsque tu sais à l'avance combien de répétitions (d'itérations) tu souhaites effectuer
-
human999
- Membre Naturel
- Messages: 13
- Enregistré le: 10 Mar 2019, 10:39
-
par human999 » 10 Mar 2019, 13:04
LB2 a écrit:Bonjour,
c'est très important de comprendre que dans ce problème, tu ne sais pas à l'avance combien de termes il te faudra pour dépasser la valeur donnée (18 par exemple)
Une boucle while (exercice : avec quelle condition?) est donc toute indiquée, bien plus adaptée à ton problème qu'une boucle for.
Une boucle for est utile lorsque tu sais à l'avance combien de répétitions (d'itérations) tu souhaites effectuer
Le problème c'est que je ne sais pas qu'est ce qu'une boucle while et comment résoudre avec mon problème prcq j'ai jamais vu ça tu pourrai m'expliquer stp ?
-
human999
- Membre Naturel
- Messages: 13
- Enregistré le: 10 Mar 2019, 10:39
-
par human999 » 10 Mar 2019, 13:06
J'ai regardé sur internet et normalement ça serai un truc comme ça mais comment le remplir ? :
S=0
n=0
while S<20
n+=1
S+=n
print(n)
je remplace S par 18 et n comment je fais ?
-
human999
- Membre Naturel
- Messages: 13
- Enregistré le: 10 Mar 2019, 10:39
-
par human999 » 10 Mar 2019, 13:38
Coucou du coup j'ai fais l' algorithme suivant :
S=0
n=0
while S<18
n+=1
S+=n
print(n)
et je trouve :
>>> from j import *
1
2
3
4
5
6
>>>
Est ce que c'est bon ? je suis pas du tout sûr de moi faut-il que je change quelque chose dans mon algorithme ?merci de votre aide
-
chan79
- Membre Légendaire
- Messages: 10330
- Enregistré le: 04 Mar 2007, 19:39
-
par chan79 » 10 Mar 2019, 13:43
Me revoilà!
Essaie:
S,n=0,1
while S<18:
___ S=S+1/n
___ n=n+1
Print(n)
N'oublie pas de vérifier avec le premier programme
Mets nous ton résultat
-
human999
- Membre Naturel
- Messages: 13
- Enregistré le: 10 Mar 2019, 10:39
-
par human999 » 10 Mar 2019, 13:49
Ca me donne pleins de chiffres compris entre 1400 et 1500
-
human999
- Membre Naturel
- Messages: 13
- Enregistré le: 10 Mar 2019, 10:39
-
par human999 » 10 Mar 2019, 14:02
chan79 a écrit:Me revoilà!
Essaie:
S,n=0,1
while S<18:
___ S=S+1/n
___ n=n+1
Print(n)
N'oublie pas de vérifier avec le premier programme
Mets nous ton résultat
J'ai refait ton algorithme et peut être que celui ci correspond mieux ?:
S=0
n=0
while S<18
n+=1
S+=n
print(n)
et je trouve :
>>> from j import *
1
2
3
4
5
6
>>>
-
LB2
- Habitué(e)
- Messages: 1504
- Enregistré le: 05 Nov 2017, 16:32
-
par LB2 » 10 Mar 2019, 14:51
Pour bien comprendre l'algorithme, tu peux afficher n et S à chaque itération de la boucle while.
ça risque de faire beaucoup beaucoup de lignes (36865413) si ta condition est S<18 !
mais tu peux essayer avec la condition S<5 déjà pour comprendre le principe
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 78 invités