Вместо ничьи выводится None

Я хочу создать игру на питоне - камни ножницы бумага.

Но при просчёте победителя вместо Ничьи возвращает None

Помогите пожалуйста.

Код

from variants import Variants
from player import Player

bot = Player()

alex = Player(Variants.PAPER, "Amir")

print(bot.whoWins(bot, alex))

файл variants.py

from enum import Enum

class Variants(Enum):
    ROCK = 1
    PAPER = 2
    SCISSORS = 3

файл player.py

from variants import Variants
import random as r

class Player:
    def __init__(self, variant = Variants(1), name = "Alex"):
        self.variant = variant
        self.name = name
def whoWins(self, bot, alex):
        bvariant = r.randint(1, 3)
        bot = "Победил бот!"
        alex = "Победил {0}".format(alex.name)
        
        if (self.variant == Variants(1)) and (bvariant == Variants(1)):
            return "Ничья"
        elif (self.variant == Variants(1)) and (bvariant == 2):
            return bot
        elif (self.variant == Variants(1)) and (bvariant == 3):
            return alex
        elif (self.variant == Variants(2)) and (bvariant == 1):
            return alex
        elif (self.variant == Variants(2)) and (bvariant == 2):
            return "Ничья"
        elif (self.variant == Variants(2)) and (bvariant == 3):
            return bot
        elif (self.variant == Variants(3)) and (bvariant == 1):
            return bot
        elif (self.variant == Variants(3)) and (bvariant == 2):
            return alex
        elif (self.variant == Variants(3)) and (bvariant == 3):
            return "Ничья"

Как сделать чтобы не появлялось None


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

Автор решения: Shamus Rezol

Сравнение экземпляра дочернего класса enum.Enum с целочисленным всегда будет логическим False. В вашей программе "ничья" пишется, когда вы сравниваете целочисленные 2..3 и целочисленное bvariant. None пишется, когда вы сравниваете целочисленное bvariant и Variants(1). То есть if (self.variant == Variants(1)) and (bvariant == Variants(1)) по условию bvariant == Variants(1) всегда будет False. Его можно заменить на bvariant == 1 для корректной работы.

→ Ссылка