Вместо ничьи выводится 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 для корректной работы.