Проблема с if elif aiogram

@dp.message(Command('cifra'))
async def cmd_dice(message: types.Message):
    import random
    rndm = str(random.randint(1, 2))
    z=1
    n=2
    if rndm = z:
        await message.answer("1" + rndm)
    elif rndm = n:
        await message.reply("ваше число 2" + rndm)

Что не так в этом куске кода? Мне нужно вывести определенное сообщение при определенном результате Т.е рандом выдает число 2 и выводится сообщений "ваше число 2",а если число 1 - выводится сообщение "ваше число 1". Думаю, суть ясна =D


Ответы (2 шт):

Автор решения: Vladimir Ignatenko

= - это присваивание, а сравнение это ==

У вас же получается что в if вы присваиваете переменной rndm значение из переменно z. И такая операция всегда возвращает true, а значит всегда выполняется первое условие.

Плюс ко всему вы зачем-то конвертируете число, которое вам вернула функция randint в строку, а потом эту строку сравниваете с числом.

→ Ссылка
Автор решения: feni0707

В переменной rndm у вас храниться строковая 1 или 2, чему свидетельствует str

rndm = str(random.randint(1, 2))

Чтобы получить ожидаемый результат вы можете воспользоваться следующим кодом

from random import randint
rand_int = randint(1, 2)
if rand_int == 1:
    await message.answer('Вам выпало 1')
else:
    await message.answer('Вам выпало 2')
→ Ссылка