《Python编程从入门到实践》项目二 03使用Pygal模拟掷骰子

    技术2022-07-12  85

    在本节,我们将使用Python可视化包Pygal来生成可缩放的矢量图形,对于需要在尺寸不同屏幕显示的图表,这很有用。因为他们将自动缩放,以适合观看者的屏幕。

    0.安装Pygal window键+R,输入cmd,打开控制台。 输入python -m pip install --user pygal。即可下载

    C:\Users\SanMu>python -m pip install --user pygal Collecting pygal Downloading https://files.pythonhosted.org/packages/5f/b7/201c9254ac0d2b8ffa3bb2d528d23a4130876d9ba90bc28e99633f323f17/pygal-2.4.0-py2.py3-none-any.whl (127kB) 100% |████████████████████████████████| 133kB 10kB/s Installing collected packages: pygal Successfully installed pygal-2.4.0

    1.模拟掷骰子

    # Die类,模拟一个骰子 from random import randint class Die(): """表示一个骰子的类""" def __init__(self, num_sides=6): """骰子默认为6面""" self.num_sides = num_sides def roll(self): """返回一个位于1和骰子面数之间的随机值""" return randint(1, self.num_sides) #掷骰子 from die import Die # 创建一个6面骰子 die = Die() # 掷几次骰子,并将结果存储在一个列表里 results = [] for roll_num in range(100): result = die.roll() results.append(result) print(results) # 分析结果 frequencies = [] for x in range(1,7): frequency = results.count(x) frequencies.append(frequency) print(frequencies) ###输出: [6, 6, 4, 2, 3, 3, 3, 5, 5, 1, 6, 5, 4, 3, 6, 4, 4, 6, 2, 1, 1, 6, 4, 6, 4, 4, 2, 3, 6, 4, 1, 6, 2, 4, 3, 6, 6, 1, 6, 3, 3, 4, 3, 4, 6, 5, 4, 1, 1, 4, 6, 2, 5, 3, 2, 1, 1, 3, 4, 3, 4, 4, 1, 2, 6, 2, 5, 1, 6, 5, 3, 2, 1, 6, 1, 1, 5, 6, 2, 1, 4, 6, 5, 6, 6, 4, 5, 6, 1, 4, 5, 1, 3, 3, 3, 1, 3, 5, 1, 6] [19, 10, 17, 19, 12, 23]#1-6出现的次数

    2.绘制直方图 有了频率列表后,便可绘制一个表示结果的直方图。

    --snip-- # 对数据进行可视化 hist = pygal.Bar() hist.title = "Result of rolling one D6 100 times." hist.x_labels = ['1', '2', '3', '4', '5', '6'] hist.x_title = "Result" hist.y_title = "Frequency Of Result" hist.add('D6',frequencies) # 使用add()将一系列值添加到图表中(向它传递要给添加的值指定的标签,和一个列表) hist.render_to_file('die_visual.svg')

    # 掷两个6面骰子,并计算点数之和 import pygal from die import Die # 创建一个6面骰子 die_1 = Die() die_2 = Die() # 掷几次骰子,并将结果存储在一个列表里 results = [] for roll_num in range(100): result = die_1.roll() + die_2.roll() results.append(result) # 分析结果 frequencies = [] for x in range(2, 13): frequency = results.count(x) frequencies.append(frequency) print(frequencies) # 对数据进行可视化 hist = pygal.Bar() hist.title = "Result of rolling tow D6 dice 100 times." hist.x_labels = ['2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'] hist.x_title = "Result" hist.y_title = "Frequency Of Result" hist.add('D6 + D6', frequencies) hist.render_to_file('die_visual.svg')

    Processed: 0.013, SQL: 9