python学习

使用pygal 模拟掷骰子

1. 安装pygal包

pygal包用于生成可缩放矢量图形,用在不同尺寸的屏幕上显示图形。

代码:

pip install pygal==2.3.1
# 若未安装较新版本的 pygal包,则会在后面渲染SVG文件时出错

最初下载的是1.7.0版本的pygal包,会出错(如图):在这里插入图片描述
接下来卸载旧版本,安装新版本即可:
pip uninstall pygal
pip install pygal==2.3.1

2. 绘制直方图
2.1 投掷一个骰子

文件结构:
在这里插入图片描述
代码:

# die.py
from random import randint


class Die:
    '''表示骰子的类'''
    def __init__(self, num_sides=6):
        # 默认面数为6
        self.num_sides = num_sides

    def roll(self):
        # 返回一个面数范围内的整数
        return randint(1, self.num_sides)

# die_visual.py
import pygal
from die import Die

# 创建Die()实例
die = Die()
# 存放每次投掷的面数
results = []
# 投掷100次
for roll_num in range(500):
    result = die.roll()
    results.append(result)
# print(results)

# 分析每次投掷的结果
frequencies = []
for num in range(1, die.num_sides+1):
    frequency = results.count(num)
    frequencies.append(frequency)
# print(frequencies)

'''将结果进行可视化'''
# 创建条形图
hist = pygal.Bar()
# 确定图表的标题等
hist.title = "面数为" + str(die.num_sides) + "的骰子投掷500次的结果"
hist.x_labels = list(range(1, die.num_sides+1))
hist.x_title = '面数'
hist.y_title = '各个面数出现的频次'

# 传递显示的值的标签和存储值的列表
hist.add('总面数为'+str(die.num_sides), frequencies)
# 将图表渲染为SVG文件 这种文件的拓展名必须为.svg
'''SVG文件在项目所在文件夹下生成,需要在浏览器中打开查看'''
hist.render_to_file('die_visual.svg')

结果:
在这里插入图片描述

2.2 同时投掷两个骰子(每次点数是两个骰子点数之和)

修改die_visual.py并将其保存为dice_visual.py

import pygal
from die import Die

# 创建Die()实例
die1 = Die()
die2 = Die()
# 存放每次投掷的面数
results = []
# 投掷500次
for roll_num in range(500):
    result = die1.roll() + die2.roll()
    results.append(result)
# print(results)
# 分析每次投掷的结果
frequencies = []
for num in range(2, die1.num_sides+die2.num_sides+1):
    frequency = results.count(num)
    frequencies.append(frequency)
# print(frequencies)
# 将结果进行可视化
# 创建条形图
hist = pygal.Bar()
# 确定图表的标题等
hist.title = "面数为" + str(die1.num_sides) + "和" + str(die2.num_sides) + "的骰子投掷500次的结果"
hist.x_labels = list(range(2, die1.num_sides+die2.num_sides+1))
hist.x_title = '面数'
hist.y_title = '各个面数出现的频次'
# 传递显示的值的标签和存储值的列表
hist.add('面数为'+str(die1.num_sides) + "和" + str(die2.num_sides), frequencies)
# 将图表渲染为SVG文件 这种文件的拓展名必须为.svg
hist.render_to_file('dice_visual.svg')

结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值