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

 更新时间:2020年04月08日 15:41:20   作者:zjz-ouni  
这篇文章主要介绍了Pycharm中安装Pygal并使用Pygal模拟掷骰子,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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

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

1、安装Pygal

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

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

1、在File文件中打开Settings

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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)

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

在这里插入图片描述

在效果图中我们可以看出,并未出现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末尾,我们将其效果打印,如下图所示:

在这里插入图片描述

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文件效果图如下所示:

在这里插入图片描述

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当中

效果图如下:

在这里插入图片描述

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)**

效果图如下:

在这里插入图片描述

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

附上完整的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学习手册》学习总结

    本篇文章是读者朋友在学习了《Python学习手册》这本书以后,总结出的学习心得,值得大家参考学习。
    2018-01-01
  • Python使用PyYAML库进行配置文件管理

    Python使用PyYAML库进行配置文件管理

    在现代软件开发中,配置文件管理已经成为了一个不可或缺的环节,本文主要为大家详细介绍了如何使用Python中的PyYAML库来操作YAML文件,以及YAML文件的一些优缺点,希望对大家有所帮助
    2023-12-12
  • flask中响应错误的处理及errorhandler的应用方式

    flask中响应错误的处理及errorhandler的应用方式

    这篇文章主要介绍了flask中响应错误的处理及errorhandler的应用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • jupyter notebook参数化运行python方式

    jupyter notebook参数化运行python方式

    这篇文章主要介绍了jupyter notebook参数化运行python方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • OpenCV Python实现拼图小游戏

    OpenCV Python实现拼图小游戏

    这篇文章主要为大家详细介绍了OpenCV Python实现拼图版小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Python面向对象特殊属性及方法解析

    Python面向对象特殊属性及方法解析

    这篇文章主要介绍了Python面向对象特殊属性及方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • python的类方法和静态方法

    python的类方法和静态方法

    这篇文章主要介绍了python的类方法和静态方法,以实例形式分析了Python中类方法和静态方法的实现技巧与应用方法,需要的朋友可以参考下
    2014-12-12
  • python进阶_浅谈面向对象进阶

    python进阶_浅谈面向对象进阶

    下面小编就为大家带来一篇python进阶_浅谈面向对象进阶。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Python multiprocessing 共享对象的示例代码

    Python multiprocessing 共享对象的示例代码

    在 Python 中使用 multiprocessing,一个新的进程可以独立运行并拥有自己的内存空间,下面通过示例代码讲解Python multiprocessing共享对象的相关知识,感兴趣的朋友跟随小编一起看看吧
    2023-07-07
  • django之跨表查询及添加记录的示例代码

    django之跨表查询及添加记录的示例代码

    表查询是重要的操作。这篇文章主要介绍了django之跨表查询及添加记录的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10

最新评论