Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)


Posted in Python onApril 08, 2020

使用Python可视化Pygal包来生成可缩放的矢量图形文件!

对于在尺寸不同的屏幕上显示图标,它们将自动缩放以适合观看者的屏幕,如果以在线的方式使用图标,建议使用Pygal来生成,这样在任何设备上显示都会很美观!!!

1、安装Pygal

安装Pygal有好几种办法这边简略带过!!!

介绍一种在pycharm中直接安装的方法!

1、在File文件中打开Settings

Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)

2、找到Project:untitled打开Projiect lnterpreter右上方的+号

Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)

3、输入我们要安装的Pygal包,选中Specify version,点击左下方Install Package,出现绿色显示安装完成

Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)

4、查询下是否安装完成,在pycharm下方找到Terminal,并输入pip list,这时候我们查看到Pygal安装完成2.4.0版本。

Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)

2、Pypal画廊

了解使用Pygal可创建什么样的图标,可访问官网http://www.pygal.org/单击Documentation,再单击Chart types

3、创建Die类

下面的类模拟掷一个骰子:

创建die.py文件

from random import randint

class Die():
 """表示一个骰子的类"""

 def __init__(self, num_sides=6):  #_init_()接受一个可选参数,如果没有指定任何实参,面数默认为6
  """骰子默认为六面"""
  self.num_sides = num_sides

 def roll(self):      #方法roll()使用randint()来返回
  """返回一个位于1和骰子面熟之间的随机值"""
  return randint(1,self.num_sides)

4、掷骰子

使用Die类来掷骰子,将结果打印

新建一个die_visual.py文件

from matp.touzi.die import Die

#创建一个Die实例
die=Die()

#掷几次骰子,并将结果存储在一个列表中
results=[]
for roll_num in range(100):
 result=die.roll()
 results.append(result)

print(results)

 通过对列表的打印,我们可以的下列结果集:

Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)

在效果图中我们可以看出,并未出现0和7的值所有结果有效

5、分析结果

在上述代码中,我们得到了骰子所有可能的列表,现在我们需要分析每个点出现的次数:

在die_visual.py文件添加修改:

from matp.touzi.die import Die

#创建一个Die实例
die=Die()

#掷几次骰子,并将结果存储在一个列表中
results=[]
for roll_num in range(1000):
 result=die.roll()
 results.append(result)

#分析结果
frequencies=[]
for value in range(1,die.num_sides+1):
 frequency=results.count(value)
 frequencies.append(frequency)

print(frequencies)
#print(results)

 这边我们将掷骰子的次数增加到1000,同时创建了空列表frequencies,用来存储每个点出现的次数,再把值附加到frequencies末尾,我们将其效果打印,如下图所示:

Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)

6、绘制直方图

有了每个点数的次数列表之后,我们就可以绘制一个表示结果的直方图

在die_visual.py文件添加:

#对结果进行可视化
hist=pygal.Bar()  #创建一个实例,并将其储存在hist中

hist.title="Result of rolling one D6 1000 times."  #hist标题
hist.x_labels=['1','2','3','4','5','6']
hist.x_title="Result"
hist.y_title="Frequency of Result"

hist.add('D6',frequencies)   #将一系列值添加到图标中
hist.render_to_file('die_visual.svg')  #将图标渲染为一个svg文件

 找到文件的地址,用浏览器打开die_visual.svg文件效果图如下所示:

Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)

7、同时掷两个骰子

前6点都是掷1个骰子,现在我们试着尝试同时掷两个骰子

我们只需对上面的die_visual.py文件进行修改即可,这边我们把die_visual.py文件复制一遍取一个新的文件名dice_visual.py,在dice_visual.py文件中进行修改。

from matp.touzi.die import Die
import pygal

#创建两个D6骰子
die_1=Die()
die_2=Die()

#掷几次骰子,并将结果存储在一个列表中
results=[]
for roll_num in range(1000):
 result=die_1.roll()+die_2.roll()
 results.append(result)

#分析结果
frequencies=[]
max_result=die_1.num_sides+die_2.num_sides
for value in range(1,max_result+1):
 frequency=results.count(value)
 frequencies.append(frequency)

#对结果进行可视化
hist=pygal.Bar()  #创建一个实例,并将其储存在hist中

hist.title="Result of rolling two D6 1000 times."  #hist标题
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('dice_visual.svg')  #将图标渲染为一个svg文件
#print(frequencies)
#print(results)

max_result=die_1.num_sides+die_2.num_sides

两个点数相加最大之和12,存储在max_result当中

效果图如下:

Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)

8、同时掷两个面数不同的骰子

上述第7点中掷的是两个相同的D6骰子,现实我们尝试着操作两个不同面得的骰子,掷这两个骰子50000次的结果如何。

新建different_dice.py文件

**from matp.touzi.die import Die
import pygal

#创建一个D6骰子和D10骰子
die_1=Die()
die_2=Die(10)		#传递了第二个骰子实参为10

#掷几次骰子,并将结果存储在一个列表中
results=[]
for roll_num in range(50000):
 result=die_1.roll()+die_2.roll()
 results.append(result)

#分析结果
frequencies=[]
max_result=die_1.num_sides+die_2.num_sides
for value in range(1,max_result+1):
 frequency=results.count(value)
 frequencies.append(frequency)

#对结果进行可视化
hist=pygal.Bar()  #创建一个实例,并将其储存在hist中

hist.title="Result of rolling a D6 and a D10 50000 times."  #hist标题
hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12','13','14','15','16']
hist.x_title="Result"
hist.y_title="Frequency of Result"

hist.add('D6+D10',frequencies)   #将一系列值添加到图标中
hist.render_to_file('different_dice.svg')  #将图标渲染为一个svg文件
#print(frequencies)
#print(results)**

效果图如下:

Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)

综上模拟掷骰子完毕!!!

附上完整的die.py和die_visual.py和dice_visual.py和different_dice.py文件

die.py

from random import randint

class Die():
 """表示一个骰子的类"""

 def __init__(self, num_sides=6):  #_init_()接受一个可选参数,如果没有指定任何实参,面数默认为6
  """骰子默认为六面"""
  self.num_sides = num_sides

 def roll(self):      #方法roll()使用randint()来返回
  """返回一个位于1和骰子面熟之间的随机值"""
  return randint(1,self.num_sides)

die_visual.py

from matp.touzi.die import Die
import pygal
#创建一个Die实例
die=Die()

#掷几次骰子,并将结果存储在一个列表中
results=[]
for roll_num in range(1000):
 result=die.roll()
 results.append(result)

#分析结果
frequencies=[]
for value in range(1,die.num_sides+1):
 frequency=results.count(value)
 frequencies.append(frequency)

#对结果进行可视化
hist=pygal.Bar()  #创建一个实例,并将其储存在hist中

hist.title="Result of rolling one D6 1000 times."  #hist标题
hist.x_labels=['1','2','3','4','5','6']
hist.x_title="Result"
hist.y_title="Frequency of Result"

hist.add('D6',frequencies)   #将一系列值添加到图标中
hist.render_to_file('die_visual.svg')  #将图标渲染为一个svg文件
#print(frequencies)
#print(results)

dice_visual.py

from matp.touzi.die import Die
import pygal

#创建两个D6骰子
die_1=Die()
die_2=Die()

#掷几次骰子,并将结果存储在一个列表中
results=[]
for roll_num in range(1000):
 result=die_1.roll()+die_2.roll()
 results.append(result)

#分析结果
frequencies=[]
max_result=die_1.num_sides+die_2.num_sides
for value in range(1,max_result+1):
 frequency=results.count(value)
 frequencies.append(frequency)

#对结果进行可视化
hist=pygal.Bar()  #创建一个实例,并将其储存在hist中

hist.title="Result of rolling two D6 1000 times."  #hist标题
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('dice_visual.svg')  #将图标渲染为一个svg文件
#print(frequencies)
#print(results)

different_dice.py

from matp.touzi.die import Die
import pygal

#创建一个D6骰子和D10骰子
die_1=Die()
die_2=Die(10)

#掷几次骰子,并将结果存储在一个列表中
results=[]
for roll_num in range(50000):
 result=die_1.roll()+die_2.roll()
 results.append(result)

#分析结果
frequencies=[]
max_result=die_1.num_sides+die_2.num_sides
for value in range(1,max_result+1):
 frequency=results.count(value)
 frequencies.append(frequency)

#对结果进行可视化
hist=pygal.Bar()  #创建一个实例,并将其储存在hist中

hist.title="Result of rolling a D6 and a D10 50000 times."  #hist标题
hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12','13','14','15','16']
hist.x_title="Result"
hist.y_title="Frequency of Result"

hist.add('D6+D10',frequencies)   #将一系列值添加到图标中
hist.render_to_file('different_dice.svg')  #将图标渲染为一个svg文件
#print(frequencies)
#print(results)

总结

到此这篇关于Pycharm中安装Pygal并使用Pygal模拟掷骰子的文章就介绍到这了,更多相关Pycharm安装Pygal模拟掷骰子内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python使用mysqldb连接数据库操作方法示例详解
Dec 03 Python
python实现多线程的方式及多条命令并发执行
Jun 07 Python
python删除本地夹里重复文件的方法
Nov 19 Python
在Pycharm中自动添加时间日期作者等信息的方法
Jan 16 Python
flask框架单元测试原理与用法实例分析
Jul 23 Python
django 快速启动数据库客户端程序的方法示例
Aug 16 Python
tensorflow模型继续训练 fineturn实例
Jan 21 Python
Python多线程实现支付模拟请求过程解析
Apr 21 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 Python
Python3如何使用tabulate打印数据
Sep 25 Python
python实现感知机模型的示例
Sep 30 Python
解决virtualenv -p python3 venv报错的问题
Feb 05 Python
解决pycharm下pyuic工具使用的问题
Apr 08 #Python
解决pyqt5异常退出无提示信息的问题
Apr 08 #Python
python由已知数组快速生成新数组的方法
Apr 08 #Python
TensorFlow2.X使用图片制作简单的数据集训练模型
Apr 08 #Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
Apr 08 #Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 #Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 #Python
You might like
杏林同学录(四)
2006/10/09 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
Python中的命令行参数解析工具之docopt详解
2017/03/27 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
计算机软件个人的自荐信范文
2013/12/01 职场文书
告诉你怎样写创业计划书
2014/01/27 职场文书
法制教育演讲稿
2014/09/10 职场文书
博士生专家推荐信
2014/09/26 职场文书
会计专业求职信范文
2015/03/19 职场文书
离婚案件被告代理词
2015/05/23 职场文书
安全教育培训心得体会
2016/01/15 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书