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的值,看是不是符合预期。