Python入门基础 您所在的位置:网站首页 骰子点数对应图 Python入门基础

Python入门基础

2024-07-12 17:21| 来源: 网络整理| 查看: 265

(课程相关的所有资料代码,已上传至CSDN,请自行下载 https://download.csdn.net/download/qq_34243930/10764180 ) 在这里插入图片描述

模拟掷骰子 1.0–1.0功能:模拟抛掷1个骰子,并输出其结果

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

random模块

在这里插入图片描述 更多random模块的方法请参考:https://docs.python.org/3/library/random.html 注意: 1、需要import random 2、调用方法 在这里插入图片描述 3、演示 在这里插入图片描述 在这里插入图片描述 v_1.0.1代码如下: 简单输出

""" 作者:xpt 功能:模拟掷骰子 版本:1.0 日期:26/11/2018 1.0功能:模拟抛掷1个骰子,并输出其结果 """ import random def roll_dice(): """ 模拟掷骰子 """ roll = random.randint(1, 6) return roll def main(): """ 主函数 """ total_times = 10 # 初始化点数所掷次数列表[0, 0, 0, 0, 0, 0] result_list = [0] * 6 for i in range(total_times): roll = roll_dice() print(roll) # 判断所掷点数,并把其次数加1 for j in range(1, 7): if j == roll: result_list[j - 1] += 1 print() print(result_list) if __name__ == '__main__': main()

在这里插入图片描述

enumerate()函数

在这里插入图片描述 v_1.0.2代码如下: 列表带索引输出

""" 作者:xpt 功能:模拟掷骰子 版本:1.0 日期:26/11/2018 1.0功能:模拟抛掷1个骰子,并输出其结果 """ import random def roll_dice(): """ 模拟掷骰子 """ roll = random.randint(1, 6) return roll def main(): """ 主函数 """ total_times = 10 # 初始化点数所掷次数列表[0, 0, 0, 0, 0, 0] result_list = [0] * 6 for i in range(total_times): roll = roll_dice() print(roll) # 判断所掷点数,并把其次数加1 for j in range(1, 7): if j == roll: result_list[j - 1] += 1 print() for i, x in enumerate(result_list): print('点数{}的次数:{},频率:{}'.format(i+1, x, x / total_times)) if __name__ == '__main__': main()

在这里插入图片描述 1000次: 在这里插入图片描述

• 模拟抛掷2个骰子并输出结果

模拟掷骰子 2.0–2.0功能:模拟抛掷2个骰子,并输出其结果

在这里插入图片描述 在这里插入图片描述

zip()函数

在这里插入图片描述 复习: 字典,https://blog.csdn.net/qq_34243930/article/details/84242598

v_2.0代码如下:

""" 作者:xpt 功能:模拟掷骰子 版本:2.0 日期:26/11/2018 1.0功能:模拟抛掷1个骰子,并输出其结果 2.0功能:模拟抛掷2个骰子,并输出其结果 """ import random def roll_dice(): """ 模拟掷骰子 """ roll = random.randint(1, 6) return roll def main(): """ 主函数 """ total_times = 1000 # 初始化点数所掷次数列表 result_list = [0] * 11 # 初始化点数列表(两个骰子点数之和) roll_list = range(2, 13) roll_dict = dict(zip(roll_list, result_list)) print(roll_dict) print() for i in range(total_times): roll1 = roll_dice() # 骰子1 roll2 = roll_dice() # 骰子2 # 判断所掷点数,并把其次数加1 for j in range(2, 13): if (roll1+roll2) == j: roll_dict[j] += 1 # 遍历的是一个字典 for i, x in roll_dict.items(): print('点数{}的次数:{},频率:{}'.format(i, x, x / total_times)) if __name__ == '__main__': main()

在这里插入图片描述

• 可视化掷骰子的结果

模拟掷骰子 3.0–3.0功能:可视化抛掷2个骰子的结果

在这里插入图片描述 在这里插入图片描述

Python数据可视化-matplotlib模块

在这里插入图片描述 例子:https://matplotlib.org/gallery.html 在这里插入图片描述 在这里插入图片描述 等等……可以绘制很多种类型的图

关于散点图

设置颜色,c=’red’ 设置透明度,alpha=0.5 举例如何绘制:x=[1,2,3],y=[6,5,8] 则绘制的点为(1,6)(2,5)(3,8) 所以需要借助list来分别存储x,y的信息

关于散点图绘制可视化抛掷2个骰子的结果 设置x轴为次数,y轴为点数之和 缺点是:只能绘制点的信息,对于统计信息没有显示 v_3.0代码如下:

""" 作者:xpt 功能:模拟掷骰子 版本:3.0 日期:28/11/2018 1.0功能:模拟抛掷1个骰子,并输出其结果 2.0功能:模拟抛掷2个骰子,并输出其结果 3.0功能:可视化抛掷2个骰子的结果 """ import random import matplotlib.pyplot as plt # matplotlib的子模块pyplot提供了2D图表制作的基本函数 def roll_dice(): """ 模拟掷骰子 """ roll = random.randint(1, 6) return roll def main(): """ 主函数 """ total_times = 100 # 初始化点数所掷次数列表 result_list = [0] * 11 # 初始化点数列表(两个骰子点数之和) roll_list = range(2, 13) roll_dict = dict(zip(roll_list, result_list)) print(roll_dict) print() # 记录骰子1的结果 roll1_list = [] roll2_list = [] for i in range(total_times): roll1 = roll_dice() # 骰子1 roll2 = roll_dice() # 骰子2 # 记录 roll1_list.append(roll1) roll2_list.append(roll2) # 判断所掷点数,并把其次数加1 for j in range(2, 13): if (roll1+roll2) == j: roll_dict[j] += 1 # 遍历的是一个字典 for i, x in roll_dict.items(): print('点数{}的次数:{},频率:{}'.format(i, x, x / total_times)) # 数据可视化 # 设置x轴为次数,y轴为点数之和 x = range(1, total_times+1) plt.scatter(x, roll1_list, c='red', alpha=0.5) plt.scatter(x, roll2_list, c='green', alpha=0.5) plt.show() if __name__ == '__main__': main()

在这里插入图片描述

• 对抛掷的结果进行简单的数据统计和分析

模拟掷骰子 4.0–4.0功能:对结果进行简单的数据统计和分析

在这里插入图片描述 在这里插入图片描述

matplotlib直方图

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

关于绘制直方图:

1、data和bins也要求是list形式 举例:data=[20,7,2,15,11,0,13,7,6],bins=[0,10,20,30] 其中注意bins按照左闭右开形式 例如[0,10)有data:7,2,0,7,6共五个,[10,20)有data:15,11,13共三个,[20,30)有data:20共一个 2、直方图样式 默认为: 在这里插入图片描述 改变线的颜色:edgecolor=‘black’ 改变线的宽度:linewidth=‘2’ 在这里插入图片描述 数据的归一化:normed=1 (在使用直方图时,出现警告 UserWarning: The ‘normed’ kwarg is deprecated, and has been replaced by the ‘density’ kwarg. warnings.warn("The ‘normed’ kwarg is deprecated, and has been " 意思就是把:normed 换成 density 即可解决问题) normedargument inplt.hist()has been changed todensity. 在这里插入图片描述 3、给图片加标签 plt.xticks(位置,标签) 设置x坐标的坐标点位置及标签 (需要先写出 位置tick_pos = np.arange(2,13) # 生成2~12 内容tick_labels = [‘1点’,‘2点’,‘3点’,‘4点’]) 图片加标题:plt.title() 图片加x轴标签,y轴标签: plt.xlabel() plt.ylabel() 默认标签是英文,如果想用中文: 在最前面加上: 在这里插入图片描述

plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False

以上方法演示: 在这里插入图片描述 在这里插入图片描述

复习range: 关于指定range从哪个数字开始 range(1,5) 结果为1,2,3,4,不包括5!!!

v_4.0代码如下:

""" 作者:xpt 功能:模拟掷骰子 版本:4.0 日期:29/11/2018 1.0功能:模拟抛掷1个骰子,并输出其结果 2.0功能:模拟抛掷2个骰子,并输出其结果 3.0功能:可视化抛掷2个骰子的结果 4.0功能:对结果进行简单的数据统计和分析 """ import random import matplotlib.pyplot as plt # matplotlib的子模块pyplot提供了2D图表制作的基本函数 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False def roll_dice(): """ 模拟掷骰子 """ roll = random.randint(1, 6) return roll def main(): """ 主函数 """ total_times = 100 # 初始化点数列表(两个骰子点数之和) roll_list = [] for i in range(total_times): roll1 = roll_dice() # 骰子1 roll2 = roll_dice() # 骰子2 roll_list.append(roll1 + roll2) # 数据可视化 plt.hist(roll_list, bins=range(2, 14), density=1, edgecolor='black', linewidth='2') plt.title('骰子点数统计') plt.xlabel('点数') plt.ylabel('频率') plt.show() if __name__ == '__main__': main()

在这里插入图片描述

• 使用科学计算库简化程序 • 完善数据可视化结果

模拟掷骰子 5.0–5.0功能:使用科学计算库简化程序,完善数据可视化结果

在这里插入图片描述 在这里插入图片描述

科学计算库NumPy

在这里插入图片描述 更正:np.arange(2,13) # 生成2~12

在这里插入图片描述 注意:左闭右开 np.random.randint(a, b, size) 创建[a, b)间形状为size的数组 其中,size可以是数字如100,可以是元组如(3,4)

在这里插入图片描述 np.histogram() 输出直方图的统计结果 返回值有两个: 在这里插入图片描述 在这里插入图片描述 v_5.0代码如下:

""" 作者:xpt 功能:模拟掷骰子 版本:5.0 日期:30/11/2018 1.0功能:模拟抛掷1个骰子,并输出其结果 2.0功能:模拟抛掷2个骰子,并输出其结果 3.0功能:可视化抛掷2个骰子的结果 4.0功能:对结果进行简单的数据统计和分析 5.0功能:使用科学计算库Numpy简化程序,完善数据可视化结果 """ import matplotlib.pyplot as plt # matplotlib的子模块pyplot提供了2D图表制作的基本函数 import numpy as np # 解决中文标签显示问题 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False def main(): """ 主函数 """ total_times = 1000 # 记录骰子结果 roll1_arr = np.random.randint(1, 7, total_times) roll2_arr = np.random.randint(1, 7, total_times) result_arr = roll1_arr + roll2_arr hist, bins = np.histogram(result_arr, bins=range(2, 14)) print(hist) print(bins) # 数据可视化 tick_labels = ['1点', '2点', '3点', '4点', '5点', '6点', '7点', '8点', '9点', '10点', '11点', '12点'] tick_pos = np.arange(2, 13) + 0.5 # 生成2~12 + 0.5 plt.xticks(tick_pos, tick_labels) plt.hist(result_arr, bins=range(2, 14), density=1, edgecolor='black', linewidth='2') plt.title('骰子点数统计') plt.xlabel('点数') plt.ylabel('频率') plt.show() if __name__ == '__main__': main()

在这里插入图片描述 在这里插入图片描述

课后练习 • 灵活设置骰子个数,并对结果进行统计分析 • 比如3个骰子(注意点数是多少)

Next? • 网络爬虫 • 文件操作扩展 • 数据分析基础



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有