Variable non reconnue

Bonjour,

Je programme un jeu de pendu pour un cours, tout marchait bien jusqu'à ce que je dois faire une fonction, normalement très simple qui demande à l'utilisateur d'insérer une lettre. Cependant, ma variable choix ne fonctionne pas. J'ai cependant déjà utilisé la même méthode avec d'autres fonctions, en utilisant global et en pensant bien à l'appel de la fonction, mais cela ne fonctionne pas.
Je suis débutante et j'aimerais bien un petit peu d'aide.
Voici ma fonction :

3 réponses

  1. Modérateur

    Bonjour,

    A l'avenir, merci de poster ton code correctement sur le forum ( et non pas une image ! ) en utilisant l'icone prévue à cet effet lors de la rédaction de tes messages.

    Ensuite... regarde ce que fais ceci :

    def unefonction(unevariable):
        return str(input("choisir une valeur")) + unevariable
        
    choix = unefonction("12345")
    print(choix)

    1. @jordane45:
      Je ne sais pas ce que tu voulais montrer avec ce test.
      Par défaut, input() retourne un type str()

      1. Modérateur

        regarde comment j'ai utilisé les variables ....

        Comment on passe une variable dans une fonction

        Comment on utilise une variable provenant d'une fonction (via le return)

      2. Modérateur
        @jordane45

        As tu au moins testé le code que je t'ai fourni ?

        Vois tu ce qu'il fait ?

        Cela ne t'aide t'il pas un minimum à comprendre le souci dans ton code ?

    2. Modérateur

      Bonjour,

      , c'est PierrotLeFou qui t'a écrit pas SenLie_ :-) De plus, je pense que PierrotLeFou te dit que ça ne sert à rien d'envelopper l'appel d'input dans str(...) car input retourne déjà une str..

      @PierrotLeFou je pense que jordane45 voulait montrer qu'il est inutile de passer par une variable global (comme proposé dans le message initial de SenLie_), on peut simplement jouer sur la valeur retournée par la fonction saisir_lettre.

      Cependant les extraits de code proposés jusqu'à présent ne contrôlent pas si la saisie ne comporte qu'une seule lettre non accentuée. Il faudrait plutôt écrire :

      def saisir_lettre(text :str = "") -> str:
          ok = False
          while not ok:
              s = input(text)
              s = s.lower()
              ok = (len(s) == 1) and 'a' <= s <= 'z'
          return s
      
      lettre = saisir_lettre("Veuillez saisir une lettre non accentuée : ")
      print(lettre)

      Exemple :

      (mando@silk) (~) $ python3 saisie.py 
      Veuillez saisir une lettre non accentuée : é
      Veuillez saisir une lettre non accentuée : ab
      Veuillez saisir une lettre non accentuée : A
      a

      Bonne chance