Probleme if/else en python

Résolu/Fermé
Towerz - 8 janv. 2023 à 15:55
Whismeril Messages postés 18939 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 22 février 2024 - 8 janv. 2023 à 17:35

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

jee pee Messages postés 39301 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 février 2024 9 185
8 janv. 2023 à 16:06

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

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
Whismeril Messages postés 18939 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 22 février 2024 921
8 janv. 2023 à 16:02

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


Quand j'étais petit, la mer Morte n'était que malade.
George Burns

0
jee pee Messages postés 39301 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 février 2024 9 185
8 janv. 2023 à 16:08

R est en ligne 7

0
Whismeril Messages postés 18939 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 22 février 2024 921 > jee pee Messages postés 39301 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 février 2024
8 janv. 2023 à 17:35

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

0

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