学习Python——蟒蛇书练习15.9:统计掷骰子时各点数出现次数

创建一个掷骰子的类,默认为6面的骰子:
die.py

from random import randint


class Die:
    """创建一个表示骰子的类"""

    def __init__(self, num_sides=6):
        self. sides = num_sides

    def roll(self):
        return randint(1, self.sides)

编写统计各点数出现次数的代码,并利用plotly作图。其中可由用户输入数据决定骰子面数和掷骰子的次数:
die_visual.py

from plotly.graph_objs import Bar, Layout
from plotly import offline
from die import Die


# 用户输入骰子的面数和掷骰子次数
a = int(input('Please entry the number of sides:'))
b = int(input('Please entry the number of times:'))


numbers = list(range(1, a + 1))
results = []

# 生成骰子点数的列表
for values in range(b+1):
    result = Die(a+1).roll()
    results.append(result)
# 使用列表解析的方式生成此列表的方法:num_time = [Die(a+1).roll() for values in range(b+1)]

# 利用count()函数生成计数点数出现数量的列表
num_times = []
for number in numbers:
    num_time = results.count(number)
    num_times.append(num_time)
# 使用列表解析的方式生成此列表的方法:num_times = [results.count(number) for number in numbers]


# 将各点数出现次数打印出来
for value in numbers:
    b = num_times[value-1]
    print(f'the appearance time of {value} is {b}.')

# 以横坐标为点数,纵坐标为相应点数出现次数,作图
data = [Bar(x=numbers, y=num_times)]
x_axis_config = {'title': 'number'}
y_axis_config = {'title': 'times'}
my_layout = Layout(title='D6 times',
                   xaxis=x_axis_config, yaxis=y_axis_config)
offline.plot({'data': data, 'layout': my_layout}, filename='D6.html')