Невозможно добавить переменные - PullRequest
0 голосов
/ 07 августа 2020

Итак, я пытаюсь создать python бота Discord с функцией PVP (на основе «Причудливых приключений Джоджо»). У меня все еще возникает ошибка logi c, когда бонус / другой бонус не добавляется к шансу. Извините, если это не имеет смысла, но я некоторое время пытался понять это. Вот код, из которого, как мне кажется, возникла эта ошибка:

    elif otherstando == "Ultimate Life Form Vampiric Hamonic Spin Ratt Platinum Requiem Over Heaven Under Hell Alternate Universe Act 4 Love Train Bites The Dust":
        otherbonus = 100000000000000000000000000000000000000000000000
    
    otherbonus = otherbonus + other
    bonus = bonus + me

    print(bonus)
    
    embed = discord.Embed(title='***Your Bizarre Adventure***', description="A mini JJBA feature [<@"+ str(ctx.message.author.id) + "> / <@" + str(member.id) + ">]", color=0xFF000)

    embed.add_field(name="Online PVP", value="<@" + str(ctx.message.author.id) + "> [" + stando + "] __**VS**__ <@" + str(member.id) + "> [" + otherstando + "]", inline=False)

    await ctx.send(embed=embed)

    otheron = "True"
    meon = "True"

    print("me " + str(ctx.message.author.id) + " " + str(me))
    print("other " + str(member.id) + " " + str(other))

print (бонус) выводит 180, чего нет в коде . Я могу отправить весь код, если это поможет, просто скажите мне в ответах. Команда работает отлично, но бонус просто не добавляется. В любом случае, заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

В вашем коде происходит несколько вещей. Во-первых, у вас есть случайная функция, которая генерирует число. Эти две строки кода.

other = random.randint(1, 1000)
me = random.randint(1, 1000)

Они могут генерировать значение от 1 до 1000 для other и me.

Предположим, что значение для me равно 160.

Давайте также предположим, что значение для stando равно Anubis, тогда утверждение if истинно и присваивается bonus 20

Значит, значения для bonus это 20 и me это 160 Код ниже имеет

bonus = bonus + me # resulting in 20 + 160 = 180

Таким образом, ваш код может получить значение 180.

Кроме того, я хотел бы дать вам немного дополнительные входные данные для улучшения вашего кода.

Вы можете поместить все значения в операторе if в список, подобный этому.

check_list = ["The Emperor","Anubis", "Ratt", "Osiris", "White Album", "Mr. President", "The Sun"]

Затем вы можете проверить

if stando in check_list:

Это будет то же самое, что

if stando == "The Emperor" or otherstando == "Anubis" or otherstando == "Ratt" or otherstando == "Osiris" or otherstando == "White Album" or otherstando == "Mr. President" or otherstando == "The Sun":
    bonus = 20

Я также хотел бы предложить вам еще несколько вариантов для рассмотрения.

Попробуйте этот пример и посмотрите, можете ли вы использовать что-то подобное.

x = 10
y = 20
z = [10,11,12,13,14,15]

if (x or y) in z:
    print('either x or y has a value from z')
else:
    print('neither x nor y has a value from z')

Если и stando, и otherstando проверяются на одно и то же, И если вы собираетесь присвоить одно и то же значение bonus и otherbonus, вы можете сделать что-то похожее на приведенный выше пример.

Может быть, вы можете попробовать что-то вроде этого.

check_list = ["The Emperor","Anubis", "Ratt", "Osiris", "White Album", "Mr. President", "The Sun"]
if (stando or otherstando) in check_list:
    bonus = otherbonus = 20
0 голосов
/ 07 августа 2020

Возможно, что bonus равно 180, поскольку вы определили как bonus = bonus + me. Например, если me равно 100, а stando равно Killer Queen [Alternative Universe]. Вы можете получить номер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...