Eleor Posté(e) le 12 novembre 2022 Signaler Posté(e) le 12 novembre 2022 Bonjour peut on m'aider s'il vous plaît, je ne suis vraiment pas douée sur python. Des explications avec éventuellement des solutions m'aideraient à mieux comprendre. Je vous mets le sujet ci joint étant assez long. Citer
E-Bahut julesx Posté(e) le 12 novembre 2022 E-Bahut Signaler Posté(e) le 12 novembre 2022 Bonsoir, Pour ce soir, ce sera bref. Si tu n'as pas avancé ou si personne n'a répondu d'ici demain, je reprendrai ce fil. 1) Il suffit d'appliquer la démarche. 13 impair -> 13*3+1=40 40 pair -> 40/2=20 20 pair -> 20/10=10 10 pair -> 10/2=5 5 impair -> 3*5+1=16 16 pair -> 16/2=8 8 pair -> 8/2=4 4 pair -> 4/2=2 2 pair -> 2/2=1 Terminé ! Le vol de 13 est donc 13 40 20 10 5 16 8 4 2 1 d'où sa durée est de 10 (10 nombres) sa hauteur est de 40 (maximum obtenu) 2) L'algorithme doit traduire la suite des opérations faites ci-dessus. Tant que n>1 Si n pair n <- n/2 Sinon faire n <- 3*n+1 Afficher n Fin si Fin Tant que 3) n%2 reste de la division entière de n par 2 (si n%2=0 alors n est pair) n//2 quotient de la division entière de n par 2 Partant de là, je te laisse coder l'algorithme en Pyrhon. A demain si nécessaire. Citer
Eleor Posté(e) le 13 novembre 2022 Auteur Signaler Posté(e) le 13 novembre 2022 Bonjour, alors le faire en python je sais que je dois remplacer les flèches par = et que tant que c'est "while" mais comment traduire le si et sinon ? Citer
E-Bahut Denis CAMUS Posté(e) le 13 novembre 2022 E-Bahut Signaler Posté(e) le 13 novembre 2022 Bonjour, Tu as l'exemple de cette structure à la question 5. IF ........... : ELSE ....... : Ne pas oublier les ":" en fin de ligne Tu peux faire une recherche sur le forum avec le mot "syracuse". Citer
E-Bahut julesx Posté(e) le 13 novembre 2022 E-Bahut Signaler Posté(e) le 13 novembre 2022 Attention cependant, if et else en minuscules, cf. la suite de l'énoncé à la question 5. Citer
E-Bahut Denis CAMUS Posté(e) le 13 novembre 2022 E-Bahut Signaler Posté(e) le 13 novembre 2022 Oui, pour les mettre en évidence, j'aurais dû plutôt les placer entre guillemets au lieu de majuscules. Citer
Eleor Posté(e) le 13 novembre 2022 Auteur Signaler Posté(e) le 13 novembre 2022 Il y a 2 heures, julesx a dit : Attention cependant, if et else en minuscules, cf. la suite de l'énoncé à la question 5. Donc le programme donne ceci ? While n>1 : If n%2==0 : n=n/2 Else n//2==0 : n=3*n+1 Pint n Je ne l'ai pas tapé sur ma calculatrice car je prends vraiment beaucoup de temps à trouver toute les touches. Et je sais que d'habitude on définit n mais comme c'est un entier je ne sais pas quoi mettre. Citer
E-Bahut pzorba75 Posté(e) le 13 novembre 2022 E-Bahut Signaler Posté(e) le 13 novembre 2022 Si tu disposes d'un accès Internet, tu peux utiliser trinket.io qui donne accès gratuitement à une application Python où tu pourras taper et tester tes programmes facilement. Citer
E-Bahut julesx Posté(e) le 13 novembre 2022 E-Bahut Signaler Posté(e) le 13 novembre 2022 En respectant les indentations, en remplaçant n=n/2 par n=n//2 pour ne travailler qu'avec des entiers et en corrigeant le pint en print, on a while n>1: if n%2==0: n=n//2 else: n=3*n+1; print(n) Mais si tu veux vérifier avec le n=13 initial, il faut rajouter au début les deux lignes n=13 print(n) sinon le 13 de départ n'est pas affiché. Citer
Eleor Posté(e) le 13 novembre 2022 Auteur Signaler Posté(e) le 13 novembre 2022 il y a 9 minutes, julesx a dit : En respectant les indentations, en remplaçant n=n/2 par n=n//2 pour ne travailler qu'avec des entiers et en corrigeant le pint en print, on a while n>1: if n%2==0: n=n//2 else: n=3*n+1; print(n) Mais si tu veux vérifier avec le n=13 initial, il faut rajouter au début les deux lignes n=13 print(n) sinon le 13 de départ n'est pas affiché. D'accord merci je pense que la question ne porte pas sur le 13 de la question 1 alors je vais laisser ainsi. Pour la question 4 je dois créer des variables ? Comme ce qui est montré en dessous ? il y a 35 minutes, pzorba75 a dit : trinket.io il y a 36 minutes, pzorba75 a dit : Si tu disposes d'un accès Internet, tu peux utiliser trinket.io qui donne accès gratuitement à une application Python où tu pourras taper et tester tes programmes facilement. Merci je testerai Citer
E-Bahut julesx Posté(e) le 13 novembre 2022 E-Bahut Signaler Posté(e) le 13 novembre 2022 il y a 28 minutes, Eleor a dit : D'accord merci je pense que la question ne porte pas sur le 13 de la question 1 alors je vais laisser ainsi. C'est juste au cas où tu voudrais teste le script. il y a 29 minutes, Eleor a dit : Pour la question 4 je dois créer des variables ? Comme ce qui est montré en dessous ? Oui, mais il faut les initialiser, par exemple hauteur=0 et durée=1. Citer
Eleor Posté(e) le 13 novembre 2022 Auteur Signaler Posté(e) le 13 novembre 2022 il y a 45 minutes, julesx a dit : C'est juste au cas où tu voudrais teste le script. Oui, mais il faut les initialiser, par exemple hauteur=0 et durée=1. D'accord, celà m'embête un peu car nous n'avons pas fait d'exercice du même type, souvent c'était juste un prix qu'il fallait trouver et un nombre de mètre par exemple et non une liste de chiffres ou le maximum donc je ne sais pas comment m'y prendre. Citer
E-Bahut julesx Posté(e) le 13 novembre 2022 E-Bahut Signaler Posté(e) le 13 novembre 2022 Bon, écoute, je te joins le script complet pour cette partie, essaie de voir ce que tu peux en tirer. n=13 hauteur=0 duree=1 print(n) while n>1: if n%2==0: n=n//2 else: n=3*n+1; duree=duree+1 if n>hauteur: hauteur=n print(n) print("duree ",duree) print("hauteur ",hauteur) Rappels : n=13 pour tester le script hauteur=0 pour déclarer et initialiser la variable duree=1 idem et 1 car le premier nombre n'est pas compté ensuite. Partant de là, essaie de voir la suite. Par contre, je ne reste pas connecté, pour la suite, il faudra compter sur un autre intervenant. Citer
Eleor Posté(e) le 13 novembre 2022 Auteur Signaler Posté(e) le 13 novembre 2022 (modifié) il y a 40 minutes, julesx a dit : Bon, écoute, je te joins le script complet pour cette partie, essaie de voir ce que tu peux en tirer. n=13 hauteur=0 duree=1 print(n) while n>1: if n%2==0: n=n//2 else: n=3*n+1; duree=duree+1 if n>hauteur: hauteur=n print(n) print("duree ",duree) print("hauteur ",hauteur) Rappels : n=13 pour tester le script hauteur=0 pour déclarer et initialiser la variable duree=1 idem et 1 car le premier nombre n'est pas compté ensuite. Partant de là, essaie de voir la suite. Par contre, je ne reste pas connecté, pour la suite, il faudra compter sur un autre intervenant. D'accord merci, pourriez vous expliquer pourquoi il est écrit deux fois duree et hauteur à la fin ? Et donc si je veux recopier le script sans l'exemple de n=13 je n'écris juste pas la première ligne qui est donc "n=13" ? Et pas de soucis le travail sera présent demain matin aussi. Pour la question 5 j'ai donc complété sur la pièce jointe ci dessous. Mais pour V je ne sais pas ce qu'il faut mettre,si il faut l'initialiser comme la hauteur et la duree et donc dans ce cas mettre V=1 ? Ensuite pour la question 6 je ne vois pas ce qu'il faut répondre. Modifié le 13 novembre 2022 par Eleor Citer
E-Bahut pzorba75 Posté(e) le 14 novembre 2022 E-Bahut Signaler Posté(e) le 14 novembre 2022 vol(3) affiche une liste de valeurs mises entre [3,10,...,1]. Il faut donc, en Python, déclarer V=[] comme une liste vide dans la fonction vol et placer la réponse dans v par la méthode .append. Ce n'est pas vraiment "mathématique" mais 'Pythonique". Citer
Eleor Posté(e) le 14 novembre 2022 Auteur Signaler Posté(e) le 14 novembre 2022 Il y a 5 heures, pzorba75 a dit : vol(3) affiche une liste de valeurs mises entre [3,10,...,1]. Il faut donc, en Python, déclarer V=[] comme une liste vide dans la fonction vol et placer la réponse dans v par la méthode .append. Ce n'est pas vraiment "mathématique" mais 'Pythonique". Donc V[3,10,5,16,8,4,2,1] ? Citer
E-Bahut PAVE Posté(e) le 14 novembre 2022 E-Bahut Signaler Posté(e) le 14 novembre 2022 Bonjour, 1er : Citation pourriez vous expliquer pourquoi il est écrit deux fois duree et hauteur à la fin ? Citation L'instruction print génère l'affichage de ce qui est écrit entre parenthèses donc ici il y a 2 choses à afficher : 1) "hauteur" qui est une chaine de caractères (puisque le mot hauteur est écrit entre guillemets) 2) la valeur de la variable nommée hauteur. Si je peux te donner un conseil, il faut que tu trouves le moyen de TESTER tes scripts avec PYTHON. Il est vrai que sur une calculatrice ce n'est pas la joie... Alors installe PYTHON sur un ordinateur (ou travaille en ligne) et met en œuvre tes scripts. Cela serait tellement mieux pour comprendre ce qui se passe.... 2ème : As tu vu en cours la notion de "listes" sous python ? Si non, cela ne s'invente pas. Sur internet en tapant "python listes" tu vas trouver une multitude de sites traitant ce sujet. Le plus difficile est de sélectionner un cours à ton niveau de compréhension (débutant). Il y a des tutoriels très bien faits. Citer
E-Bahut PAVE Posté(e) le 14 novembre 2022 E-Bahut Signaler Posté(e) le 14 novembre 2022 def vol(n): # fonction décrivant le vol V=[n] # la liste V est initialisée avec comme 1er élément la valeur de n while n!=1: #tant que la valeur de n n'est pas égale à 1 on calcule la nouvelle valeur de n if n%2==0: n=n/2 else: n=3*n+1 V=V+[n] # à chaque tour de boucle, on ajoute dans la liste V, la nouvelle valeur de n mais attention # pour que la concaténation (ajout) soit possible, il faut mettre n entre crochets print("valeur de n",n,"liste",V) #simple affichage de contrôle qui peut être supprimé. return V #Programme principal nombre=3 # il suffit de changer la valeur de la variable nombre, pour faire... d'autres vols print(vol(nombre)) # on "appelle" la fonction vol() qui renvoie la liste des valeurs successives quand on part de "nombre" (ici 3) 1) Je t'ai mis le "code" : tu peux le copier (ctrl+c) puis le coller (ctrl+v) dans l'éditeur python.... que tu as récupéré (?) depuis mon dernier message 🤨 2) Pour être en totale conformité avec le modèle de l'énoncé : Je n'ai pas utilisé la méthode V.append(n) mais V=V+[n] J'ai initialisé V à V=[n] pour que la valeur initiale du vol figure dans la liste finale. Bon courage et... teste tes scripts, c'est le moment le plus sympa... quand on obtient ce que l'on veut 😄. C'est vraiment mon jour de bonté 🤓 Voici ce que produit le script que je t'ai donné : Pour n'afficher que le résultat attendu (la dernière ligne), il suffit comme indiqué dans les commentaires de supprimer la ligne (de contrôle) print("valeur de n",n,"liste",V) #simple affichage de contrôle qui peut être supprimé. Citer
Eleor Posté(e) le 14 novembre 2022 Auteur Signaler Posté(e) le 14 novembre 2022 il y a une heure, PAVE a dit : def vol(n): # fonction décrivant le vol V=[n] # la liste V est initialisée avec comme 1er élément la valeur de n while n!=1: #tant que la valeur de n n'est pas égale à 1 on calcule la nouvelle valeur de n if n%2==0: n=n/2 else: n=3*n+1 V=V+[n] # à chaque tour de boucle, on ajoute dans la liste V, la nouvelle valeur de n mais attention # pour que la concaténation (ajout) soit possible, il faut mettre n entre crochets print("valeur de n",n,"liste",V) #simple affichage de contrôle qui peut être supprimé. return V #Programme principal nombre=3 # il suffit de changer la valeur de la variable nombre, pour faire... d'autres vols print(vol(nombre)) # on "appelle" la fonction vol() qui renvoie la liste des valeurs successives quand on part de "nombre" (ici 3) 1) Je t'ai mis le "code" : tu peux le copier (ctrl+c) puis le coller (ctrl+v) dans l'éditeur python.... que tu as récupéré (?) depuis mon dernier message 🤨 2) Pour être en totale conformité avec le modèle de l'énoncé : Je n'ai pas utilisé la méthode V.append(n) mais V=V+[n] J'ai initialisé V à V=[n] pour que la valeur initiale du vol figure dans la liste finale. Bon courage et... teste tes scripts, c'est le moment le plus sympa... quand on obtient ce que l'on veut 😄. C'est vraiment mon jour de bonté 🤓 Voici ce que produit le script que je t'ai donné : Pour n'afficher que le résultat attendu (la dernière ligne), il suffit comme indiqué dans les commentaires de supprimer la ligne (de contrôle) print("valeur de n",n,"liste",V) #simple affichage de contrôle qui peut être supprimé. Bonjour, merci bien je le testerai, je ne pourrai le tester que ce soir étant en cours. Le "while n!=1" l'exclamation correspond à ? C'est une erreur ? Pour la question 6 il faut tout reprendre ? Citer
E-Bahut Denis CAMUS Posté(e) le 14 novembre 2022 E-Bahut Signaler Posté(e) le 14 novembre 2022 Le "!" correspond à "non". Donc "!=" veut dire "pas égal" ou différent. Citer
Eleor Posté(e) le 14 novembre 2022 Auteur Signaler Posté(e) le 14 novembre 2022 Comment suis je sensé programmer les fonctions durées et hauteurs ? Citer
E-Bahut julesx Posté(e) le 14 novembre 2022 E-Bahut Signaler Posté(e) le 14 novembre 2022 Tout simplement en faisant appel à la fonction vol(n). Cf. question 5, tu dois avoir 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 donc il suffit de rajouter en-dessous def duree(n): return len(vol(n)) def hauteur(n): return max(vol(n)) Citer
Eleor Posté(e) le 14 novembre 2022 Auteur Signaler Posté(e) le 14 novembre 2022 (modifié) Il y a 2 heures, julesx a dit : Tout simplement en faisant appel à la fonction vol(n). Cf. question 5, tu dois avoir 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 donc il suffit de rajouter en-dessous def duree(n): return len(vol(n)) def hauteur(n): return max(vol(n)) D'accord merci beaucoup. Donc on arrive à la question 7 "déterminer l'entier inférieur à 1000 ayant la plus grande hauteur puis celui ayant le plus long vol" je pense qu'il faut reprendre l'algorithme de la question 4 pour la hauteur donc celui là: n=1 hauteur=0 duree=1 print(n) while n>1: if n%2==0: n=n//2 else: n=3*n+1; duree=duree+1 if n>hauteur: hauteur=n print(n) print("duree ",duree) print("hauteur ",hauteur) Pour la plus grande hauteur il faut ajouter des lignes à l'algorithme donc peut être lui demander tant que la hauteur < 1000 ? Pour déterminer le vol le plus long il faut reprendre l'algorithme 5 qui affiche tout ce qu'il y a dans la variable ? Mais je ne sais pas non plus comment lui demander d'afficher le plus long vol seulement. Faut il donc faire deux algorithme l'un pour la plus grande hauteur et l'autre pour le plus long vole ? Ou doit on le déterminer par calcul peut être ? J'ai vu quelques formules comme pour la somme des termes= (n-p+1)*Un+UP/2 ou "soit n et p deux entiers naturels alors Un=Up+(n-p)*r Modifié le 14 novembre 2022 par Eleor Citer
E-Bahut julesx Posté(e) le 14 novembre 2022 E-Bahut Signaler Posté(e) le 14 novembre 2022 Il n'y a aucun calcul à faire, seulement créer l'algorithme qui affiche l'entier inférieur à 1000 ayant la plus grande hauteur (en se limitant pour le moment à celui-ci). Pour faire cela, tu as à ta disposition les fonctions définies précédemment, en particulier la fonction hauteur(n). Il faut évidemment afficher à fin deux éléments, l'entier et la hauteur. Donc tu commences par définir deux variables, nmax et hmax, que tu initialises à 0. Ensuite, tu fais varier n de 1 à 1000 en utilisant la fonction hauteur(n). Je te laisse continuer la réflexion. Citer
Eleor Posté(e) le 14 novembre 2022 Auteur Signaler Posté(e) le 14 novembre 2022 (modifié) il y a une heure, julesx a dit : Il n'y a aucun calcul à faire, seulement créer l'algorithme qui affiche l'entier inférieur à 1000 ayant la plus grande hauteur (en se limitant pour le moment à celui-ci). Pour faire cela, tu as à ta disposition les fonctions définies précédemment, en particulier la fonction hauteur(n). Il faut évidemment afficher à fin deux éléments, l'entier et la hauteur. Donc tu commences par définir deux variables, nmax et hmax, que tu initialises à 0. Ensuite, tu fais varier n de 1 à 1000 en utilisant la fonction hauteur(n). Je te laisse continuer la réflexion. Je vois alors si on suit les étapes ça donne hmax=0 nmax=0 For n in range (1,1000) : nmax=... hmax=... mais je ne sais pas comment intégrer ma fonction hauteur(n) Modifié le 14 novembre 2022 par Eleor Citer
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.