[résolu] Problème python, boucle infinie

16 nov. modifié dans Technique

Ce matin j'ai échoué là-dessus :

from math import *
def smart():
mois=0
pot=17
while pot<120:
pot=(pot+50)*3/5
print("valeur du pot:",pot)
mois=mois+1
return mois

Numworks freeze la page, si je vais dans un éditeur en ligne, il boucle sur "valeur du pot: 74.99999999999997"

Mots clés:

Réponses

  • Ce n'est pas un problème de programmation ou de python, tu as choisi une suite récurrente qui converge vers 75, et donc la variable pot sera toujours inférieure à 120.

  • putain la honte ...

  • Oui, bon, c'est pas la mort, ça arrive à tout le monde ...

  • Sauf que je comprends pas mon erreur. Vas y fais moi un cours de seconde :D

  • J'ai trouvé la solution et je me rassure quelque part en me disant que je ne suis pas si débile. En fouillant sur le net, j'ai vu un gars qui mettait l'énoncé suivant :

    "Matthieu veut s’acheter un smartphone. Le smartphone de ses rêves coûte 124,99€.
    Il décide d’économiser afin de pouvoir l’acheter.
    Dans sa tirelire il a 17€. Chaque mois il dépense les deux cinquièmes du contenu de sa tirelire puis il reçoit 50€
    d’argent de poche.
    Écrire un script qui lui permette de savoir dans combien de mois il pourra faire son achat."

    Et là forcément ça fait pas pareil, car d'abord il vire les 2/5 puis il ajoute 50 balles. On se ramène au programme suivant qui fonctionne.

    from math import *
    def smart():
    mois=0
    pot=17
    while pot<120:
    pot=pot-(2/5)*pot
    pot=pot+50
    print("valeur du pot:",pot)
    mois=mois+1
    return mois

  • Implicitement, ton texte initial dit la même chose mais c'est très ambigu : en fin de mois il perçoit 50€ et dans le mois il dépense les 2/5. La fin suivant ce qui se passe pendant ...
    La seconde version est totalement explicite. Je pense que la moitié des profs vont mal interpréter donc pour les élèves ...

  • 16 nov. modifié

    @Alain moi je fais déjà partie de la mauvaise moitié :D . Je suppose que le gars qui a remanié l'énoncé a dû certainement le faire en connaissance de cause.

  • C'est l'occasion d'insister sur la bonne lecture d'énoncé et les détails qui changent tout.

  • 16 nov. modifié

    @cyrille T'inquiète, je me serais peut-être trompé aussi (quand je dis 50%, je ne sais pas si je suis optimiste ou pessimiste). Hier j'avais un échange avec ma femme sur un énoncé d'exercice de proba, je trouvais que son énoncé permettait d'imaginer des choses non prévues et donc induisait une ambiguïté et donc une difficulté de calcul. Dans sa logique, il n'y avait pas de problème. On s'est presque disputé :smile:

  • Un peu comme le fameux 8:2(2+2) :smile:

  • 16 nov. modifié

    D'un point de vue théorique, un algorithme de seuil ne devrait être utilisé que si on est certain qu'il termine, donc quand on connaît la limite.
    Dans la pratique, un algorithme de seuil qui boucle sans fin, c'est soit une erreur dans la limite, soit une erreur de programmation de la suite. Pour moi ces algorithmes ont un intérêt pour visualiser la vitesse de convergence, mais ça permet de créer facilement des exercices de programmation donc on en trouve presque partout.

    Si un élève me propose la première version de @cyrille et en déduit que les parents sont des malins parce que ça n'arrivera jamais, malgré l'interprétation de l'énoncé, il a quand même tout compris.

    @Alain, La lecture des énoncés de probabilité c'est un sujet sans fin, comme celui de l'écriture de ces mêmes sujets.
    Et même en étant précis, les proba restent extraordinaires. Pour ceux qui ne connaîtraient pas :
    Dans le square Fermat, il y a 3 bancs libres ayant chacun 2 places. Jules s'installe au hasard sur une place puis Jim arrive et s'installe au hasard, mais sur une place libre.
    Quelle est la probabilité que Jules et Jim soient sur le même banc ?

  • @cyrille a dit :
    putain la honte ...

    La honte c'est l'indentation pourrie de ton code python ... J'dis çaaa, j'dis rieeeen. :D

  • @Nick_au_Repos copier coller de Numworks, la version originale est plus jolie et colorée, en plus Python te jette si tu n'indentes pas.

  • @cyrille a dit :
    @Nick_au_Repos copier coller de Numworks, la version originale est plus jolie et colorée, en plus Python te jette si tu n'indentes pas.

    c'est pour ça que je le dis. En plus c'est pas lisible. :-P (taquinerie inside)

  • @Nono53 a dit :
    @Alain, La lecture des énoncés de probabilité c'est un sujet sans fin, comme celui de l'écriture de ces mêmes sujets.

    Je suis en train d'écrire un exo de proba pour mon DS de samedi matin. Je peine à trouver une formulation et un ordre de mes questions convenables (et pourtant, ce ne sont pas des probas discrètes à la base).

  • @cyrille a dit : copier coller de Numworks.

    Sur le forum, le copier coller depuis l'espace Numworks garde l'indentation lors de l'édition mais, les espaces en début de ligne ne sont pas affichés ensuite (Markdown décide qu'il ne servent à rien), même en indiquant qu'il s'agit de code

    def est_multiple(a,b):
    return b%a==0

    Par contre, le coller depuis Brave dans LibreOffice conserve la coloration syntaxique :D

    • Après tu choisis la police Source Code pro,
    • tu remets l'espace sous le paragraphe à 0,
    • l'interligne normale,
    • tu insères le tout dans un cadre

    et tu as une copie d'écran du code python sur ta numworks, mais qui est modifiable et réutilisable à volonté.

  • @Nono53 a dit :

    • Après tu choisis la police Source Code pro,
    • tu remets l'espace sous le paragraphe à 0,
    • l'interligne normale,
    • tu insères le tout dans un cadre

    Quand tu vois la qualité des vidéos de cyrille, je suis pas sûr qu'il s'embête tant que ça juste pour montrer un bout de code sur le forum :sweat_smile:

  • @alexis Pas pour le forum, mais pour les documents qu'on donne aux élèves.

    Au début je faisais des copies d'écran du code python pour avoir les couleurs, surtout pour les pdf des corrigés, mais pour le changement d'une valeur il faut refaire la copie d'écran.

    J'avais pensé à créer des styles pour pouvoir éditer directement dans le traitement de texte.
    Maintenant j'ai un cadre qui contient toutes les instructions avec la coloration qui va bien et en 3 copier coller je recrée n'importe quel code python tel que sur la calculatrice des élèves.
    Ce cadre c'est un genre de feuille de style python.

    Ce copier coller qui garde le style ne fonctionne pas depuis FF, mais depuis Brave. C'est juste ce que je voulais souligner. Si ça peut rendre service.

  • Ah oui je comprends mieux :)

  • @alexis et @Nono53 moi aussi je comprends mieux. Par contre installer Brave, je le sens pas. Faudrait peut-être effectivement réfléchir à une façon de faire du copier coller en conservant la syntaxe.

Connectez-vous ou Inscrivez-vous pour répondre.