Probleme if/else en python

Résolu
Towerz -  
 Utilisateur anonyme -

Bonjour,

Je suis actuellement entrain de créer un bot discord en python et je veux faire en sorte qu'il donne un calcul et que par apport à la réponse il dira si c'est juste ou pas mais ma fonction if ne marche pas ça envoie toujours sur le else merci d'avance pour vos reponses

@bot.command()
async def calcul(ctx):
    print(ctx)
    liste = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
    N1 = random.randint(1,len(liste))
    N2 = random.randint(1,len(liste))
    R = N1 + N2

    await ctx.send(f"Combien fond {N1} + {N2} ?")
    def check(message):
        return message.author == ctx.message.author and ctx.channel == message.channel

    reponse = await bot.wait_for("message", timeout=10, check=check)
    print(reponse.content)
    if reponse.content == R:
        await ctx.send("Bien joué !")
    else:
        await ctx.send("Non")

2 réponses

  1. jee pee Messages postés 31863 Date d'inscription   Statut Modérateur Dernière intervention   9 973
     

    Bonjour,

    Je ne sais pas exactement à quoi servent toutes ces commandes. Mais peut être tout simplement que reponse.content est une chaine alors que pour le test il faut que ce soit un int.


    1
    1. Towerz
       

      Merci j'ai regardé et c'était bien ça j'ai juste eu ducou a convertir ma chaine en int (ligne15)

      @bot.command()
      async def calcul(ctx):
          print(ctx)
          liste = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
          N1 = random.randint(1,len(liste))
          N2 = random.randint(1,len(liste))
          R = N1 + N2
      
          await ctx.send(f"Combien fond {N1} + {N2} ?")
          def check(message):
              return message.author == ctx.message.author and ctx.channel == message.channel
      
          reponse = await bot.wait_for("message", timeout=10, check=check)
          print(reponse.content)
          reponse2 = int(reponse.content)
          if reponse2 == R:
              await ctx.send("Bien joué !")
          else:
              await ctx.send("Non")
      0
  2. Utilisateur anonyme
     

    Bonjour

    Cette ligne 

    if reponse.content == R:

    veut dire dans la variable reponse, tu cherches le contenu de la variable R, mais dans l'extrait posté tu ne montres pas cette variable.

    Existe-t-elle?

    A-t-elle une valeur ?

    Ne voulais-tu pas dire la lettre R, auquel cas, c'est 

    if reponse.content == 'R':

    qu'il fallait écrire


    0
    1. jee pee Messages postés 31863 Date d'inscription   Statut Modérateur Dernière intervention   9 973
       

      R est en ligne 7

      0
      1. Utilisateur anonyme > jee pee Messages postés 31863 Date d'inscription   Statut Modérateur Dernière intervention  
         

        Ha oui, j'avais pas bu pourtant...

        0
    2. Towerz
       

      La variable R existe normalement elle est bien dans l'extrait,ligne 7.

      liste = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
          N1 = random.randint(1,len(liste))
          N2 = random.randint(1,len(liste))
          R = N1 + N2

      Je voudrais que le bot compare le résultat de l'adition de la variable R et le résultat donner par la personne (reponse.content) mais ça ne fonctionne pas j'ai regarder a plusieurs endroit,  même quand c'est le même chiffre dans les deux variable ça ne veut pas marcher 

      0