资料介绍
描述
概述
通过使用 Python 使用 Pi 制作艺术、音乐和游戏来庆祝 Pi 日。在这本 Google Colaboratory Notebook 中,您将探索 Pi 是什么、如何使用它以及一些有趣的应用程序。打开 Colab Notebook 并跟随!
谷歌合作笔记本:https ://colab.research.google.com/drive/1scICArIp5mQC5EQkT4FtnQ9-qtw4ECzc?usp=sharing
GitHub 存储库:https ://github.com/mjdargen/pi/
目录 - 使用 Pi 和 Python 制作艺术、游戏等
- 安装依赖和下载文件
- 什么是π?
- 就 π 而言,你几岁?
- 近似 π
- 一百万位π
- 绘制 π 的位数分布图
- π 和弦图
- 蛇 - Pi 版本
- π 的二值像素图像
- 用 π 制作音乐
- 艺术与 π & Processing
- 使用 π 找到 Kevin Bacon
第 0 步:Colab 和设置环境
Colab 简介
Google Colaboratory 是一个使用 Jupyter Notebooks 的 Python 开发环境,可让您连接到 Google 强大的云计算资源并运行 Python 代码。
Pi是最臭名昭著的数字。它是唯一一个拥有广泛认可的假期的数字——3 月 14 日的 Pi 日。在这个笔记本中,我们将探索 pi 的各个方面,并尝试从数字中获得一些乐趣。
第 2 步:就 Pi 而言,您几岁?
用 pi 计算你的年龄。在指定的字段中输入您的生日,以确定您的年龄(以 pi-years 和 pi-days 为单位)。
第 3 步:近似 Pi
使用指定数量的求和项来近似 pi。我们将使用莱布尼茨公式来逼近 π。它是一个无限交替级数,缓慢地向 pi 收敛,如下面的公式所述。
要使用该程序,请指定要使用多少项 (n) 来近似 pi。该程序将吐出生成的近似值。
第 4 步:一百万位 Pi
查看 pi 的前 100 万位十进制数字和 pi 的前 100 万位十六进制数字。运行下面的单元格后,单击输出窗口附近的“x”以清除单元格。显示数百万个字符会给您的浏览器带来负担并降低笔记本的速度。
Pi的一百万十进制数字:https ://raw.githubusercontent.com/mjdargen/pi/main/pi_dec_1m.txt
Pi的一百万个十六进制数字:https ://raw.githubusercontent.com/mjdargen/pi/main/pi_hex_1m.txt
第 5 步:绘制 Pi 数字的分布图
在本节中,我们将进一步检查 pi 的前一百万位十进制和十六进制数字。我们将绘制 pi 的位数的分布,以确定在 pi 的前一百万位数中是否有更多出现的数字。
第一个图将是 pi 的十进制数字,第二个图将是 pi 的十六进制数字。这些图表也会作为一个 interactive.html 网页写入“输出”文件夹,该网页可以在 Colab 左侧的文件选项卡中下载。这些图是使用 Plotly 条形图生成的。
第 6 步:Pi 和弦图
弦图是一种特殊类型的图表,它从圆形图上的节点中提取边缘或弧线。在这种情况下,我们展示了 pi 数字的进展。节点代表一个数字的每个可能值(0-9 表示十进制,0-15 表示十六进制)。弧线或边表示从一个数字到下一个数字的转换。例如,pi 小数点后的第一位数字是“14159”。我们将从 1 开始画一条弧到 4,然后画一条从 4 到 1 的弧,然后画一条从 1 到 5 的弧,然后画一条从 5 到 9 的弧,以此类推。
第一个图显示了 pi 的前一百万个十进制数字的和弦图。第二个图显示了 pi 的前一百万个十六进制数字的和弦图。这些图表也会作为一个 interactive.html 网页写入“输出”文件夹,该网页可以在 Colab 左侧的文件选项卡中下载。和弦图是使用和弦模块生成的。
第 7 步:蛇 - Pi 版本
玩 Snake 的 Pi 版本!我修改了 Snake,使蛇显示为 π 的各个部分。蛇不是吃食物,而是试图按顺序吃 pi 的十进制数字。看看你能吃多少位数的圆周率!
注意:此代码在 Google Colab 中无法正常运行,因此我必须嵌入我的 repl.it 项目。在此处查看源代码。这个项目最初是从@LorenzoCampos分叉出来的,并经过调整以制作 pi 版本。查看并玩下面的游戏。
第 8 步:Pi 的二进制像素图像
Pi 也可以表示为二进制数。为了做到这一点,我取前一百万个十六进制数字并将其逐字节转换为二进制数。为了可视化这些信息,我将前 100 万个十六进制数字表示为 2000x2000 单色黑白图像。零由黑色像素表示,而零由白色像素表示。
请参阅本节中的完整图像。它可能会在一分钟内显示为纯白色图像,因为该图像需要一段时间才能加载到 Colab 输出窗口中。图像也保存在“输出”窗口中,可以在 Colab 左侧的文件选项卡中下载。该脚本使用 Pillow 模块生成图像。
第 9 步:用 Pi 制作音乐
我们甚至可以用 pi 制作音乐。下面的脚本使用 numpy 计算波形并使用 scipy 写入 a.wav 文件。我在piaudio.py中保留了一些代码,以免弄乱笔记本。该文件负责将弦音符表示映射到特定频率,并根据持续时间和 BPM 为每个音符构建选定的波形。
尝试与笔记字典一起播放,看看你可以用 pi 发出什么样的酷声音。将某些数字值映射到键盘上的键。必须按照如下所示的格式写下注释。您还可以通过将波形参数提供给 play_note() 函数来指定所需的波形类型。它可以是正弦曲线、三角形、锯齿形或方形。
通过使用第 20 行或第 22 行来确定是要使用 pi 的十进制数字还是十六进制数字。默认情况下,以下脚本仅使用 pi 的前 100 位数字。使用完整的 100 万位 pi 需要很长时间才能执行。
播放窗口将显示在输出窗口中以预览音频。您也可以下载 .wav 文件。音频也保存在“输出”窗口中,可以在左侧的文件选项卡中下载。
注释格式说明:
- 必须以:NOTE_开头
- 第一个字母是注释:AG
- 如果有一个“S”,表示锐利(没有单位)
- 数字在键盘上是八度,0-最低,8-最高
第 10 步:使用 Pi 和处理进行艺术创作
Processing是一种灵活的软件速写本,也是一种用于学习如何在视觉艺术环境中编码的语言。它是一个免费的图形库和 IDE。它是用Java构建的;但是,也有Python 模式。
您无法在 Google Colaboratory 中运行处理代码。您将需要下载 Processing 并安装 Python 模式插件。请遵循此入门指南。
此处理脚本解析 pi 的前 10, 000 个十进制数字并将它们表示为圆圈。圆圈的颜色表示该数字的数值。
请参阅下面生成的图形。您也可以在此处下载图形。我提供了生成下图的代码。您还可以在此处从我的 GitHub 存储库查看/下载脚本。
第 11 步:使用 Pi 找到 Kevin Bacon
这个脚本展示了我们如何本质上使用 pi 的数字作为算法的伪随机数生成器。
下面我们将使用 pi探索Kevin Bacon 的六度。凯文培根的六度是一个游戏/思想实验,是“六度分离”的一个例子。“六度分离”背后的想法是,任何两个人(平均而言)彼此相距六个或更少的社会联系。作为探索这一点的愚蠢方式,我们将加载一个随机的 Wikipedia 页面并按照该页面上的链接,直到我们到达 Kevin Bacon 的 Wikipedia 页面。
我们使用随机的维基百科页面作为我们的起点。从那里,脚本获取链接在单个页面上的所有有效 Wikipedia 页面的列表。然后脚本按顺序使用 pi 的十六进制数字来确定我们接下来访问的维基百科页面之一。
下面的脚本可能需要很长时间才能执行,具体取决于它需要访问多少页面,直到我们找到 Kevin Bacon 的 Wikipedia 页面。到目前为止,我需要访问的最少页面数是 2, 254 页。
- 使用Python和Raspberry Pi的实时图表
- Raspberry Pi Zero W和Python 3入门
- 使用ML制作Pi垃圾分类器
- 《Python编程入门》.pdf 0次下载
- Unity 3D引擎制作的愤怒的小鸟游戏 2次下载
- 使用文件保存游戏的python代码和资料说明 11次下载
- 如何使用Python和Numpy等技术实现图像处理 8次下载
- 使用Python实现游戏APP充值API调用的代码实例 38次下载
- 如何使用Python编程一个石头剪刀布游戏的小程序 26次下载
- python基础教程之如何使用python进行环境搭建 32次下载
- 《Python开发技术详解》-随书附带程序 0次下载
- 《Raspberry Pi Python 编程入门 》-电子书籍.pdf 0次下载
- 一切从游戏开始_python 7次下载
- 修改代码艺术 0次下载
- Learn Raspberry Pi Programming with python 0次下载
- Raspberry Pi树莓派使用Python实现MQTT通信设计 611次阅读
- 如何搭建Python编程环境 4945次阅读
- 利用Python找到下一个“游戏驿站” 529次阅读
- Python版蚊子大作战源代码 909次阅读
- Python证件照制作小程序源代码 3139次阅读
- Python版警察抓小偷游戏源代码 1422次阅读
- Python-pygame 游戏开发 1276次阅读
- RT-Badge V2.0制作俄罗斯方块小游戏 2085次阅读
- 基于FONA通过UART与Raspberry Pi进行通讯的方案介绍 2122次阅读
- 基于Raspberry Pi 3 Model B+的掌上游戏机介绍 4905次阅读
- 为什么几百种编程语言,偏偏Python炙手可热? 3197次阅读
- 基于生成网络(GAN)来辅助艺术家进行更具创意的设计项目 5146次阅读
- Python简直就是万能的,你用Python都做过哪些事? 3.7w次阅读
- Python语言在人工智能中的功能及优势 1.1w次阅读
- python串口编程实例 4.6w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多