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模拟掷骰子内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

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

    使用Python可视化Pygal包来生成可缩放的矢量图形文件! 对于在尺寸不同的屏幕上显示图标,它们将自动缩放以适合观看者的屏幕,如果以在线的方式使用图标,建议使用Pygal来生成,这样在任何设备上显示都会很美观!!! 1.安装Pygal 安装Pygal有好几种办法这边简略带过!!! 介绍一种在pycharm中直接安装的方法! 1.在File文件中打开Settings 2.找到Project:untitled打开Projiect lnterpreter右上方的+号 3.输入我们要安装的Pygal

  • python数据可视化pygal模拟掷骰子实现示例

    目录 可视化包Pygal生成可缩放矢量图形文件 分析结果,计算每个点数出现的次数 绘制直方图 同时投掷两个骰子 同时投掷两个面数不同骰子 可视化包Pygal生成可缩放矢量图形文件 可以在尺寸不同的屏幕上自动缩放,显示图表 #安装pygal pip install pygal ''' 想要了解Pygal可生成什么样的图表,可访问http://www.pygal.org/ 单击document,点击chart types,每个示例都包含源代码 ''' from random import randi

  • Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)

    这里介绍笔者在学习wordcloud库时安装过程中所遇到的问题和解决方案 1.在Pycharm中安装wordcloud出现的问题如下图所示 2.解决方法:在终端中通过wordcloud安装包安装方式,wordcloud的安装包下载链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud 选择与自己Python版本想对应的即可,这里笔者Python是3.8的所以选择图中标记的,版本选择不匹配将会安装错误,如下图所示: 下载完成后打开终端通过p

  • 如何在pycharm中安装第三方包

    有的时候我们在使用pycharm编辑python,需要导入各种各样的包,这些包是不能直接使用的,需要先进行安装.否则就会出现模块导入错误.下面介绍如何在pycharm中安装第三方包. 第一步 首先打开pycharm,在菜单栏找到File,然后点击找到settings,见图: 第二步 找到Project Interpreter,点击右侧的"+"号,添加: 第三步 在输入栏中直接输入自己想要的包,比如"numpy",就会自动出现.找到后点击设置包: 这样就设置成功啦~

  • 在PyCharm中安装Mongo Plugin的详细教程

    由于我用的pycharm是最新的,所以按照网上的教程是有些出入的. 下面我将抄一下教程,再补充一些图. 在pycharm中: File>>>settings>>>plugins >>>查看全部再选择mongo plugins(图1)>>>安装之后会重启 >>>重启之后,点左下角有个页面重叠的图标,点击mongo explorer(图2) >>>点击右上角的"工具"图标 >&

  • 在PyCharm中安装PaddlePaddle的方法

    如何在PyCharm中安装PaddlePaddle? 1.基本环境 Python:3.8.5 PyCharm:COMMUNITY 2019.3 2.检查PyCharm中是否可以正常运行代码 2.1查看安装的Python版本 按快捷键win+R,输入cmd: 输入"python --version"后回车,可查看到python版本显示为3.8.5: 2.2查看安装的PyCharm版本 打开PyCharm,点击Help,选择About: 此处PyCharm版本显示为:COMMUNITY 2

  • 在Pycharm中安装Pandas库方法(简单易懂)

    开发环境的搭建是一件入门比较头疼的事情,在上期的文稿基础上,增加一项Anaconda的安装介绍.Anaconda是Python的一个发行版本,安装好了Anaconda就相当于安装好了Python,并且里面还集成了很多Python科学计算的第三方库.比如我们需要用到的Pandas.numpy.dateutil等等,高达几百种.因此,安装了Anaconda,就不需要再专门的一个个安装第三方库.只要在使用Pycharm时调用Anaconda环境,便可以方便的使用其中的各种库.且各个库之间的依赖性很好,

  • 教你如何在pycharm中安装opencv,tensorflow,keras

    目录 一.首先安装Anaconda,python和pycharm 二.首先安装opencv 三.安装tensorflow和kerass 四.小结 我在安装环境的时后,怎么都装不上去,搞了好久,现在来写一下心得. 一.首先安装Anaconda,python和pycharm 有很多教程,我就不在此赘述 二.首先安装opencv 1.点击左下角的Terminal 2.输入pip install opencv-python,然后按键盘上的enter(亲测有效) 3.看到successfully就说明安装

  • PyCharm中安装PIL/Pillow的方法

    目录 方法一 :直接在pycharm中安装 方法二:利用命令进行安装 在做杂项题目利用python脚本对图片进行处理时,发现代码无论怎么调试都调试有误,然后换了一个代码发现自己pycharm中未装pil. 方法一 :直接在pycharm中安装 pycharm—>file—>setting—>Project:Desktop—>Project interpreter—>输入pil—>install package 方法二:利用命令进行安装 pip install pillo

  • Python Tkinter实例——模拟掷骰子

    什么是Tkinter? Tkinter 是 Python 的标准 GUI 库.Python 使用 Tkinter 可以快速的创建 GUI 应用程序. 由于 Tkinter 是内置到 python 的安装包中.只要安装好 Python 之后就能 import Tkinter 库.适合初学者入门.小型应用的开发 .简单的代价就是功能薄弱了,有相当多的需求需要依赖其他的库.不像PyQT.wxPython这些功能强大的框架. 需要导入的模块 Tkinter:建立图形界面 Random:生成随机数 Ima

随机推荐