Besoin d'aide Python
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Besoin d'aide Python



  1. #1
    Val36

    Post Besoin d'aide Python


    ------

    Bonjour,
    Je recherche une solution, quelqu'un pourrais m'aider ? je précise que je débute dans la programmation.
    Je dois faire un programme qui demande à l'utilisateur d'entrer un nombre, puis l'ordinateur dois le deviner. A chaque proposition par l'ordinateur, l'utilisateur dois dire si c'est "plus" ou "moins" pour qu'il puisse trouver le nombre.
    Voici le code que j'ai fait :
    Code:
    import random
    a=int(input("donne moi un nombre :"))
    n=random.randint(1,100)
    print("est-ce",n,"?")
    while n!=a:
        c=int(input("plus(1) ou moins(2) ?:"))
        if c==1:
            n=n*random.randint(2,4)
            n=int(n)
            print("est-ce",n,"?")
        if c==2:
            n=n/random.randint(2,4)
            n=int(n)
            print("est-ce",n,"?")
    if n==a:
        print("j'ai gagné !!")
    Mais ce n'est pas sur ça que je bloque mais sur : "Modifiez le programme pour que l'ordinateur s'aperçoive si l'utilisateur triche"
    Pouvez mous m'aider ? Comment pourrai-je faire ?

    Merci d'avance pour votre réponse !

    -----

  2. #2
    MissJenny

    Re : Besoin d'aide Python

    puisque le programme connaît le nombre dès le début, il est facile de vérifier si les réponses de l'utilisateur sont correctes.

  3. #3
    vgondr98

    Re : Besoin d'aide Python

    Citation Envoyé par MissJenny Voir le message
    puisque le programme connaît le nombre dès le début, il est facile de vérifier si les réponses de l'utilisateur sont correctes.
    Si le programme utilise cette information, alors c'est le programme qui triche. Si on ne veut pas utiliser cette information, il faudrait regarder la cohérence des résultats. Par exemple, si l'utilisateur dit que le nombre est inférieur à 100 à un moment puis 30 coups plus tard dit que le nombre est supérieur à 2000 alors l'utilisateur triche.

  4. #4
    pm42

    Re : Besoin d'aide Python

    En pratique, on trouve le nombre plus rapidement par dichotomie. Demander à l'utilisateur aléatoirement est très peu efficace.
    Et si on fait une dichotomie, on va garder les bornes haute et basse déduites des réponses de l'utilisateur.
    A partir de là, il sera très facile de détecter s'il triche : sa réponse sera incohérente avec les dites bornes.

  5. A voir en vidéo sur Futura
  6. #5
    vgondr98

    Re : Besoin d'aide Python

    Citation Envoyé par pm42 Voir le message
    A partir de là, il sera très facile de détecter s'il triche : sa réponse sera incohérente avec les dites bornes.
    Si l'utilisateur ne peut répondre que par + ou - alors avec une dichotomie, le programme va converger vers une réponse donnée qui sera fausse si l'utilisateur triche.

    Par exemple, si le nombre de l'utilisateur est le nombre 100 et que l'utilisateur décide de donner comme réponse - + - + - + - à l'infini, alors si le programme commence par la valeur 1000, l'utilisateur donnera comme réponse - et puis ensuite
    le programme donnera 500 comme proposition puis l'utilisateur donnera comme proposition + et le programme donnera comme réponse 750 et ainsi de suite. A un moment donné, le programme arrivera à une seule valeur possible et sera "étonné" que l'utilisateur réponde - ou + et pourra donc déduire que l'utilisateur triche.

    Par contre si l’utilisateur ne répond que par une suite de +, alors le programme ne trouvera aucune valeur possible et il sera impossible de savoir si l'utilisateur triche (enfin je crois).

  7. #6
    MissJenny

    Re : Besoin d'aide Python

    Citation Envoyé par vgondr98 Voir le message
    Si le programme utilise cette information, alors c'est le programme qui triche. Si on ne veut pas utiliser cette information, il faudrait regarder la cohérence des résultats. Par exemple, si l'utilisateur dit que le nombre est inférieur à 100 à un moment puis 30 coups plus tard dit que le nombre est supérieur à 2000 alors l'utilisateur triche.
    mais si l'utilisateur est pervers en plus d'être tricheur, il peut tromper le programme assez longtemps...

  8. #7
    pm42

    Re : Besoin d'aide Python

    Citation Envoyé par MissJenny Voir le message
    mais si l'utilisateur est pervers en plus d'être tricheur, il peut tromper le programme assez longtemps...
    Pas vraiment, log en base 2 du nombre maximal qu'on autorise.

  9. #8
    MissJenny

    Re : Besoin d'aide Python

    Citation Envoyé par vgondr98 Voir le message
    Si le programme utilise cette information, alors c'est le programme qui triche.
    je n'avais pas réagi à cette phrase. En fait comme l'ordinateur n'a pas de conscience, la fonction qui devine peut très bien ignorer la solution et la fonction qui vérifie ne pas savoir à quel jeu on joue. Donc le programme peut connaître la solution et cependant ne pas tricher.

  10. #9
    vgondr98

    Re : Besoin d'aide Python

    Citation Envoyé par MissJenny Voir le message
    si l'utilisateur est pervers
    Pour cela, l'utilisateur n'a qu'à choisir le nombre 101. Vu le code, le programme va prendre un petit moment pour trouver la solution.

  11. #10
    umfred

    Re : Besoin d'aide Python

    il suffit comme l'a dit pm42 de mémoriser (actualiser) les bornes maxi et mini à chaque tour. rien n'empêche dans le code que le bon nombre soit effectivement 101, on ne borne pas le résultat de n dans l'algo, on choisit juste au départ un nombre entre 0 et 100, ensuite selon la réponse on le multiplie ou le divise par 2, 3 ou 4

Discussions similaires

  1. Besoin d’aide en Python
    Par inviteca41f3d3 dans le forum Programmation et langages, Algorithmique
    Réponses: 7
    Dernier message: 18/03/2021, 12h57
  2. Besoin d'aide pour finir un mémory (python)
    Par invite24adc028 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 02/05/2019, 12h01
  3. Besoin d'aide PYTHON / TURTLE
    Par inviteed78a235 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 15/11/2017, 17h01
  4. Besoin d'explication sur un programme en Python 3
    Par invite70312004 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 03/03/2014, 12h25