关于“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.rhkb.cn/news/221668.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT助力Excel数据分析:让你的工作事半功倍!

文章目录 一、ChatGPT简介二、ChatGPT在Excel数据分析中的应用1. 数据清洗2. 数据处理3. 数据分析4. 数据可视化 三、如何使用ChatGPT进行Excel数据分析1. 安装ChatGPT插件2. 输入问题或命令3. 查看结果并调整参数4. 导出结果并分享四、总结与展望 《巧用ChatGPT高效搞定Excel数…

uniapp websocket的使用和封装

在uniapp中socket分为两种形式,第一种适用于只有一个socket链接,第二种适用于多个socket链接。传送门 这里以socketTask为列子封装 在utils新建一个文件 在你要使用的页面引入,我这是聊天那种,所以我在拿到用户信息之后连接sock…

分享一个好看的vs主题

最近发现了一个很好看的vs主题(个人认为挺好看的),想要分享给大家。 主题的名字叫NightOwl,和vscode的主题颜色挺像的。操作方法也十分简单,首先我们先在最上面哪一行找到扩展。 然后点击管理扩展,再搜索栏…

安防视频融合云平台/智慧监控平台EasyCVR如何添加验证码调用接口?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

微软官宣放出一个「小模型」,仅2.7B参数,击败Llama2和Gemini Nano 2

就在前一阵谷歌深夜炸弹直接对标 GPT-4 放出 Gemini 之后,微软这两天也紧锣密鼓进行了一系列动作。尽管时间日趋圣诞假期,但是两家巨头硬碰硬的军备竞赛丝毫没有停止的意思。 就在昨日,微软官宣放出一个“小模型” Phi-2,这个 Ph…

【Hadoop精讲】HDFS详解

目录 理论知识点 角色功能 元数据持久化 安全模式 SecondaryNameNode(SNN) 副本放置策略 HDFS写流程 HDFS读流程 HA高可用 CPA原则 Paxos算法 HA解决方案 HDFS-Fedration解决方案(联邦机制) 理论知识点 角色功能 元数据持久化 另一台机器就…

【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 分发饼干 class Solutio…

【C语言】自定义类型之联合和枚举

目录 1. 前言2. 联合体2.1 联合体类型的声明2.2 联合体的特点2.3 相同成员的结构体和联合体对比2.4 联合体大小的计算2.4 判断当前机器的大小端 3. 枚举3.1 枚举类型的声明3.2 枚举类型的优点3.3 枚举类型的使用 1. 前言 在之前的博客中介绍了自定义类型中的结构体,…

华为鸿蒙操作系统简介及系统架构分析(2)

接前一篇文章:华为鸿蒙操作系统简介及系统架构分析(1) 本文部分内容参考: 鸿蒙系统学习笔记(一) 鸿蒙系统介绍 特此致谢! 上一回对于华为的鸿蒙操作系统(HarmonyOS)进行了介绍并说明了其层次化…

使用Alpha Vantage API和Python进行金融数据分析

Alpha Vantage通过一套强大且开发者友好的数据API和电子表格,提供实时和历史的金融市场数据。从传统资产类别(例如股票、ETF、共同基金)到经济指标,从外汇汇率到大宗商品,从基本数据到技术指标,Alpha Vanta…

从初学者到高手:Golang匿名函数和闭包全解

从初学者到高手:Golang匿名函数和闭包全解 引言:Golang中的函数概述匿名函数的基础定义和使用匿名函数赋值给变量作为参数传递 深入理解闭包闭包的工作原理闭包的实际应用注意事项 匿名函数的高级应用事件处理和回调延迟执行和资源管理封装私有逻辑链式操…

SQL面试题挑战01:打折日期交叉问题

目录 问题:SQL解答:第一种方式:第二种方式: 问题: 如下为某平台的商品促销数据,字段含义分别为品牌名称、打折开始日期、打折结束日期,现在要计算每个品牌的打折销售天数(注意其中的…

数据分析基础之《numpy(6)—合并与分割》

了解即可,用panads 一、作用 实现数据的切分和合并,将数据进行切分合并处理 二、合并 1、numpy.hstack 水平拼接 # hstack 水平拼接 a np.array((1,2,3)) b np.array((2,3,4)) np.hstack((a, b))a np.array([[1], [2], [3]]) b np.array([[2], […

手把手教你创建一个实时互动的AI数字人直播间!

数字人是什么?数字人是利用人工智能技术实现与真人直播形象的1:1克隆,即克隆出一个数字化的你自己,包括你的形象、表情、动作和声音都会被克隆下来,让你能够拥有接近真人的表现力。 1.首先您需要独立部署青否数字人SaaS系统&#…

Opencv入门6(读取彩色视频并转换为对数极坐标视频)

源码如下&#xff1a; #include <opencv2/opencv.hpp> #include <iostream> int main(int argc, char* argv[]) { cv::namedWindow("Example2_11", cv::WINDOW_AUTOSIZE); cv::namedWindow("Log_Polar", cv::WINDOW_AUTOSIZE); c…

2023 英特尔On技术创新大会直播 |我感受到的“芯”魅力

文章目录 每日一句正能量前言AI时代&#xff0c;云与PC结合为用户带来更好体验全新处理器&#xff0c;首次引入针对人工智能加速的NPU大模型时代&#xff0c;软硬结合带来更好训练成果后记 每日一句正能量 成长是一条必走的路路上我们伤痛在所难免。 前言 在2023年的英特尔On技…

【LeetCode刷题笔记(9-1)】【Python】【无重复字符的最长子串】【滑动窗口】【中等】

文章目录 引言无重复字符的最长子串题目描述提示 解决方案1&#xff1a;【滑动窗口】结束语 无重复字符的最长子串 引言 编写通过所有测试案例的代码并不简单&#xff0c;通常需要深思熟虑和理性分析。虽然这些代码能够通过所有的测试案例&#xff0c;但如果不了解代码背后的思…

mysql:查看线程缓存中的线程数量

使用命令show global status like Threads_cached;可以查看线程缓存中的线程数量。 例如&#xff0c;查询线程缓存中的线程数量如下&#xff1a; 然后启动应用程序&#xff0c;使用连接&#xff0c;查询如下&#xff1a; 由查询结果可以看到&#xff0c;线程缓存中的线程数量…

【算法系列篇】递归、搜索和回溯(四)

文章目录 前言什么是决策树1. 全排列1.1 题目要求1.2 做题思路1.3 代码实现 2. 子集2.1 题目要求2.2 做题思路2.3 代码实现 3. 找出所有子集的异或总和再求和3.1 题目要求3.2 做题思路3.3 代码实现 4. 全排列II4.1 题目要求4.2 做题思路4.3 代码实现 前言 前面我们通过几个题目…

独立站退款率太高会怎么样?如何解决独立站退款纠纷?——站斧浏览器

独立站退款率太高会怎么样&#xff1f; 当独立站的退款率过高时&#xff0c;可能会对卖家和平台产生一些负面影响&#xff1a; 信誉受损&#xff1a;退款率过高可能会导致卖家的信誉受损。买家在购物时通常倾向于选择评价好的卖家&#xff0c;高退款率可能会让卖家的评价下降…