Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un NONE inattendu

Sujet résolu
    13 octobre 2012 à 12:46:03

    Bonjour à tous,

    Je travaille sur le premier TP du tutoriel sur le langage Python (Tous au ZCasino).
    Actuellement, je programme une fonction cont qui demande à l'utilisateur s'il veut poursuivre la partie.
    Problème, dans l'input que j'utilise, un NONE inattendu apparaît à la fin et je n'arrive pas à m'en débarasser...

    Vous pouvez jeter un coup d'oeil à mon code?

    Merci d'avance

    def cont(argentFin):
        """
        Fonction demandant à l'utilisateur s'il souhaite continuer la partie
        Elle prend en entree la somme d'argent restant au joueur
        Si cette somme vaut 0 alors cette fonction ne proposera pas
        de continuer la partie
        Sinon elle renvoie en entree un booleen
        """
    
        chaine =print("il vous reste ", argentFin, "$", "voulez vous continuer la partie? (y or n):")
       
        if argentFin == 0:
            return "plumé c'est fini"
    
        else:
            while True:
                jouer = input(chaine)
                if jouer == 'n':
                    print("gooood")
                    print(" vous repartez avec ", argentFin, "$")
                    break
                elif jouer == 'y':
                    print("Comme tu veux")
                    return True
                else:
                    try:
                        jouer = str(jouer)
                        assert(jouer == 'y' or jouer == 'n')
                    except AssertionError:
                        print("quoi?")
                    except NameError:
                        print("ah non")
    
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      13 octobre 2012 à 12:54:34

      Un simple conseil qui te rendra service, évite de mettre des print dans une fonction.

      Une fonction a une tâche spécifique, et se termine généralement par return.

      Ton problème en l'occurence vient d'un double print, tu appelles ta fonction cont sans doute par un print qui appelle elle aussi (la fonction) un print.

      >>> print(print("bonjour"))
      bonjour
      None
      


      >>> def test(ch):
      ...     print(ch)
      ... 
      >>> print(test("bonjour"))
      bonjour
      None
      
      • Partager sur Facebook
      • Partager sur Twitter
        13 octobre 2012 à 13:08:14

        Merci pour le conseil Fred

        Effectivement, mon problème vient d'un double print.

        Pour me débarasser du premier (ligne 10) j'ai essayé d'enlever le print, mais j'ai une erreur de syntaxe.

        Sais-tu comment je pourrais enlever le print ligne 10 tout en conservant la phrase que je veux écrire? (phrase qui fait intervenir des variables)

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          13 octobre 2012 à 13:12:11

          enlève simplement chaine = car un print permet juste l'affichage sur écran.

          Cependant ça serait bien d'indiquer le message d'erreur.

          • Partager sur Facebook
          • Partager sur Twitter
            13 octobre 2012 à 13:22:19

            En réalité, j'ai créé la variable chaine parce que j'aimerais introduire la phrase ligne 10 dans l'input ligne 17.

            En essayant de faire ça et en compilant, python me renvoie
            TypeError: input expected at most 1 arguments, got 4

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              13 octobre 2012 à 13:27:43

              Pourquoi ne fais-tu pas?

              print("il vous reste ", argentFin)
              jouer = input("voulez vous continuer la partie? (y or n):")
              
              • Partager sur Facebook
              • Partager sur Twitter
                13 octobre 2012 à 13:32:05

                Effectivement, ça marche bien mieux!

                Merci!
                • Partager sur Facebook
                • Partager sur Twitter

                Un NONE inattendu

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown