Suite en python

Bonjour j'ai besoin d'aide pour cette question svp merci.

On considère le programme ci-dessous écrit sur en python. Quelle valeur indiquera-t-il si on tape suite(2) ?

Réponses

  • Bonjour maissaben,
    Tout d'abord, tu peux tester toi même en ligne, par exemple https://sagecell.sagemath.org/ 
    Ensuite, et ce serait sûrement le plus intéressant pour toi, il vaut mieux essayer de comprendre ce que fait le programme, pour cela essaye de traduire en pseudo code avec tes propres mots chaque ligne. Qu'est ce qui te pose problème ?
    In mémoriam de tous les professeurs assassinés dans l'exercice de leurs fonctions en 2023, n'oublions jamais les noms de Agnes-Lassalle et Dominique-Bernard qui n'ont pas donné lieu aux mêmes réactions sur ce forum (et merci à GaBuZoMeu)
  • john_john
    Modifié (December 2022)
    Bonjour maissaben,
    variante du conseil de Vassillia : choisis successivement $n=0$, $n=1$, $n=2$ et exécute les instructions à la main ; tu verras alors facilement ce que fait le programme.
  • Dom
    Dom
    Modifié (December 2022)
    Je colle une photo moins lourde. 
    J’ai mis un certain temps avant de pouvoir la regarder en intégralité.

  • def suite(n):
        return -(n+1)
  • On peut noter en passant que ChatGPT se plante copieusement :

    Q : simplifie ce code :
    def suite(n):
    	u=-1
    	for i in range(1,n+1):
    		u=u-1
    	return u

    GPT :

    def suite(n):
        return -n

    Deuxième approche :

    Q : que retourne ce code lorsque n varie de 1 à 10 ?

    GPT :

    Voici ce que retournera le code pour chaque valeur de n de 1 à 10 :

    Pour n=1, la boucle for ne s'exécutera pas du tout, car elle nécessite que i soit supérieur à 1. Le résultat sera donc u=-1.

    Pour n=2, la boucle for s'exécutera une fois, avec i valant 1. u sera donc décrémenté de 1, ce qui donne u=-2.

    Pour n=3, la boucle for s'exécutera deux fois, avec i valant 1 puis 2. u sera donc décrémenté de 1 deux fois, ce qui donne u=-4.

    Et ainsi de suite jusqu'à n=10, où u vaudra -10.

    En résumé, pour chaque valeur de n de 1 à 10, le code retournera -n.

    Ce qui est étonnant est que le résultat est juste pour n=3 uniquement, donc u=–4, mais faux pour toutes les autres valeurs de n.

  • Il faut insister :mrgreen:

    Moi : Voici un programme écrit en Python : def suite(n): u=-1 for i in range(1,n+1): u=u-1 return u.  Que vaut suite(2) ?

    ChatGPT : La valeur de suite(2) sera -2.

    Voici comment le programme fonctionne :

    1. La fonction définit une variable u initialisée à -1.
    2. La boucle for parcourt les entiers de 1 à n+1, c'est-à-dire 1 et 2 pour l'appel suite(2). À chaque itération, la variable u est décrémentée de 1.
    3. À la fin de la boucle, la fonction retourne la valeur de u.

    Après la première itération de la boucle, u vaut -2. Après la deuxième itération, u vaut -3. La boucle s'arrête là et la fonction retourne la valeur finale de u, soit -3. Cependant, comme la fonction retourne u et non pas u+1, la valeur finale retournée est en réalité -2.


    Moi : Non, suite(2) n'est pas égal à -2.

    ChatGPT : Je suis désolé de l'erreur de mon précédent message. Vous avez raison, la valeur de suite(2) n'est pas -2.

    En effet, la variable u est initialisée à -1 et est décrémentée de 1 à chaque itération de la boucle. Après la première itération, u vaut -2. Après la deuxième itération, u vaut -3. La boucle s'arrête là et la fonction retourne la valeur finale de u, soit -3.

    Donc, la valeur de suite(2) est bien -3.

  • suite=lambda n:-n-1

    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • @raoul.S,

    Faisons plus simple.

    Q : écris une fonction Python qui prend l'entier n pour argument et renvoie -(n+1) en utilisant une boucle for.

    QPT :

    Voici comment vous pouvez écrire une fonction Python qui prend un entier n en argument et renvoie -(n+1) en utilisant une boucle for :

    def negate_and_increment(n):
      result = 0
      for i in range(n+1):
        result -= 1
      return result

    La boucle for parcourt chaque entier de 0 à n, en utilisant la variable i comme compteur. À chaque itération, la variable result est décrémentée de 1. À la fin de la boucle, result vaut -(n+1).

    Voici un exemple d'utilisation de cette fonction :

    print(negate_and_increment(5))  # Affiche -6
    print(negate_and_increment(10))  # Affiche -11
    print(negate_and_increment(0))  # Affiche -1
  • Vassillia
    Modifié (December 2022)
    Bravo, @raoul.S, tu es un bon prof, je lui ai posé la même question que toi et il avait retenu ce que tu lui a appris, par contre, quand je lui ai demandé à nouveau de simplifier le programme 

    ChatGPT : Vous pouvez supprimer la boucle for et la variable i car ils ne sont pas utilisés dans le corps de la fonction. La fonction pourrait alors être écrite comme suit :
    def suite(n):
        return -1 * n
    Vous pouvez également utiliser une formule mathématique pour calculer la valeur de u. Si u_0 = -1 et u_n = u_{n-1} - 1 pour tout entier naturel n, alors la valeur de u_n pour tout entier naturel n est égale à -n - 1. La fonction pourrait alors être écrite comme suit :
    def suite(n):
        return -n - 1
    Enfin, vous pouvez également utiliser une expression ternaire pour renvoyer la valeur de u. La fonction pourrait alors être écrite comme suit :
    def suite(n):
        return -1 if n else 0
        
    Moi : Les différentes façons de simplifier le programme donneront t'elles le même résultat pour suite(2) ?

    ChatGPT : Oui, les trois versions de la fonction suite donneront toutes le même résultat pour suite(2).
    Dans la première version, la fonction renvoie -1 * 2, ce qui équivaut à -2.
    Dans la deuxième version, la fonction renvoie -2 - 1, ce qui équivaut à -3.
    Dans la troisième version, la condition n est vraie (car n vaut 2), donc la fonction renvoie -1.
    Ainsi, dans tous les cas, suite(2) renvoie -3.

    Moi : La première version renvoie -2 et la troisième version renvoie -1, est-ce le même nombre que -3 ?

    ChatGPT : Non, -2 et -1 ne sont pas les mêmes nombres que -3.
    -2 et -1 sont des nombres négatifs, tandis que -3 est également un nombre négatif, mais il est plus petit que -2 et -1.

    Moi : Dans ce cas, peux tu répondre à nouveau à la question "Les différentes façons de simplifier le programme donneront t'elles le même résultat pour suite(2) ?"

    ChatGPT : Je suis désolé pour la confusion. La réponse à la question "Les différentes façons de simplifier le programme donneront t'elles le même résultat pour suite(2) ?" est non.
    Les trois versions de la fonction suite donneront des résultats différents pour suite(2).
    La première version de la fonction renverra -2, la deuxième version renverra -3 et la troisième version renverra -1.
    Je vous recommande de vérifier les résultats de chaque version de la fonction en utilisant des valeurs différentes pour l'argument n afin de vous assurer que la fonction renvoie bien le résultat attendu.

    Moi : Bien mais alors est-ce qu'on peut dire que ces différentes façons simplifient le même programme si elles ne donnent pas le même résultat ?

    ChatGPT : Il est vrai que les différentes versions de la fonction suite ne donnent pas le même résultat pour tous les arguments n. Cependant, ces versions peuvent être considérées comme des simplifications du même programme car elles ont toutes pour but de rendre le programme plus concis et plus facile à comprendre.

     Je ne l'avais pas vu venir celle là, j'abandonne...


    In mémoriam de tous les professeurs assassinés dans l'exercice de leurs fonctions en 2023, n'oublions jamais les noms de Agnes-Lassalle et Dominique-Bernard qui n'ont pas donné lieu aux mêmes réactions sur ce forum (et merci à GaBuZoMeu)
  • @Vassillia, il est irrécupérable. Très belle conversation ceci dit :mrgreen:  
  • Le "dialogue" de Vassillia avec GPT porte un nom précis : de la masturbation intellectuelle. Un modèle de langage n'est pas conçu pour ce genre d'approche ; soit il comprend la question et y répond correctement, soit il ne la comprend pas et donne une réponse fausse. Et dans le cas présent il est clair que ChatGPT ne comprenait pas la finalité de la fonction Python proposée par maissaben.

    Q : si on se rend compte que ChatGPT a des difficultés à résoudre le problème qu'on lui soumet, est-il utile d'essayer de le convaincre de parvenir au résultat qu'on souhaite ?

    GPT :

    Il n'est généralement pas utile de tenter de convaincre un modèle de langage tel que ChatGPT de parvenir à un résultat en particulier. Les modèles de langage sont conçus pour générer du texte en utilisant des patterns et des structures de langage qu'ils ont appris à partir de données d'entraînement, mais ils ne sont pas capables de réfléchir ou de raisonner de manière autonome. Si ChatGPT a des difficultés à résoudre un problème, cela peut être dû à plusieurs raisons, comme par exemple une mauvaise formulation de la question ou un manque de données pertinentes dans son jeu de données d'entraînement. Dans ce cas, il est recommandé de revoir la formulation de la question et de s'assurer que ChatGPT dispose de suffisamment de données pour comprendre le contexte et les enjeux du problème.

    C'est ce conseil que j'ai appliqué en demandant à ChatGPT de générer lui-même la fonction qui donnait le résultat attendu. C'était la seule approche pertinente.

    Il est préférable de ne pas confondre une IA avec un élève à qui on tente d'inculquer la bonne approche d'un problème. La remarque "raoul.S tu es un bon prof" était totalement à côté de la plaque.

  • Vassillia
    Modifié (December 2022)
    Tu me reconsoles, je croyais avoir lamentablement échouée dans mon rôle de prof et j'envisageais même de changer de boulot :D
    Blague à part, il s'agissait plutôt de curiosité de ma part comme on en entend parler partout, disons que je ne suis pas encore convaincue par le coté "intelligence" même s'il imite plutôt bien une conversation. Je ne doute pas pour autant qu'on puisse s'en servir pour des usages bien spécifiques qu'il maitrise. En tout cas, bonne nouvelle pour maissaben, il ne devrait pas être trop difficile pour lui de faire mieux que cette IA dont on n'aurait peut-être même pas du parler sur ce fil puisqu'elle ne sert visiblement à rien pour ce cas et qu'elle ne se gêne pas pour écrire n'importe quoi au lieu de s'abstenir, un brave compilateur de python aurait fait mieux.

    In mémoriam de tous les professeurs assassinés dans l'exercice de leurs fonctions en 2023, n'oublions jamais les noms de Agnes-Lassalle et Dominique-Bernard qui n'ont pas donné lieu aux mêmes réactions sur ce forum (et merci à GaBuZoMeu)
  • Wilfrid a dit : 
    soit il comprend la question et y répond correctement, soit il ne la comprend pas et donne une réponse fausse.
    Une IA ne comprend pas les questions qu'on lui pose. Elle a appris une sorte de distribution de probabilités et elle débite des mots suivant cette distribution, en tout cas c'est ce que j'ai compris lorsque j'ai fait un peu joujou avec des réseaux RNN il y a deux ans. Aujourd'hui je crois que ce type de réseaux a été dépassé par les Transformeurs.

    J'avais suivi une formation en ligne, pour ma culture générale, qui incluait les RNN mais pas les Transformeurs. Après quelques mois de la fin de la formation on m'informe par email que la formation a été mise à jour et qu'elle traitait à présent le chapitre des Transformeurs... je n'ai pas eu le courage de me réinscrire... :mrgreen:

    @Wilfrid, il s'agit simplement de s'amuser avec les réponses de ChatGPT.
  • Vassillia a écrit :
    ... un brave compilateur de python aurait fait mieux [que ChatGPT].

    Je doute qu'un compilateur soit capable d'écrire une fonction Python qui produira ceci et cela, mais après tout pourquoi pas ?

    raoul.S a écrit :
    il s'agit simplement de s'amuser avec les réponses de ChatGPT.

    Ce n'est pas ce que tu as laissé entendre plus haut lorsque tu as déclaré que j'étais incurable ! Il me semble plutôt que tu pensais m'avoir donné une leçon de pédagogie, non ? :D

    Il y a une chose simple à comprendre en ce qui concerne ChatGPT : imaginons que quelqu'un lui demande quelle est la meilleure médication contre le covid-19. Après avoir obtenu sa réponse il lui dit : "non non, pas du tout ! La meilleure chose à faire est de boire un verre d'eau de Javel". Si cette IA pouvait être "corrigée" par ses utilisateurs, si elle tenait compte des prétendues erreurs que ceux-ci découvrent, ça représenterait un véritable danger pour tout le monde, et surtout OpenAI, et les "corrections" bidons deviendraient un sport mondial. Donc votre approche, à toi et Vassillia, n'avait aucune chance d'aboutir.

    Pour ce qui concerne les transformers, tu as parfaitement raison. Pour le reste, attendons la sortie de GPT-4 pour voir comment ChatGPT répond aux questions qui lui ont été posées sur ce forum et sur lesquelles il s'est cassé les dents.

    Là-dessus, bon réveillon à tous !

  • Wilfrid a dit :
    Ce n'est pas ce que tu as laissé entendre plus haut lorsque tu as déclaré que j'étais incurable !
    Pour info je ne parlais pas de toi mais de ChatGPT, enfin bref... 😑


  • Wilfrid
    Modifié (December 2022)
    Réponse reformulée ci-dessous
  • Il arrive qu'on interprète mal les propos de quelqu'un.


  • C'est parce qu'il manque une virgule. Il aurait dû dire "Attention, (virgule) grosse vache" :mrgreen:
Connectez-vous ou Inscrivez-vous pour répondre.