Python random, классы
У меня есть задание, которое я не могу выполнить помогите пожалуйста:
создайте класс Die с одним атрибутом sides, который имеет значение по умолчанию 6.
Напишите метод roll_over() для вывода случайного числа от 1 до количества граней на кубике.
Создайте экземпляр,представляющий 6-гранный кубик, и смоделируйте 10 бросков.
Создайте экземпляры, представляющие 10 и 20 гранный кубик.
Смоделируйте 10 бросков каждого кубика.
Помогите сделать это задание.
Я написал программу:
from random import randint
class Die():
def __init__(self, sides):
self.sides = sides
def roll_die(self):
x = randint(1, self.sides)
print(f'x = {x}')
a = 1
while a <= self.sides:
print(f'a = {a}')
a += 1
кубик_6_граней = Die(6)
кубик_6_граней.roll_die()
кубик_10_граней = Die(10)
кубик_10_граней.roll_die()
кубик_20_граней = Die(20)
кубик_20_граней.roll_die()
только я не знаю как разделить числа, то-есть как вписать сюда \n
Ответы (4 шт):
может от вас вот этого хотят?:
from random import randint
class Die():
def __init__(self, sides):
self.sides = sides
def roll_die(self):
for i in range(10):
print(f'{i+1} - {randint(1, self.sides)}')
кубик_20_граней = Die(20)
кубик_20_граней.roll_die()
'''
1 - 10
2 - 6
3 - 13
4 - 7
5 - 19
6 - 20
7 - 7
8 - 2
9 - 7
10 - 13
Как минимум надо добавить атрибуту значение по умолчанию. Плюс моделировать броски лучше в отдельной функции.
from random import randint
class Die():
def __init__(self, sides=6):
self.sides = sides
def roll_die(self):
return randint(1, self.sides)
def model_roll(die,n=10):
print(f'Кубик {die.sides} граней')
for i in range(n):
print(die.roll_die())
model_roll(Die())
model_roll(Die(10))
model_roll(Die(20))
P.S. функция model_rollа принимает 2 параметра, 1 это экземпляр класса , второй, не обязательный, количество бросков по умолчанию их 10.
Я использовал такой вариант для этого задания:
from random import randint
class Die():
def __init__(self, sides = 6):
"""Инициализация кубика"""
self.sides = sides
def roll_die(self):
"""Функция рандомного числа"""
return randint(1, self.sides)
def roll_model(self):
"""Функция имитации броска"""
print(f'\nSide Cube: {self.sides}\n')
for i in range(10):
print(f'Throw {i + 1}: {self.roll_die()}')
Тест:
cub_6 = Die()
cub_10 = Die(10)
cub_20 = Die(20)
cub_6.roll_model()
cub_10.roll_model()
cub_20.roll_model()
Результат:
Side Cube: 6
Throw 1: 5
Throw 2: 5
Throw 3: 2
Throw 4: 1
Throw 5: 2
Throw 6: 5
Throw 7: 6
Throw 8: 5
Throw 9: 2
Throw 10: 6
Side Cube: 10
Throw 1: 1
Throw 2: 5
Throw 3: 6
Throw 4: 4
Throw 5: 8
Throw 6: 6
Throw 7: 3
Throw 8: 8
Throw 9: 4
Throw 10: 2
Side Cube: 20
Throw 1: 13
Throw 2: 18
Throw 3: 17
Throw 4: 10
Throw 5: 5
Throw 6: 17
Throw 7: 9
Throw 8: 15
Throw 9: 5
Throw 10: 19
Программирую почти 2 недели. Вот так решил:
from random import randint
class Die():
def __init__(self, sides = 6):
self.sides = sides
def roll_die(self):
for i in range(10):
x = randint(1, self.sides)
print(x)
die = Die(20) <--- тут менять числа на 10, 20
die.roll_die()