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 相关文章推荐
wxpython中利用线程防止假死的实现方法
Aug 11 Python
python爬虫入门教程之糗百图片爬虫代码分享
Sep 02 Python
用Python实现协同过滤的教程
Apr 08 Python
python定时检查某个进程是否已经关闭的方法
May 20 Python
Python中实现三目运算的方法
Jun 21 Python
Python简单获取自身外网IP的方法
Sep 18 Python
numpy给array增加维度np.newaxis的实例
Nov 01 Python
Django 日志配置按日期滚动的方法
Jan 31 Python
keras获得model中某一层的某一个Tensor的输出维度教程
Jan 24 Python
mac在matplotlib中显示中文的操作方法
Mar 06 Python
Python多线程实现支付模拟请求过程解析
Apr 21 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
Jun 01 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
PHP中实现进程间通讯
2006/10/09 PHP
PHP 存储文本换行实现方法
2010/01/05 PHP
php短域名转换为实际域名函数
2011/01/17 PHP
让PHP以ROOT权限执行系统命令的方法
2011/02/10 PHP
理解php Hash函数,增强密码安全
2011/02/25 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
2018/06/06 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
adidas泰国官网:adidas TH
2020/07/11 全球购物
《植物妈妈有办法》教学反思
2014/02/25 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
道歉信范文
2015/05/12 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
劳务派遣管理制度(样本)
2019/08/23 职场文书
使用pytorch实现线性回归
2021/04/11 Python
JavaScript流程控制(分支)
2021/12/06 Javascript