IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

problème lors de codage d'un jeu [Python 3.X]


Sujet :

Python

  1. #1
    Membre régulier
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Points : 101
    Points
    101
    Par défaut problème lors de codage d'un jeu
    bonjour,
    j'ai l'énoncé suivant:

    Enoncé
    Écrivez un mini jeu : le programme génère de manière (pseudo-) aléatoire un nombre naturel (nombre secret) dans l'intervalle entre 0 et 100.
    Ensuite, le joueur doit deviner ce nombre en utilisant le moins d'essais possible.
    A chaque tour le joueur peut faire un essai et le programme doit donner une parmi les réponses suivantes:
    "Trop grand" : Si le nombre secret est plus petit et qu'on n'est pas au maximum d'essais
    "Trop petit" : Si le nombre secret est plus grand et qu'on n'est pas au maximum d'essais
    "Gagné en n essais !" : Si le nombre secret est trouvé
    "Perdu ! Le secret était", nombre : Si vous avez fait 6 essais sans trouver le nombre secret
    Le joueur a maximum 6 essais ; s'il ne devine pas le secret après 6 essais, le programme s'arrête après avoir écrit "Perdu ! Le secret était", nombre"
    Exemple d’exécution gagnante (après la génération du nombre à deviner):
    50
    Trop grand
    8
    Trop petit
    20
    Trop petit
    27
    Gagné en 4 essais !
    Exemple d’exécution perdante (après la génération du nombre à deviner):
    50
    Trop grand
    24
    Trop petit
    "37
    Trop petit
    43
    Trop grand
    40
    Trop petit
    41
    Perdu ! Le secret était 42
    Attention: Au dernier essai, votre programme ne doit ni afficher "Trop petit" ni "Trop grand", mais le verdict comme expliqué plus haut !

    Pour qu'Upylab puisse tester si votre solution est correcte, il faut que vous respectiez strictement cette séquence. Si par exemple, vous n'affichez pas Trop petit ou Trop grand, le nombre suivant ne sera pas fourni par le système et votre solution sera considérée comme incorrecte
    En pratique, vous devez débuter votre code comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import random
    NB_ESSAIS_MAX = 6
    secret = random.randint(0,100)
    et ne pas faire d'autre appel à randint ou à une autre fonction de random
    Conseil pour le débogage de votre code: le programme test d'UpyLaB utilise l'argument entier affiché en sortie, comme seed (graine) du module random. En clair, cela signifie qu'après avoir importé random, l'instruction :
    est réalisé par UpyLaB avant d'exécuter votre propre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...
    secret = random.randint(0,100)
    qui fournit le nombre à deviner.
    Attention: l'argument n'est donc pas le nombre à deviner, mais bien ce qui permet au programme de le générer.


    comme solution j'ai proposé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import random
    NB_ESSAIS_MAX = 6
    secret = random.randint(0,100)
    for i in range(NB_ESSAIS_MAX):
        guess = int(input())
        if guess> secret and i<NB_ESSAIS_MAX-1:
            print ("Trop grand" )
        elif guess<secret and i<NB_ESSAIS_MAX-1:
            print("Trop petit")
        #elif guess> secret or guess<secret and i==NB_ESSAIS_MAX:
            #print("Perdu ! Le secret était", secret)
        elif secret==guess and i<NB_ESSAIS_MAX:
            print("Gagné en",i+1,"essais !")
            i=NB_ESSAIS_MAX
    if secret!= guess:
        print("Perdu ! Le secret était",secret)
    le problème sont:
    L'appel à votre programme sur l'input "50↵75↵88↵81↵78↵" avec les arguments "74" a été interrompu par une exception:
    Ligne 9: EOFError: EOF when reading a line : fail
    L'appel à votre programme sur l'input "50↵75↵62↵56↵53↵" avec les arguments "65" a été interrompu par une exception:
    Ligne 9: EOFError: EOF when reading a line
    L'appel à votre programme sur l'input "50↵24↵11↵17↵" avec les arguments "1" a été interrompu par une exception:
    Ligne 9: EOFError: EOF when reading a line
    y a t'il de solution à ces problèmes

  2. #2
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    Citation Envoyé par FATENMRABET Voir le message
    le programme test d'UpyLaB
    C'est quoi ce UpyLab ?
    Parce que ton programme fonctionne, même si on peut aisément l'améliorer, donc si y a un EOFError, c'est de ce UpyLab que provient cette erreur.
    Le temps ronge l'amour comme l'acide.

  3. #3
    Membre régulier
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Points : 101
    Points
    101
    Par défaut solution à ce probème
    Citation Envoyé par bistouille Voir le message
    Salut.



    C'est quoi ce UpyLab ?
    Parce que ton programme fonctionne, même si on peut aisément l'améliorer, donc si y a un EOFError, c'est de ce UpyLab que provient cette erreur.
    salut,
    l'UpyLab c'est une plateforme pour le test des code python en ligne dans un plateforme d'enseignement à distance, bref j'ai trouvé le problème c'est la lecture des ligne en trop si la solution est trouvé avant les 6 essaie , voilà lorsque j'ai ajouter un break ça marche .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import random
    NB_ESSAIS_MAX = 6
    secret = random.randint(0,100)
    for i in range(NB_ESSAIS_MAX):
        guess = int(input())
        if guess> secret and i<NB_ESSAIS_MAX-1:
            print ("Trop grand" )
        elif guess<secret and i<NB_ESSAIS_MAX-1:
            print("Trop petit")
        elif secret==guess and i<=NB_ESSAIS_MAX:
            print("Gagné en",i+1,"essais !")
            break
    if secret!= guess:
        print("Perdu ! Le secret était",secret)

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par FATENMRABET Voir le message
    voilà lorsque j'ai ajouter un break ça marche .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import random
    NB_ESSAIS_MAX = 6
    secret = random.randint(0,100)
    for i in range(NB_ESSAIS_MAX):
        guess = int(input())
        if guess> secret and i<NB_ESSAIS_MAX-1:
            print ("Trop grand" )
        elif guess<secret and i<NB_ESSAIS_MAX-1:
            print("Trop petit")
        elif secret==guess and i<=NB_ESSAIS_MAX:
            print("Gagné en",i+1,"essais !")
            break
    if secret!= guess:
        print("Perdu ! Le secret était",secret)
    Pourquoi tu fais tous tes tests plusieurs fois ??? Et pourquoi NB_ESSAIS_MAX-1 alors que t'aurais pu faire commencer "i" à 1...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import random
    NB_ESSAIS_MAX = 6
    secret = random.randint(0,100)
    for i in range(1, NB_ESSAIS_MAX + 1):
    	guess = int(input())
    	if guess == secret:
    		print("Gagné en %d essais !" % i)
    		break
    	# if
    	print ("Trop %s" % ("petit" if guess < secret else "grand"))
    else:
    	print("Perdu ! Le secret était %s" % secret)
    # while
    Voilà. 2 tests au lieu de 7 !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] Problème d'overflow lors de la création du jeu Pong
    Par BDPython dans le forum Programmation multimédia/Jeux
    Réponses: 4
    Dernier message: 30/12/2018, 20h03
  2. Problème dans le codage d'un jeu python
    Par riwaxer dans le forum Général Python
    Réponses: 3
    Dernier message: 26/04/2018, 18h48
  3. [Lazarus] Problème lors de la création du jeu Pong
    Par obscuwave dans le forum Lazarus
    Réponses: 2
    Dernier message: 25/06/2015, 13h29
  4. Problème lors du chargement
    Par carlito dans le forum Flash
    Réponses: 26
    Dernier message: 06/01/2004, 15h21
  5. Réponses: 2
    Dernier message: 17/08/2003, 20h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo