Я изучаю ООП с помощью 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"
Пожалуйста, что мне нужно исправить в этом коде?