创建一个掷骰子的类,默认为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')