1.5.11 创新习题

27. 音频可视化(Visualizing audio)。请修改程序playthattune.py(程序1.5.8),发送音频数据到标准绘图,从而在播放音频时可观察音频的波形。尝试在绘制画布上绘制多条曲线,以同步声音和图像。

28. 统计轮询(Statistical polling)。在收集某些政治投票的统计数据时,获得一个公正的登记选民样本十分重要。假设一个文件中包含n个登记选民的数据,每个选民占一行。请编写一个过滤器程序,输出大小为m的随机样本(具体请参见sample.py,程序1.4.1)。

29. 地形分析(Terrain analysis)。假设地形数据表示为一个二维网格海拔高度数据(单位为米)。峰值(peak)是一个网格点,其四个相邻的单元格(左、右、上、下)的海拔值低于峰值点的海拔值。请编写一个程序peak.py,实现如下功能:从标准输入读取地形数据,在标准输出中输出该地形峰值的个数。

30. 直方图(Histogram)。假设标准输入流为一系列浮点数。请编写一个程序,实现如下功能:程序带一个整型命令行参数n和两个浮点型命令行参数lo和hi。使用stddraw模块绘制输入流中数字计数的直方图,直方图按(lo, hi)等间隔分为n个区间,统计各区间范围内数值的计数。

31. 万花尺(Spirograph)。请编写一个程序,实现如下功能:程序带3个命令行参数Rra,绘制万花尺图。万花尺图(技术上称为外摆线epicycloid,又称圆外旋轮线)是在一个半径为R的固定圆中滚动一个半径为r的小圆所形成的曲线。如果画笔位置距离滚动的小圆中心为(r+a),则在时间t,结果曲线位置的计算方程为:

xt)=(R+r)cos(t)-(r+a)cos((

Get 程序设计导论:Python语言实践 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.