关于“Python”的核心知识点整理大全42

目录

game_functions.py

game_functions.py

game_functions.py

alien_invasion.py

14.4 小结

第15 章

生成数据

15.1 安装 matplotlib

15.1.1 在 Linux 系统中安装 matplotlib

15.1.2 在 OS X 系统中安装 matplotlib

注意

15.1.3 在 Windows 系统中安装 matplotlib

注意

15.1.4 测试 matplotlib

注意

15.1.5 matplotlib 画廊

15.2 绘制简单的折线图

mpl_squares.py

15.2.1 修改标签文字和线条粗细

mpl_squares.py

15.2.2 校正图形

mpl_squares.py


 

为在屏幕上显示飞船,我们对编组调用了draw()。Pygame将绘制每艘飞船。 为在游戏开始时让玩家知道他有多少艘飞船,我们在开始新游戏时调用prep_ships()。这是 在game_functions.py的check_play_button()中进行的:

game_functions.py

def check_play_button(ai_settings, screen, stats, sb, play_button, ship,
 aliens, bullets, mouse_x, mouse_y):
 """在玩家单击Play按钮时开始新游戏"""
 button_clicked = play_button.rect.collidepoint(mouse_x, mouse_y)
 if button_clicked and not stats.game_active:
 --snip--
 # 重置记分牌图像
 sb.prep_score()
 sb.prep_high_score()
 sb.prep_level()
 sb.prep_ships()
 --snip-- 

我们还在飞船被外星人撞到时调用prep_ships(),从而在玩家损失一艘飞船时更新飞船图像:

game_functions.py

1 def update_aliens(ai_settings, screen, stats, sb, ship, aliens, bullets):
 --snip--
 # 检测外星人和飞船之间的碰撞
 if pygame.sprite.spritecollideany(ship, aliens):
2 ship_hit(ai_settings, screen, stats, sb, ship, aliens, bullets)
 # 检查是否有外星人抵达屏幕底端
3 check_aliens_bottom(ai_settings, screen, stats, sb, ship, aliens, bullets)
4 def ship_hit(ai_settings, screen, stats, sb, ship, aliens, bullets):
 """响应被外星人撞到的飞船"""
 if stats.ships_left > 0:
 # 将ships_left减1
 stats.ships_left -= 1
 # 更新记分牌
5 sb.prep_ships()
 # 清空外星人列表和子弹列表
 --snip-- 

首先,我们在update_aliens()的定义中添加了形参sb(见1)。然后,我们向ship_hit()(见 2)和check_aliens_bottom()(见3)都传递了sb,让它们都能够访问记分牌对象。 接下来,我们更新了ship_hit()的定义,使其包含形参sb(见4)。我们在将ships_left的值 减1后调用了prep_ships()(见5),这样每次损失了飞船时,显示的飞船数都是正确的。 在check_aliens_bottom()中需要调用ship_hit(),因此对这个函数进行更新:

game_functions.py

def check_aliens_bottom(ai_settings, screen, stats, sb, ship, aliens,
 bullets):
 """检查是否有外星人抵达屏幕底端"""
 screen_rect = screen.get_rect()
 for alien in aliens.sprites():
 if alien.rect.bottom >= screen_rect.bottom:
 # 像飞船被外星人撞到一样处理
 ship_hit(ai_settings, screen, stats, sb, ship, aliens, bullets)
 break 

现在,check_aliens_bottom()包含形参sb,并在调用ship_hit()时传递了实参sb。 最后,在alien_invasion.py中修改调用update_aliens()的代码,向它传递实参sb:

alien_invasion.py

 # 开始游戏主循环
 while True:
 --snip--
 if stats.game_active:
 ship.update()
 gf.update_bullets(ai_settings, screen, stats, sb, ship, aliens,
 bullets)
 gf.update_aliens(ai_settings, screen, stats, sb, ship, aliens,
 bullets)
 --snip-- 

图14-6显示了完整的记分系统,它在屏幕左上角指出了还余下多少艘飞船。


14.4 小结

在本章中,你学习了如何创建用于开始新游戏的Play按钮,如何检测鼠标事件,以及在游戏 处于活动状态时如何隐藏光标。你可以利用学到的知识在游戏中创建其他按钮,如用于显示玩法 说明的Help按钮。你还学习了如何随游戏的进行调整其节奏,如何实现记分系统,以及如何以文 本和非文本方式显示信息。

第15 章

生成数据

15.1 安装 matplotlib

首先,需要安装matplotlib,我们将使用它来制作开始的几个图表。如果你还未使用过pip, 请参阅12.2.1节。

15.1.1 在 Linux 系统中安装 matplotlib

如果你使用的是系统自带的Python版本,可使用系统的包管理器来安装matplotlib,为此只需 执行一行命令:

$ sudo apt-get install python3-matplotlib

如果你使用的是Python 2.7,请执行如下命令:

$ sudo apt-get install python-matplotlib

如果你安装了较新的Python版本,就必须安装matplotlib依赖的一些库:

$ sudo apt-get install python3.5-dev python3.5-tk tk-dev
$ sudo apt-get install libfreetype6-dev g++

再使用pip来安装matplotlib:

$ pip install --user matplotlib

15.1.2 在 OS X 系统中安装 matplotlib

Apple的标准Python安装自带了matplotlib。要检查系统是否安装了matplotlib,可打开一个终 端会话并尝试导入matplotlib。如果系统没有自带matplotlib,且你的Python是使用Homebrew安装 的,则可以像下面这样安装matplotlib:

$ pip install --user matplotlib

注意

安装包时可能需要使用pip3,而不是pip。另外,如果这个命令不管用,你可能需要删除 标志--user。


15.1.3 在 Windows 系统中安装 matplotlib

在Windows系统中,首先需要安装Visual Studio。为此,请访问https://dev.windows.com/,单 击Downloads,再查找Visual Studio Community——一组免费的Windows开发工具。请下载并运行 该安装程序。 接下来,需要下载matplotlib安装程序。为此,请访问https://pypi.python.org/pypi/matplotlib/, 并查找与你使用的Python版本匹配的wheel文件(扩展名为.whl的文件)。例如,如果你使用的是 32位的Python 3.5,则需要下载matplotlib-1.4.3-cp35-none-win32.whl。


注意

如果找不到与你安装的Python版本匹配的文件,请去http://www.lfd.uci.edu/-gohlke/ pythonlibs/#matplotlib看看,这个网站发布安装程序的时间通常比matplotlib官网早些。


将这个.whl文件复制到你的项目文件夹,打开一个命令窗口,并切换到该项目文件夹,再使 用pip来安装matplotlib:

> cd python_work
python_work> python -m pip install --user matplotlib-1.4.3-cp35-none-win32.whl

15.1.4 测试 matplotlib

安装必要的包后,对安装进行测试。为此,首先使用命令python或python3启动一个终端会 话,再尝试导入matplotlib:

$ python3
>>> import matplotlib
>>> 

如果没有出现任何错误消息,就说明你的系统安装了matplotlib,可以接着阅读下一节。


注意

如果你在安装过程中遇到了麻烦,请参阅附录C。如果依然无济于事,请向他人寻求帮助。 对于你遇到的问题,只要向经验丰富的Python程序员提供少量的信息,他们很可能很快 就能帮你解决。

import matplotlib.pyplot as plt
squares = [1, 4, 9, 16, 25] 
plt.plot(squares)
plt.show() 

15.1.5 matplotlib 画廊

要查看使用matplotlib可制作的各种图表,请访问http://matplotlib.org/的示例画廊。单击画廊 中的图表,就可查看用于生成图表的代码。

15.2 绘制简单的折线图

下面来使用matplotlib绘制一个简单的折线图,再对其进行定制,以实现信息更丰富的数据可 视化。我们将使用平方数序列1、4、9、16和25来绘制这个图表。 只需向matplotlib提供如下数字,matplotlib就能完成其他的工作:

mpl_squares.py

我们首先导入了模块pyplot,并给它指定了别名plt,以免反复输入pyplot。在线示例大都这 样做,因此这里也这样做。模块pyplot包含很多用于生成图表的函数。

我们创建了一个列表,在其中存储了前述平方数,再将这个列表传递给函数plot(),这个函 数尝试根据这些数字绘制出有意义的图形。plt.show()打开matplotlib查看器,并显示绘制的图形, 如图15-1所示。查看器让你能够缩放和导航图形,另外,单击磁盘图标可将图形保存起来。

15.2.1 修改标签文字和线条粗细

图15-1所示的图形表明数字是越来越大的,但标签文字太小,线条太细。所幸matplotlib让你 能够调整可视化的各个方面。 下面通过一些定制来改善这个图形的可读性,如下所示:

mpl_squares.py

import matplotlib.pyplot as plt
squares = [1, 4, 9, 16, 25]
1 plt.plot(squares, linewidth=5)
# 设置图表标题,并给坐标轴加上标签
2 plt.title("Square Numbers", fontsize=24)
3 plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
4 plt.tick_params(axis='both', labelsize=14)
plt.show()

参数linewidth(见1)决定了plot()绘制的线条的粗细。函数title()(见2)给图表指定标 题。在上述代码中,出现了多次的参数fontsize指定了图表中文字的大小。

函数xlabel()和ylabel()让你能够为每条轴设置标题(见3);而函数tick_params()设置刻度 的样式(见4),其中指定的实参将影响x轴和y轴上的刻度(axes='both'),并将刻度标记的字号 设置为14(labelsize=14)。 最终的图表阅读起来容易得多了,如图15-2所示:标签文字更大,线条也更粗。

15.2.2 校正图形

图形更容易阅读后,我们发现没有正确地绘制数据:折线图的终点指出4.0的平方为25!下 面来修复这个问题。 当你向plot()提供一系列数字时,它假设第一个数据点对应的x坐标值为0,但我们的第一个 点对应的x值为1。为改变这种默认行为,我们可以给plot()同时提供输入值和输出值:

mpl_squares.py

import matplotlib.pyplot as plt
input_values = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]
plt.plot(input_values, squares, linewidth=5)
# 设置图表标题并给坐标轴加上标签
--snip-- 

现在plot()将正确地绘制数据,因为我们同时提供了输入值和输出值,它无需对输出值的生 成方式作出假设。最终的图形是正确的,如图15-3所示。

使用plot()时可指定各种实参,还可使用众多函数对图形进行定制。本章后面处理更有趣的 数据集时,将继续探索这些定制函数。

 


关于“Python”的核心知识点整理大全37-CSDN博客

关于“Python”的核心知识点整理大全25-CSDN博客

关于“Python”的核心知识点整理大全12-CSDN博客

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/270959.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何学习VBA_3.2.10:人机对话的实现

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的劳动效率,而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册,现在已经全部完成,希望大家利用、学习。 如果…

鸿蒙的基本项目_tabbar,首页,购物车,我的

以上效果,由四个ets文件实现,分别是容器页面。首页,购物车,我的。 页面里的数据,我是用json-server进行模拟的数据。 一、容器页面 使用组件Tabs和Tabcontent结合。 import Home from "./Home"; import …

Ai企业系统源码 Ai企联系统源码 商用去授权 支持文心 星火 GPT4等等20多种接口

智思Ai系统2.4.9版本去授权(可商用)支持市面上所有版本的接口例如:文心、星火、GPT4等等20多种接口!代过审AI小程序类目!!! 安装步骤: 1、在宝塔新建个站点,php版本使用…

【华为机试】2023年真题B卷(python)-分糖果

一、题目 题目描述: 小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。 当糖果不能平均分配时,小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。 小明最少需要多少次&#xf…

2007年AMC8数学竞赛中英文真题典型考题、考点分析和答案解析

今天,我们来继续研究AMC8竞赛的真题。通过反复研究历年真题,不仅可以掌握AMC8这个竞赛的命题规律和常见考点,通过真题的详细解析可以建立自己的解题思路、举一反三,还可以通过做真题不断发现自己的薄弱点查漏补缺。 今天我们来看看…

FreeRTOS互斥量解决优先级反转问题

FreeRTOS互斥量 目录 FreeRTOS互斥量一、概念二、优先级反转三、互斥量解决优先级反转 一、概念 FreeRTOS中的互斥量(Mutex)是一种特殊的二值信号量,它支持互斥量所有权、递归访问以及防止优先级翻转的特性。在FreeRTOS中,互斥量…

pytorch中池化函数详解

1 池化概述 1.1 什么是池化 池化层是卷积神经网络中常用的一个组件,池化层经常用在卷积层后边,通过池化来降低卷积层输出的特征向量,避免出现过拟合的情况。池化的基本思想就是对不同位置的特征进行聚合统计。池化层主要是模仿人的视觉系统…

人工智能:网络犯罪分子的驱动力

随着 2024 年的临近,是时候展望今年的网络安全状况了。由于网络犯罪日益复杂,预计到 2025 年,全球网络安全成本将增至 10.5 万亿美元。 人工智能的使用不断发展,网络犯罪分子变得越来越有创造力 我们注意到,联邦调查…

2023年12月25日:串口发出控制命令

代码 uart4.c #include "uart4.h"void uart4_config() {//*****************************************//使能GPIOB|GPIOG|UART4外设时钟RCC->MP_AHB4ENSETR |(0x1<<6);RCC->MP_AHB4ENSETR |(0x1<<1);RCC->MP_APB1ENSETR |(0x1<<16);RCC…

云计算:现代技术的基本要素

众所周知&#xff0c;在儿童教育的早期阶段&#xff0c;幼儿园都会传授塑造未来行为的一些基本准则。 今天&#xff0c;我们可以以类似的方式思考云计算&#xff1a;它已成为现代技术架构中的基本元素。云现在在数字交互、安全和基础设施开发中发挥着关键作用。云不仅仅是另一…

小狐狸GPT付费2.4.9 去除授权弹窗版

后台安装步骤&#xff1a; 1、在宝塔新建个站点&#xff0c;php版本使用7.2 、 7.3 或 7.4&#xff0c;把压缩包上传到站点根目录&#xff0c;运行目录设置为/public 2、导入数据库文件&#xff0c;数据库文件是 /db.sql 3、修改数据库连接配置&#xff0c;配置文件是/.env 4、…

LED驱动电源

LED驱动电源 常用电子元器件 TB62726AFG LED SOP-24 文章目录 LED驱动电源前言一、LED驱动电源是什么二、TB62726AFG LED SOP-24总结 前言 LED驱动电源可以根据应用需求采用不同的输入和输出电源类型、电源转换拓扑、调光方式等。常见的LED驱动电源类型包括恒流驱动电源、恒…

3分钟了解安全数据交换系统有什么用!

企业为了保护核心数据安全&#xff0c;都会采取一些措施&#xff0c;比如做网络隔离划分&#xff0c;分成了不同的安全级别网络&#xff0c;或者安全域&#xff0c;接下来就是需要建设跨网络、跨安全域的安全数据交换系统&#xff0c;将安全保障与数据交换功能有机整合在一起&a…

uni-app封装表格组件

组件代码&#xff1a; <template><view><uni-table class"tableBox" border stripe emptyText"暂无更多数据" ><!-- 表头行 --><uni-tr class"tableTr"><uni-th align"center" v-for"item in …

LNPMariadb数据库分离|web服务器集群

LNP&Mariadb数据库分离&#xff5c;web服务器集群 网站架构演变单机版LNMP独立数据库服务器web服务器集群与Session保持 LNP与数据库分离1. 准备一台独立的服务器&#xff0c;安装数据库软件包2. 将之前的LNMP网站中的数据库迁移到新的数据库服务器3. 修改wordpress网站配置…

共享和独享的区别是什么?有必要用独享IP吗?

通俗地讲&#xff0c;共享IP就像乘坐公共汽车一样&#xff0c;您可以到达目的地&#xff0c;但将与其他乘客共享旅程&#xff0c;座位很可能是没有的。独享IP就像坐出租车一样&#xff0c;您可以更快到达目的地&#xff0c;由于车上只有您一个人&#xff0c;座位是您一个人专用…

【技术分享】单网口远程透传网关快速实现昆仑通态触摸屏程序远程上下载及监控

准备工作 一台可联网操作的电脑一台单网口的远程透传网关及博达远程透传配置工具网线一条&#xff0c;用于实现网络连接和连接触摸屏一台昆仑通态触摸屏及其编程软件一张4G卡或WIFI天线实现通讯(使用4G联网则插入4G SIM卡&#xff0c;WIFI联网则将WIFI天线插入USB口&#xff0…

String 的特点是什么?它有哪些重要的方法?

几乎所有的 Java 面试都是以 String 开始的&#xff0c;如果第一个问题没有回答好&#xff0c;则会给面试官留下非常不好的第一印象&#xff0c;而糟糕的第一印象则会直接影响到自己的面试结果&#xff0c;就好像刚破壳的小鹅一样&#xff0c;会把第一眼看到的动物当成自己的母…

走进数字金融峰会,为金融科技数字化赋能

12月20—21日&#xff0c;FSIDigital数字金融峰会在上海圆满召开。本次峰会包含InsurDigital数字保险峰会和B&SDigital数字银行与证券峰会2场平行峰会&#xff1b;吸引了近600位来自保险、银行、证券以及金融科技等行业的领导者和专家齐聚一堂&#xff0c;共同探讨金融业数…

数据库01_增删改查

1、什么是数据&#xff1f;什么是数据库&#xff1f; 数据&#xff1a;描述事物的符号记录称为数据。数据是数据库中存储的基本对象。数据库&#xff1a;存放数据的仓库&#xff0c;数据库中可以保存文本型数据、二进制数据、多媒体数据等数据 2、数据库的发展 第一阶段&…