Pygal之掷骰子

python之使用pygal模拟掷骰子创建直方图:

1,文件die.py,源码如下:

 1 from random import randint
 2 
 3 class Die():
 4     '''表示一个骰子的类'''
 5     def __init__(self,num_sides = 6):
 6         '''初始化骰子的面数属性,骰子的默认面数为6'''
 7         self.num_sides = num_sides
 8 
 9     def roll(self):
10         #返回一个位于1和骰子面数之间的随机整数值,可以是1,可以是num_sides,也可以是这两值之间的任何整数
11         return randint(1,self.num_sides)

2,文件die_visual.py,源码如下:

 1 import pygal
 2 
 3 from die import Die
 4 
 5 #创建一个骰子面数为6的实例
 6 die = Die()
 7 
 8 #创建空列表,用以存储掷骰子的次数
 9 results = []
10 for roll_num in range(100):
11     result = die.roll()
12     results.append(result)
13 
14 #创建空列表frequency用以分析结果
15 frequencies = []
16 for value in range(1,die.num_sides+1):
17     frequency = results.count(value)
18     frequencies.append(frequency)
19 
20 '''对结果进行可视化'''
21 
22 hist = pygal.Bar() #创建条形图,并将其存储在hist中
23 
24 hist.title = "Results of rolling one D6 1000 times" #设置直方图的标题
25 hist.x_labels = ['1','2','3','4','5','6'] #设置直方图的可能的x轴的值
26 hist.x_title = "Results" #设置x轴的标题
27 hist.y_title = "Frequency of Result" #设置y轴的标题
28 
29 hist.add('D6',frequencies) #使用add()函数将值D6和列表frequencies添加到直方图中
30 #在当前文件夹下保存名为die_visual.svg且后缀必须为svg的文件
31 hist.render_to_file('die_visual.svg')

在码的过程中,可以尝试打印列表results和列表frequencies的值,看是不是符合预期。

原文地址:https://www.cnblogs.com/mafu/p/12924443.html