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

目录

11.2.4 方法 setUp()

注意

11.3 小结

第二部分

项目1 外星人入侵

第12 章

武装飞船

注意

12.1 规划项目

12.2 安装 Pygame

注意

12.2.1 使用 pip 安装 Python 包

注意

如果你启动终端会话时使用的是命令python3,那么在这里应使用命令sudo python3 get-pip.py。

12.2.2 在 Linux 系统中安装 Pygame

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

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


11.2.4 方法 setUp()

在前面的test_survey.py中,我们在每个测试方法中都创建了一个AnonymousSurvey实例,并在 每个方法中都创建了答案。unittest.TestCase类包含方法setUp(),让我们只需创建这些对象一 次,并在每个测试方法中使用它们。如果你在TestCase类中包含了方法setUp(),Python将先运行 它,再运行各个以test_打头的方法。这样,在你编写的每个测试方法中都可使用在方法setUp() 中创建的对象了。

下面使用setUp()来创建一个调查对象和一组答案,供方法test_store_single_response()和 test_store_three_responses()使用:

import unittest
from survey import AnonymousSurvey
class TestAnonymousSurvey(unittest.TestCase):
 """针对AnonymousSurvey类的测试"""
 def setUp(self):
 """
创建一个调查对象和一组答案,供使用的测试方法使用
 """
 question = "What language did you first learn to speak?"
1 self.my_survey = AnonymousSurvey(question)
2 self.responses = ['English', 'Spanish', 'Mandarin']
 def test_store_single_response(self):
 """测试单个答案会被妥善地存储"""
 self.my_survey.store_response(self.responses[0])
 self.assertIn(self.responses[0], self.my_survey.responses)
 def test_store_three_responses(self):
 """测试三个答案会被妥善地存储"""
 for response in self.responses:
 self.my_survey.store_response(response)
 for response in self.responses:
 self.assertIn(response, self.my_survey.responses)
unittest.main()

方法setUp()做了两件事情:创建一个调查对象(见1);创建一个答案列表(见2)。存储这 两样东西的变量名包含前缀self(即存储在属性中),因此可在这个类的任何地方使用。这让两 个测试方法都更简单,因为它们都不用创建调查对象和答案。方法test_store_three_response() 核 实 self.responses 中的第一个答案 ——self.responses[0]—— 被妥善地存储,而方法 test_store_three_response()核实self.responses中的全部三个答案都被妥善地存储。

再次运行test_survey.py时,这两个测试也都通过了。如果要扩展AnonymousSurvey,使其允许 每位用户输入多个答案,这些测试将很有用。修改代码以接受多个答案后,可运行这些测试,确 认存储单个答案或一系列答案的行为未受影响。

测试自己编写的类时,方法setUp()让测试方法编写起来更容易:可在setUp()方法中创建一 系列实例并设置它们的属性,再在测试方法中直接使用这些实例。相比于在每个测试方法中都创 建实例并设置其属性,这要容易得多。


注意

运行测试用例时,每完成一个单元测试,Python都打印一个字符:测试通过时打印一个 句点;测试引发错误时打印一个E;测试导致断言失败时打印一个F。这就是你运行测试 用例时,在输出的第一行中看到的句点和字符数量各不相同的原因。如果测试用例包含 很多单元测试,需要运行很长时间,就可通过观察这些结果来获悉有多少个测试通过了。


11.3 小结

在本章中,你学习了:如何使用模块unittest中的工具来为函数和类编写测试;如何编写继 承unittest.TestCase的类,以及如何编写测试方法,以核实函数和类的行为符合预期;如何使用 方法setUp()来根据类高效地创建实例并设置其属性,以便在类的所有测试方法中都可使用它们。 测试是很多初学者都不熟悉的主题。作为初学者,并非必须为你尝试的所有项目编写测试; 但参与工作量较大的项目时,你应对自己编写的函数和类的重要行为进行测试。这样你就能够更 加确定自己所做的工作不会破坏项目的其他部分,你就能够随心所欲地改进既有代码了。如果不 小心破坏了原来的功能,你马上就会知道,从而能够轻松地修复问题。相比于等到不满意的用户 报告bug后再采取措施,在测试未通过时采取措施要容易得多。 如果你在项目中包含了初步测试,其他程序员将更敬佩你,他们将能够更得心应手地尝试使 用你编写的代码,也更愿意与你合作开发项目。如果你要跟其他程序员开发的项目共享代码,就 必须证明你编写的代码通过了既有测试,通常还需要为你添加的新行为编写测试。 请通过多开展测试来熟悉代码测试过程。对于自己编写的函数和类,请编写针对其重要行为 的测试,但在项目早期,不要试图去编写全覆盖的测试用例,除非有充分的理由这样做。

第二部分

项目1 外星人入侵

第12 章

武装飞船


注意

游戏《外星人入侵》将包含很多不同的文件,因此请在你的系统中新建一个文件夹,并 将其命名为alien_invasion。请务必将这个项目的所有文件都存储到这个文件夹中,这样 相关的import语句才能正确地工作。


12.1 规划项目

开发大型项目时,做好规划后再动手编写项目很重要。规划可确保你不偏离轨道,从而提高 项目成功的可能性。 下面来编写有关游戏《外星人入侵》的描述,其中虽然没有涵盖这款游戏的所有细节,但能让你清楚地知道该如何动手开发它。 在游戏《外星人入侵》中,玩家控制着一艘最初出现在屏幕底部中央的飞船。玩家 可以使用箭头键左右移动飞船,还可使用空格键进行射击。游戏开始时,一群外星人出 现在天空中,他们在屏幕中向下移动。玩家的任务是射杀这些外星人。玩家将所有外星 人都消灭干净后,将出现一群新的外星人,他们移动的速度更快。只要有外星人撞到了 玩家的飞船或到达了屏幕底部,玩家就损失一艘飞船。玩家损失三艘飞船后,游戏结束。 在第一个开发阶段,我们将创建一艘可左右移动的飞船,这艘飞船在用户按空格键时能够开 火。设置好这种行为后,我们就能够将注意力转向外星人,并提高这款游戏的可玩性。

12.2 安装 Pygame

开始编码前,先来安装Pygame。下面介绍如何在Linux、OS X和Microsoft Windows中安装 Pygame。 如果你使用的是Linux系统和Python 3,或者是OS X系统,就需要使用pip来安装Pygame。pip 是一个负责为你下载并安装Python包的程序。接下来的几小节介绍如何使用pip来安装Python包。 如果你使用的是Linux系统和Python 2.7,或者是Windows,就无需使用pip来安装Pygame;在 这种情况下,请直接跳到12.2.2节或12.2.4节。


注意

接下来的部分包含在各种系统上安装pip的说明,因为数据可视化项目和Web应用程序项 目都需要pip。这些说明也可在https://www.nostarch.com/pythoncrashcourse/在线资源中找 到。如果安装时遇到麻烦,看看在线说明是否管用。


12.2.1 使用 pip 安装 Python 包

大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip。在Python 3 中,pip有时被称为pip3。

1. 在Linux和OS X系统中检查是否安装了pip

打开一个终端窗口,并执行如下命令:

$ pip --version
1 pip 7.0.3 from /usr/local/lib/python3.5/dist-packages (python 3.5)
$

如果你的系统只安装了一个版本的Python,并看到了类似于上面的输出,请跳到12.2.2节或 12.2.3节。

如果出现了错误消息,请尝试将pip替换为pip3。

如果这两个版本都没有安装到你的系 统中,请跳到“安装pip”。 如果你的系统安装了多个版本的Python,请核实pip关联到了你使用的Python版本,如python3.5(见1)。如果pip关联到了正确的Python版本,请跳到12.2.2节或12.2.3节。如果pip没有关联到 正确的Python版本,请尝试将pip替换为pip3。如果执行这两个命令时,输出都表明没有关联到正 确的Python版本,请跳到“安装pip”。 2. 在Windows系统中检查是否安装了pip 打开一个终端窗口,并执行如下命令:

$ python -m pip --version
1 pip 7.0.3 from C:\Python35\lib\site-packages (python 3.5)
$

如果你的系统只安装了一个版本的Python,并看到了类似于上面的输出,请跳到12.2.4节。 如果出现了错误消息,请尝试将pip替换为pip3。如果执行这两个命令时都出现错误消息,请跳到 “安装pip”。

如果你的系统安装了多个版本的Python,请核实pip关联到了你使用的Python版本,如python 3.5(见1)。如果pip关联到了正确的Python版本,请跳到12.2.4节。如果pip没有关联到正确的Python 版本,请尝试将pip替换为pip3。如果执行这两个命令时都出现错误消息,请跳到“安装pip”。

3. 安装pip 要安装pip,请访问https://bootstrap.pypa.io/get-pip.py。如果出现对话框,请选择保存文件; 如果get-pip.py的代码出现在浏览器中,请将这些代码复制并粘贴到文本编辑器中,再将文件保存 为get-pip.py。将get-pip.py保存到计算机中后,你需要以管理员身份运行它,因为pip将在你的系 统中安装新包。


注意

如果你找不到get-pip.py,请访问https://pip.pypa.io/,单击左边面板中的Installation,再单 击中间窗口中的链接get-pip.py。


4. 在Linux和OS X系统中安装pip

使用下面的命令以管理员身份运行get-pip.py:

$ sudo python get-pip.py

注意

如果你启动终端会话时使用的是命令python3,那么在这里应使用命令sudo python3 get-pip.py。


这个程序运行后,使用命令pip --version(或pip3 --version)确认正确地安装了pip。

5. 在Windows系统中安装pip

使用下面的命令运行get-pip.py:

$ python get-pip.py

如果你在终端中运行Python时使用的是另一个命令,也请使用这个命令来运行get-pip.py。例 如,你可能需要使用命令python3 get-pip.py或C:\Python35\python get-pip.py。 这个程序运行后,执行命令python -m pip --version以确认成功地安装了pip

12.2.2 在 Linux 系统中安装 Pygame

如果你使用的是Python 2.7,请使用包管理器来安装Pygame。为此,打开一个终端窗口,并 执行下面的命令,这将下载Pygame,并将其安装到你的系统中:

$ sudo apt-get install python-pygame

执行如下命令,在终端会话中检查安装情况:

$ python
>>> import pygame
>>> 

如果没有任何输出,就说明Python导入了Pygame,你可以跳到12.3节。

如果你使用的是Python 3,就需要执行两个步骤:安装Pygame依赖的库;下载并安装Pygame。

执行下面的命令来安装Pygame依赖的库(如果你开始终端会话时使用的是命令python3.5, 请将python3-dev替换为python3.5-dev):

$ sudo apt-get install python3-dev mercurial
$ sudo apt-get install libsdl-image1.2-dev libsdl2-dev libsdl-ttf2.0-dev

这将安装运行《外星人入侵》时需要的库。如果你要启用Pygame的一些高级功能,如添加 声音的功能,可安装下面这些额外的库:

$ sudo apt-get install libsdl-mixer1.2-dev libportmidi-dev
$ sudo apt-get install libswscale-dev libsmpeg-dev libavformat-dev libavcode-dev
$ sudo apt-get install python-numpy 

接下来,执行下面的命令来安装Pygame(如有必要,将pip替换为pip3):

$ pip install --user hg+http://bitbucket.org/pygame/pygame

告知你Pygame找到了哪些库后,输出将暂停一段时间。请按回车键,即便有一些库没有找 到。你将看到一条消息,说明成功地安装了Pygame。

要确认安装成功,请启动一个Python终端会话,并尝试执行下面的命令来导入Pygame:

$ python3
>>> import pygame
>>>

如果导入成功,请跳到12.3节。


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

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

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

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

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

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

相关文章

人工智能超分辨率重建:揭秘图像的高清奇迹

导言 人工智能超分辨率重建技术,作为图像处理领域的一项重要创新,旨在通过智能算法提升图像的分辨率,带来更为清晰和细致的视觉体验。本文将深入研究人工智能在超分辨率重建方面的原理、应用以及技术挑战。 1. 超分辨率重建的基本原理 …

Human Perception of Visual Information (1)

There is one thing the photograph must contain, the humanity of the moment. —Robert Frank 照片必须包含一件事,那就是这一刻的人性。 罗伯特。弗兰克 perface 利用机器学习和大规模数据收集的最新成果,客观视觉属性(如语义内容和几何关系)的计算…

数据结构(八):图介绍及面试常考算法

一、图介绍 1、定义 图由结点的有穷集合V和边的集合E组成。其中,结点也称为顶点。一对结点(x, y)称为边(edge),表示顶点x连接到顶点y。边可以包含权重/成本,显示从顶点x到y所需的成…

分享一个冬日雪景

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 先看效果&#xff1a; 再看源码&#xff1a; <body><div id"container"><div id"layer-1" class…

【Lidar】Open3D点云DBSCAN聚类算法:基于密度的点云聚类(单木分割)附Python代码

1 DBSCAN算法介绍 DBSCAN聚类算法是一种基于密度的聚类算法&#xff0c;全称为“基于密度的带有噪声的空间聚类应用”&#xff0c;英文名称为Density-Based Spatial Clustering of Applications with Noise。 DBSCAN聚类算法能够发现任意形状的类别&#xff0c;并且对噪音数据具…

Vue3+Echarts:堆积柱状图的绘制

一、需求 在Vue3项目中&#xff0c;想用Echarts来绘制堆积柱状图&#xff0c;去展示最近一周APP在不同渠道的登录人数效果如下&#xff1a; 二、实现 (关于Echarts的下载安装以及图表的样式设计&#xff0c;此处不展开&#xff01;) 1、Templates部分 <template>&l…

Metashape 自定义比例尺 / 无POS时如何制作DEM

前言操作步骤 前言 Metashape 自定义比例尺 和 无POS时如何制作DEM&#xff0c;此二者的操作步骤本质上是一样的。 当我们输入的照片没有POS&#xff0c;且没有做像控点的时候&#xff0c;比如我们仅仅拍摄了一个比较小的物体&#xff0c;可能是一瓶饮料或者一个椅子。 那么此…

用于噪声和分段相位测量的鲁棒相位展开算法(全文翻译-2区Optics Express)

摘要&#xff1a;本文提出了一种在存在噪声和分段相位的情况下进行相位展开的鲁棒相位展开算法&#xff08;RPUA&#xff09;。RPUA方法提出了一种新的相位导数模型&#xff0c;结合纠错迭代来实现抗噪声效果。此外&#xff0c;它使用数值载波频率和条纹外推法在空间域中桥接相…

git缓存区、本地仓库、远程仓库的同步问题(初始化库无法pull和push)

git新建库与本地库同步 gitee使用教程&#xff0c;git的下载与安装接不在叙述了。 新建远程仓库 新建远程仓库必须要使用仓库提供的api&#xff0c;也就是仓库门户网站&#xff0c;例如gitee&#xff0c;github&#xff0c;gitlab等。在上图中使用gitee网址中新建了一个test仓…

你真的会写 Prompt ? 剖析 RAG 应用中的指代消解

随着 ChatGPT 等大语言模型(LLM)的不断发展&#xff0c;越来越多的研究人员开始关注语言模型的应用。 其中&#xff0c;检索增强生成&#xff08;Retrieval-augmented generation&#xff0c;RAG&#xff09;是一种针对知识密集型 NLP 任务的生成方法&#xff0c;它通过在生成过…

带外应用程序安全测试 (OAST)

Burp Suite的polling.oastify.com的dns请求类似全流量中的旁路检测&#xff0c;或是云原生中的边车模式检测&#xff0c;类似引用带外的DNSLog。 一、传统的动态测试 传统的动态测试简单而优雅。从本质上讲&#xff0c;它将有效负载发送到目标应用程序并分析返回的响应 - 就像…

清华提出ViLa,揭秘 GPT-4V 在机器人视觉规划中的潜力

人类在面对简洁的语言指令时&#xff0c;可以根据上下文进行一连串的操作。对于“拿一罐可乐”的指令&#xff0c;若可乐近在眼前&#xff0c;下意识的反应会是迅速去拿&#xff1b;而当没看到可乐时&#xff0c;人们会主动去冰箱或储物柜中寻找。这种自适应的能力源于对场景的…

Vim命令大全(超详细,适合反复阅读学习)

Vim命令大全 Vim简介Vim中的模式光标移动命令滚屏与跳转文本插入操作文本删除操作文本复制、剪切与粘贴文本的修改与替换文本的查找与替换撤销修改、重做与保存编辑多个文件标签页与折叠栏多窗口操作总结 Vim是一款文本编辑器&#xff0c;是Vi编辑器的增强版。Vim的特点是快速、…

云仓酒庄的品牌雷盛红酒LEESON分享起泡酒要醒酒吗?

常喝葡萄酒的朋友知道&#xff0c;陈年酒、单宁含量重的红酒都需要在喝之前进行醒酒&#xff0c;有朋友问了&#xff0c;起泡酒需要醒酒吗&#xff1f;关于起泡酒醒酒有两种声音&#xff0c;有人反对&#xff0c;认为醒酒会让起泡酒失去细腻的泡泡。有人支持认为醒酒可以让起泡…

蜘点云原生之 KubeSphere 落地实践过程

作者&#xff1a;池晓东&#xff0c;蜘点商业网络服务有限公司技术总监&#xff0c;从事软件开发设计 10 多年&#xff0c;喜欢研究各类新技术&#xff0c;分享技术。 来源&#xff1a;本文由 11 月 25 日广州站 meetup 中讲师池晓东整理&#xff0c;整理于该活动中池老师所分享…

内网安全—Windows系统内核溢出漏洞提权

系统内核溢出漏洞提权 往缓冲区中写入超出限定长度的内容&#xff0c;造成缓冲区溢出&#xff0c;从而破坏程序的堆栈进而运行自己精心准备的指定代码&#xff0c;达到攻击的目的。 分类&#xff1a; 堆溢出 栈溢出 查找补丁的方法 1、手工查找补丁情况 systeminfo Wmic qfe…

福德植保无人机:让植保工作更轻松

亲爱的读者们&#xff0c;欢迎来到我们的公众号&#xff01;今天&#xff0c;我想和大家分享一个我们生活中不可或缺的东西——福德植保无人机。它不仅改变了我们的植保工作&#xff0c;更提升了工作效率&#xff0c;减少了人工负担。福德植保无人机&#xff0c;一家在植保无人…

3ds max软件中的一些常用功能分享!

3ds max软件有很多小伙伴反馈说&#xff0c;明明有很多3ds max教程资料。却不知道如何入门3dmax。 掌握3dmax基本功能是开始使用3dmax的基础之一&#xff0c;所以&#xff0c;小编带大家盘点一下3dmax常用操作。 3dmax常用功能介绍如下&#xff0c;快快跟着小编一起看起来。 1…

回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 &#xff08;多指标&#…

红外二极管发射电路图大全

红外二极管发射电路图&#xff08;一&#xff09; 传感器检测及声光报警电路 传感器模块由热释电传感器、烟雾传感器MQ211和红外传感器组成。 烟雾传感器的内部电阻是随着烟雾的浓度的变化而变化&#xff0c;因此要将其转化为变化的电压信号&#xff0c;在此通过电压比较器LM…
最新文章