E-Bahut julesx Posté(e) le 14 novembre 2022 E-Bahut Signaler Share Posté(e) le 14 novembre 2022 Si tu mets ces instructions à la suite des fonctions, il suffit d'appeler hauteur(n) et de stocker le résultat dans une variable auxiliaire, par exemple h : for n in range (1,1001): h=hauteur(n) if h>hmax : hmax=h nmax=i N.B.: Pour le range, il faut ajouter 1 à la fin, c'est Python qui veut ça. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eleor Posté(e) le 14 novembre 2022 Auteur Signaler Share Posté(e) le 14 novembre 2022 il y a 13 minutes, julesx a dit : Si tu mets ces instructions à la suite des fonctions, il suffit d'appeler hauteur(n) et de stocker le résultat dans une variable auxiliaire, par exemple h : for n in range (1,1001): h=hauteur(n) if h>hmax : hmax=h nmax=i N.B.: Pour le range, il faut ajouter 1 à la fin, c'est Python qui veut ça. Et donc à la fin Print(n) Pour déterminer l'entier inférieur à 1000? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 14 novembre 2022 E-Bahut Signaler Share Posté(e) le 14 novembre 2022 Il faut être un peu plus loquace ! Fais une phrase pour dire ce que tu imprimes. Tu peux aussi imprimer la hauteur correspondante. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eleor Posté(e) le 14 novembre 2022 Auteur Signaler Share Posté(e) le 14 novembre 2022 (modifié) il y a 11 minutes, julesx a dit : Il faut être un peu plus loquace ! Fais une phrase pour dire ce que tu imprimes. Tu peux aussi imprimer la hauteur correspondante. Désolée, Comme on me demande de trouver l'entier inférieur à 1000 il faut l'afficher non ? Dans ce cas mettre "Print(n)" à la fin du programme ? Je vous pose la question car j'ai essayé de copier coller votre programme avec le logiciel d'un intervenant "trinket.io" mais le problème c'est que je ne sais pas comment l'exécuter. Et comme on me demande de trouver un résultat je suis donc bloquée. J'avais aussi une autre question, chaque programme est indépendant ? Comme celui que vous venez de me faire qui commence donc par for n in range...etc Il ne faut pas y ajouter les anciens programmes n'est ce pas ? Modifié le 14 novembre 2022 par Eleor Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 14 novembre 2022 E-Bahut Signaler Share Posté(e) le 14 novembre 2022 OK, contente toi de print(n). Pour trinket.io, une fois que tu as copié le programme, tu cliques dans le petit triangle noir au dessus.Mais copie bien l'ensemble, avc les deux fonctions vol(n) et hauteur(n). Là, je me déconnecte pour le moment. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eleor Posté(e) le 14 novembre 2022 Auteur Signaler Share Posté(e) le 14 novembre 2022 (modifié) il y a 19 minutes, julesx a dit : OK, contente toi de print(n). Pour trinket.io, une fois que tu as copié le programme, tu cliques dans le petit triangle noir au dessus.Mais copie bien l'ensemble, avc les deux fonctions vol(n) et hauteur(n). Là, je me déconnecte pour le moment. D'accord, je vous mets une capture car même lorsque je clique sur le triangle il ne se passe rien. Modifié le 14 novembre 2022 par Eleor Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 14 novembre 2022 E-Bahut Signaler Share Posté(e) le 14 novembre 2022 C'est normal, tu n'as pas initialisé hmax. En plus, je ne suis pas à l'abri d'une faute de frappe. J'ai oublié de corriger un i malencontreux. Mais tu es aussi censée vérifier les scripts avant de le copier coller bêtement d'autant plus que j'ai laissé passé un oubli de nmax. Donc, je reprends, le bon script est def vol(n): V=[n] while n>1: if n%2==0: n=n//2 else: n=n*3+1 V=V+[n] return V def duree(n): return len(vol(n)) def hauteur(n): return max(vol(n)) hmax=0 nmax=0 for n in range (1,1001): h=hauteur(n) if h>hmax : hmax=h nmax=n print(nmax) N.B. : Il est évident qu'il faut rajouter en tête les fonctions auxquelles tu va faire appel. Python ne connait que ce qu'il y a dans le script ou ce qui est dans sa bibliothèque. Ce que tu crées n'existe que dans le script actuel ( sauf à créer un module, mais ça dépasse largement ce qu'on peut attendre à ton niveau). Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eleor Posté(e) le 14 novembre 2022 Auteur Signaler Share Posté(e) le 14 novembre 2022 (modifié) il y a 28 minutes, julesx a dit : C'est normal, tu n'as pas initialisé hmax. En plus, je ne suis pas à l'abri d'une faute de frappe. J'ai oublié de corriger un i malencontreux. Mais tu es aussi censée vérifier les scripts avant de le copier coller bêtement d'autant plus que j'ai laissé passé un oubli de nmax. Donc, je reprends, le bon script est def vol(n): V=[n] while n>1: if n%2==0: n=n//2 else: n=n*3+1 V=V+[n] return V def duree(n): return len(vol(n)) def hauteur(n): return max(vol(n)) hmax=0 nmax=0 for n in range (1,1001): h=hauteur(n) if h>hmax : hmax=h nmax=n print(nmax) N.B. : Il est évident qu'il faut rajouter en tête les fonctions auxquelles tu va faire appel. Python ne connait que ce qu'il y a dans le script ou ce qui est dans sa bibliothèque. Ce que tu crées n'existe que dans le script actuel ( sauf à créer un module, mais ça dépasse largement ce qu'on peut attendre à ton niveau). Oui je ne comprenais pas le i mais j'ai quand même testé pour voir. J'ai encore le même soucis quand je copie colle le script et que j'appuie sur le triangle en haut à gauche il ne se passe rien. Pourriez vous tester s'il vous plaît ? Il est probable que je ne fasse pas une bonne manipulation ne connaissant pas le logiciel mais je ne vois vraiment pas l'erreur étant donné qu'il me suffit de cliquer sur la flèche triangulaire. Modifié le 14 novembre 2022 par Eleor Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 14 novembre 2022 E-Bahut Signaler Share Posté(e) le 14 novembre 2022 Je ne comprends pas non plus ton problème. Moi, quand j'ouvre trinket.io j'ai ça Je clique ici et le résultat s'affiche à droite, soit 703. Mais j'ai main.py et shapes.py en grisé alors que toi, tu as d'autres indications Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut Denis CAMUS Posté(e) le 14 novembre 2022 E-Bahut Signaler Share Posté(e) le 14 novembre 2022 Clique sur l'onglet "main" et copie le script dedans. Tu peux supprimer les autres onglet en cliquant sur la roue dentée. Ça devrait tourner. PS : On tombe sur plusieurs sites de trinket et certains tournent plus ou moins vite. Là, j'ai pas de problème : https://trinket.io/features/python3 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eleor Posté(e) le 14 novembre 2022 Auteur Signaler Share Posté(e) le 14 novembre 2022 il y a 17 minutes, julesx a dit : Je ne comprends pas non plus ton problème. Moi, quand j'ouvre trinket.io j'ai ça Je clique ici et le résultat s'affiche à droite, soit 703. Mais j'ai main.py et shapes.py en grisé alors que toi, tu as d'autres indications Aah! C'était donc ça! En effet au lieu d'avoir le programme dans main.py je l'avais sur le deuxième onglet "python" je pensais que comme c'était un programme à part il allait s'exécuter mais finalement non. Je viens donc de corriger et d'effacer ce qui se trouvait dans main.py afin de mettre le programme et cela marche. il y a 4 minutes, Denis CAMUS a dit : Clique sur l'onglet "main" et copie le script dedans. Ça devrait tourner. Oui cela fonctionne merci. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eleor Posté(e) le 14 novembre 2022 Auteur Signaler Share Posté(e) le 14 novembre 2022 il y a 11 minutes, Eleor a dit : Aah! C'était donc ça! En effet au lieu d'avoir le programme dans main.py je l'avais sur le deuxième onglet "python" je pensais que comme c'était un programme à part il allait s'exécuter mais finalement non. Je viens donc de corriger et d'effacer ce qui se trouvait dans main.py afin de mettre le programme et cela marche. Oui cela fonctionne merci. Poursuivons, pour l'entier inférieur à 1000 ayant le plus long vol le script ne devrait pas beaucoup changer non ? J'ai alors remplacé les h par les v mais cela ne semble pas être tout à fait bon. def vol(n): V=[n] while n>1: if n%2==0: n=n//2 else: n=n*3+1 V=V+[n] return V def duree(n): return len(vol(n)) def hauteur(n): return max(vol(n)) vmax=0 nmax=0 for n in range (1,1001): v=duree(n) if v>vmax : vmax=v nmax=n print(nmax) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut Denis CAMUS Posté(e) le 14 novembre 2022 E-Bahut Signaler Share Posté(e) le 14 novembre 2022 Ne présente pas ton script sous cette forme sur le forum : la mise en page et les indentations sont souvent faussées. Utilise la balise "code" de la barre d'outil : l'icone < > et fais un copié-collé def vol(n): V=[n] while n>1: if n%2==0: n=n//2 else: n=n*3+1 V=V+[n] return V def duree(n): return len(vol(n)) def hauteur(n): return max(vol(n)) vmax=0 nmax=0 for n in range (1,1001): v=duree(n) if v>vmax : vmax=v nmax=n print("nmax ", nmax) # une fois trouvée la valeur, tu peux l'exploiter print("durée ", duree(nmax)) print("hauteur ", hauteur(nmax)) print("vol ", vol(nmax)) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eleor Posté(e) le 15 novembre 2022 Auteur Signaler Share Posté(e) le 15 novembre 2022 Il y a 11 heures, Denis CAMUS a dit : Ne présente pas ton script sous cette forme sur le forum : la mise en page et les indentations sont souvent faussées. Utilise la balise "code" de la barre d'outil : l'icone < > et fais un copié-collé def vol(n): V=[n] while n>1: if n%2==0: n=n//2 else: n=n*3+1 V=V+[n] return V def duree(n): return len(vol(n)) def hauteur(n): return max(vol(n)) vmax=0 nmax=0 for n in range (1,1001): v=duree(n) if v>vmax : vmax=v nmax=n print("nmax ", nmax) # une fois trouvée la valeur, tu peux l'exploiter print("durée ", duree(nmax)) print("hauteur ", hauteur(nmax)) print("vol ", vol(nmax)) Je ne connaissais pas cette fonctionnalité ici merci. Pour l'entier je trouve donc 871. En revanche lorsque j'ajoute les 3 dernières lignes que vous m'avez ajouté pour exploiter les résultats le programme ne marche plus. Pour la dernière question "déterminer le plus petit entier ayant une durée de vol supérieure ou égale à 200 quelle est sa durée de vol. " J'aurai obligatoirement besoin de ces dernières lignes nn? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 15 novembre 2022 E-Bahut Signaler Share Posté(e) le 15 novembre 2022 Bonjour, il y a 35 minutes, Eleor a dit : En revanche lorsque j'ajoute les 3 dernières lignes que vous m'avez ajouté pour exploiter les résultats le programme ne marche plus. Si, j'ai essayé avec ton script. Mais print("vol ",vol(nmax)) affiche tous les nombres de vol, soit 179, ça fait peut-être beaucoup pour trinket. il y a 38 minutes, Eleor a dit : Pour la dernière question "déterminer le plus petit entier ayant une durée de vol supérieure ou égale à 200 quelle est sa durée de vol. " J'aurai obligatoirement besoin de ces dernières lignes nn? Non, pas forcément, tu as essentiellement besoin de vol(n) appelé par duree(n). Ensuite, il suffit de partir de n=1 et d'incrémenter n en appelant durre(n) jusqu'à ce que tu obtiennes une durée supérieure ou égale à 200. Le mieux, c'est d'employer while. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eleor Posté(e) le 15 novembre 2022 Auteur Signaler Share Posté(e) le 15 novembre 2022 (modifié) il y a 54 minutes, julesx a dit : Bonjour, Si, j'ai essayé avec ton script. Mais print("vol ",vol(nmax)) affiche tous les nombres de vol, soit 179, ça fait peut-être beaucoup pour trinket. Non, pas forcément, tu as essentiellement besoin de vol(n) appelé par duree(n). Ensuite, il suffit de partir de n=1 et d'incrémenter n en appelant durre(n) jusqu'à ce que tu obtiennes une durée supérieure ou égale à 200. Le mieux, c'est d'employer while. L'entier 179 pour le vol le plus long ? Mais j'ai trouvé 871 moi. Mais sinon je suis pas obligée d'ajouter les trois dernières lignes non ? Ceux là : print("durée ",duree(nmax)) print("hauteur ", hauteur(nmax)) print("vol ", vol(nmax)) Modifié le 15 novembre 2022 par Eleor Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 15 novembre 2022 E-Bahut Signaler Share Posté(e) le 15 novembre 2022 Oui, l'entier ayant le plus long vol est 871 et la durée de vol correspondante est 179. Et, bien sûr, tu n'as pas besoin de rajouter les 3 lignes. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eleor Posté(e) le 15 novembre 2022 Auteur Signaler Share Posté(e) le 15 novembre 2022 Il y a 3 heures, julesx a dit : Oui, l'entier ayant le plus long vol est 871 et la durée de vol correspondante est 179. Et, bien sûr, tu n'as pas besoin de rajouter les 3 lignes. Vous avez ajouté une ligne au script pour afficher la durée de vol nn? Car avec le mien on n'obtient que l'entier. def vol(n): V=[n] while n>1: if n%2==0: n=n//2 else: n=n*3+1 V=V+[n] return V def duree(n): return len(vol(n)) def hauteur(n): return max(vol(n)) n=1 n= durée (n) While n<200: n=n+1 print("vol ", vol(nmax)) Quelque chose comme ça ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut Denis CAMUS Posté(e) le 15 novembre 2022 E-Bahut Signaler Share Posté(e) le 15 novembre 2022 Bonsoir, Pas d'accent sur "durée". Pas de majuscule à "While". Derrière le "while", cela doit être indenté. nmax n'est pas connu dans cet extrait de ton script précédent. (Mais il ne sert à rien pour cette partie). #=============================================================== # # Syracuse # #=============================================================== #========================== calcul du vol ======================== def vol(n): V=[n] while n>1: if n%2==0: n=n//2 else: n=n*3+1 V=V+[n] return V #========================= calcul de la durée ====================== def duree(n): return len(vol(n)) #========================= calcul de la hauteur ==================== def hauteur(n): return max(vol(n)) #========================= calcul de nmax =========================== vmax=0 nmax=0 for n in range (1,1001): v=duree(n) if v>vmax : vmax=v nmax=n #print("nmax ", nmax) #=========================== calcul du vol <= 200 ====================== n=1 while duree(n) <= 200: n=n+1 print("Le plus petit entier dont la durée est >= 200 est", n) print("Durée",duree(n)) #=============================================================== Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 15 novembre 2022 E-Bahut Signaler Share Posté(e) le 15 novembre 2022 @ Eleor : Ton script ne va pas du tout. Tu désignes deux choses différentes par la variable n. Il faut distinguer le nombre n de la durée du vol. Appelle par exemple cette durée d. Partant de là, initialise n et d puis utilise le while. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eleor Posté(e) le 15 novembre 2022 Auteur Signaler Share Posté(e) le 15 novembre 2022 (modifié) il y a 41 minutes, julesx a dit : @ Eleor : Ton script ne va pas du tout. Tu désignes deux choses différentes par la variable n. Il faut distinguer le nombre n de la durée du vol. Appelle par exemple cette durée d. Partant de là, initialise n et d puis utilise le while. Si j'essaie avec ce que l'intervenant précèdent m'a écrit cela donne: def vol(n): V=[n] while n>1: if n%2==0: n=n//2 else: n=n*3+1 V=V+[n] return V def duree(n): return len(vol(n)) def hauteur(n): return max(vol(n)) n=1 while duree(n) 200: n=n+1 print(n) print("Durée",duree(n)) Mais je ne comprends pas parce qu'il n'y a pas de distinction non plus ? il y a 58 minutes, Denis CAMUS a dit : Bonsoir, Pas d'accent sur "durée". Pas de majuscule à "While". Derrière le "while", cela doit être indenté. nmax n'est pas connu dans cet extrait de ton script précédent. (Mais il ne sert à rien pour cette partie). #=============================================================== # # Syracuse # #=============================================================== #========================== calcul du vol ======================== def vol(n): V=[n] while n>1: if n%2==0: n=n//2 else: n=n*3+1 V=V+[n] return V #========================= calcul de la durée ====================== def duree(n): return len(vol(n)) #========================= calcul de la hauteur ==================== def hauteur(n): return max(vol(n)) #========================= calcul de nmax =========================== vmax=0 nmax=0 for n in range (1,1001): v=duree(n) if v>vmax : vmax=v nmax=n #print("nmax ", nmax) #=========================== calcul du vol <= 200 ====================== n=1 while duree(n) <= 200: n=n+1 print("Le plus petit entier dont la durée est >= 200 est", n) print("Durée",duree(n)) #=============================================================== Merci Modifié le 15 novembre 2022 par Eleor Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 15 novembre 2022 E-Bahut Signaler Share Posté(e) le 15 novembre 2022 il y a 8 minutes, Eleor a dit : Mais je ne comprends pas parce qu'il n'y a pas de distinction non plus ? Pas de distinction entre quoi et quoi ? Ton script est correct sauf que, comme on cherche une durée supérieure ou égale à 200 la condition est while duree(n)<200. Cela dit, ça ne change rien au résultat, c'est pour le principe. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eleor Posté(e) le 15 novembre 2022 Auteur Signaler Share Posté(e) le 15 novembre 2022 (modifié) D'accord mais alors je n'ai toujours rien qui s'affiche sur trinket io Il me reprend la ligne 11 mais je ne vois pas d'erreur. Modifié le 15 novembre 2022 par Denis CAMUS Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 15 novembre 2022 E-Bahut Signaler Share Posté(e) le 15 novembre 2022 Comme le message d'erreur l'indique, il y a des problèmes d'indentation. En plus, tu n'as pas initialisé n. Ça doit se présenter ainsi Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut Denis CAMUS Posté(e) le 15 novembre 2022 E-Bahut Signaler Share Posté(e) le 15 novembre 2022 Tu définis deux fonctions : duree et hauteur. Les "def doivent être collés à la marge de gauche. Pareil pour le" n=1" et le "while" qui ne font pas partie de la fonction qui les précède. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.