IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Pygal模拟掷骰子--学习日记10.1 -> 正文阅读

[Python知识库]Pygal模拟掷骰子--学习日记10.1

大家好!这里是记录一个非专业的小白学习python的路径,完全是零基础自学。由于作者刚刚大学毕业所学专业找到的工作不太喜欢,工作空闲时间长,在职学习python语言,想借助这个平台记录一下自己学习的路径,文章有什么错误也希望大佬们积极指出,万分感谢!希望同大家一起学习,一起进步,谢谢。内容基于书籍python编程:从入门到实践????作者:Eric?Matthes?[美]

一、复习昨日之学习--随机漫步

效果图:

使用while循环range()函数组合绘制出多个散点,可以修改scatter()的实参来达到想要的颜色,样式,突出效果等等。散点函数scatter()的使用和上图效果的源代码可以翻阅作者前一天的学习笔记。?

2.昨日知识点练习题

?5000点效果图:

源代码:

#coding=gbk

#random_work.py #文件名

from random import choice

class RandomWalk():
	#一个生成随机漫步数据的类
	
	def __init__(self,num_points=5000):
		#初始化随机漫步的属性
		self.num_points = num_points
		
		#所有随机漫步都开始于(0,0)
		self.x_values = [0]
		self.y_values =[0]
		
	def get_step(self):
		direction=choice([1,-1])
		distance = choice([0,1,2,3,4,5,6,7,8])
		step = direction*distance
		return step
	def fill_walk(self):
		#计算随机漫步包含的所有点
		
		#不断漫步,知道列表达到指定长度
		while len(self.x_values)<self.num_points:
			x_step=self.get_step()
			y_step=self.get_step()
			
			#拒绝原地踏步
			if x_step == 0 and y_step == 0:
				continue
				
			#计算下一个点的x和y值
			next_x = self.x_values[-1]+x_step
			next_y = self.y_values[-1]+y_step
			
			self.x_values.append(next_x)
			self.y_values.append(next_y)

#coding=gbk

#rw_visual.py

import matplotlib.pyplot as plt


while True:
	#创建一个RandomWalk 实例,并将其包含的点都绘制出来
	rw =RandomWalk(50000)
	rw.fill_walk()
	#设置窗口大小
	plt.figure(figsize=(10,6))
	
	point_numbers = list(range(rw.num_points))
	plt.plot(rw.x_values,rw.y_values,linewidth=1)#xy列表,以随机点顺序为映射,s为散点大小
	
	#突出起点和终点
	plt.scatter(0,0,c='green',edgecolors='none',s=100)
	plt.scatter(rw.x_values[-1],rw.y_values[-1],c='red',
		edgecolors='none',s=100)
	
	
	
	
	plt.show()
	keep_running = input("make another walk?(y/n)")
	if keep_running =='n':
		break
		


		

效果图:

?二、今日新学习

Pygal绘图

1.安装Pygal:在cmd 中输入python -m pip install pygal,如下图所示则表明安装成功。

?2.创建一个D6(点数为6)掷骰子例子,并将结果存储在一个列表中,掷100次

源代码为:

#coding=gbk
#die.py 文件名为die
from random import randint

class Die():
	#表示一个骰子的类
	def __init__(self,num_sides=6):
		#骰子数默认为6
		self.num_sides = num_sides
	def roll(self):
		#返回一个位于1和骰子面数之间的值
		return randint(1,self.num_sides)

#创建一个D6的骰子实例
die=Die()
results= [] #将掷骰子结果存储到列表中
for roll_num in range(100):
	result = die.roll()
	results.append(result)
print(results)

运行结果:

3.分析结果并将结果可视化,使用计数函数count()来统计D6骰子的点数出现的次数,并将他存储在一个统计列表中方便可视化数据的使用。

效果图:

?源代码:

#coding=gbk
#die.py 文件名为die
from random import randint
import pygal



class Die():
	#表示一个骰子的类
	def __init__(self,num_sides=6):
		#骰子数默认为6
		self.num_sides = num_sides
	def roll(self):
		#返回一个位于1和骰子面数之间的值
		return randint(1,self.num_sides)

#创建一个D6的骰子实例
die=Die()
results= [] #将掷骰子结果存储到列表中
for roll_num in range(1000):#掷1000次
	result = die.roll()
	results.append(result)
print(results)


#分析结果
frequencies =[]
for value in range(1,die.num_sides+1):#遍历1-6
	frequency = results.count(value)#计数results列表中出现value次数
	frequencies.append(frequency)

#对结果进行可视化
hist = pygal.Bar() #使用pygal库中的条形图类
#设置图表标题标签等
hist.title = "Results of rolling one D6 100times."
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文件

?4.同时2颗D6骰子,统计结果并可视化,由结果可以看出7点出现的次数最多,你知道这是为什么吗?

效果图:

源代码:

#coding=gbk
#die.py 文件名为die
from random import randint
import pygal



class Die():
	#表示一个骰子的类
	def __init__(self,num_sides=6):
		#骰子数默认为6
		self.num_sides = num_sides
	def roll(self):
		#返回一个位于1和骰子面数之间的值
		return randint(1,self.num_sides)

#创建两个个D6的骰子实例
die_1=Die()
die_2=Die()
results= [] #将掷骰子结果存储到列表中
for roll_num in range(1000):#掷1000次
	result = die_1.roll()+die_2.roll()
	results.append(result)



#分析结果
frequencies =[]
max_result=2*die_1.num_sides
for value in range(2,max_result+1):#遍历2-12
	frequency = results.count(value)#计数results列表中出现value次数
	frequencies.append(frequency)

#对结果进行可视化
hist = pygal.Bar() #使用pygal库中的条形图类
#设置图表标题标签等
hist.title = "Results of rolling two D6 100times."
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('die_visual.svg')#将图表渲染成svg文件

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 17:02:17  更:2021-10-03 17:02:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:44:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码