Унаследованный объект класса не возвращает желаемых результатов (надеюсь, описание верно) - PullRequest
0 голосов
/ 12 января 2019

Я изучаю ООП с помощью Python и пытаюсь смоделировать матричный объект (с 6 сторонами). Я определил класс winnerDie (Die), который наследуется от класса Die, и я намерен вернуть количество бросков кубика, чтобы получить выигрышное значение (6), и я использую цикл while. К сожалению, это всегда возвращает 0, хотя цикл while повторяется правильно.

class Die(object):
    '''
    Simulate a generic die roll
    '''
    def __init__(self):
        '''Initialise the die, then roll it'''
        self._sides = 6 # A die has 6 sides. Underscore means it's private
        self._value = None # Its starting value is None (not 0)
        self.roll() # roll the die (the roll method is defined next)

    def roll(self):
        """Generate a random number from 0 and 6 (excluding 6)
        Then add 1 so that it's from 1 to 6
        Return this value"""
        import random
        self._value = 1 + random.randrange(self._sides)
        return self._value

    def __str__(self):
        """Define a string with a nice description of the object
        that is returned when using the print function"""
        return "Die with given %d sides, current value is %d."%(self._sides, self._value)

    def __repr__(self):
        """Defines a string with a nice representation of the object
        that is returned when the object is executed"""
        return "Die object\nNumber of sides: %f\nCurrent value: %f."%(self._sides, self._value)

class WinnerDie(Die):
    """Special case of die with value = 6 when rolled"""

    def __init__(self):
        super().__init__()
        self._count = 0
    def win(self):
        while self._value != 6:
            self._count += self._count
            print(self._count) # Added this for troubleshooting
            self.roll()
        return f"It takes {self._count} times to get the winning die"

Пожалуйста, что мне нужно исправить в этом коде?

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