想象一下,可能随着游戏的进行,有些外星人会变色且移动速度会加快。必要时,我们可以使用for循环和if语句来修改某些外星人的颜色。例如,要将前三个外星人修改为黄色的、速度为中等且值10个点

6.4.2 在字典中存储列表

在下面的示例中,存储了比萨的两方面信息:外皮类型和配料列表。其中的配料列表是一个与键'toppings'相关联的值。要访问该列表,我们使用字典名和键'toppings',就像访问字典中的其他值一样。这将返回一个配料列表,而不是单个值

我们回忆一下,在列表中存储字典是什么情况(即,列表包含字典)?

alien_0={'color':'green','points':5}
alien_1={'color':'yellow','points':10}
alien_2={'color':'red','points':15}  #先设置好三个字典,alien_0,alien_1,alien_2aliens=[alien_0,alien_1,alien_2]  #设置列表aliens,将字典名作为列表元素放入列表中

是这种情况

在字典中包含列表是以下情况:

pizza={'crust':'thick','toppings':['mushroom','extra cheese'],}
#设置字典pizza,其中设置2个不同的键'crust','toppings'
#而键'toppings'的值设置为一个列表,即,这个键有2个值,翻译过来,就是有2个配料

因此,学到这,总结一下,

(1)列表中存储字典:先设置好各个字典,最后将字典名作为列表元素放入列表中

(2)字典中存储列表:有时,在一个字典中,一个键可能对应几个值,那么,将这几个值放入列表中,而此时,列表是包含在字典中的,因此,叫做字典中存储列表。

习题

6-8 宠物:创建多个字典,对于每个字典,都使用一个宠物的名称来给它命名;在每个字典中,包含宠物的类型及其主人的名字。将这些字典存储在一个名为pets的列表中,再遍历该列表,并将宠物的所有信息都打印出来。

6-9喜欢的地方:创建一个名为favorite_places的字典。在这个字典中,将三个人的名字用作键;对于其中的每个人,都存储他喜欢的1~3个地方。为让这个练习更有趣些,可让一些朋友指出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。

 第七章        用户输入和while循环 

在本章中,你将学习如何接受用户输入,让程序能够对其进行处理。在程序需要一个名字时,你需要提示用户输入该名字;程序需要一个名单时,你需要提示用户输入一系列名字。为此,你需要使用函数input()。 每当你使用函数input()时,都应指定清晰而易于明白的提示,准确地指出你希望用户提供什么样的信息——指出用户该输入任何信息的提示都行

有时候,提示可能超过一行,例如,你可能需要指出获取特定输入的原因。在这种情况下,可将提示存储在一个变量中,再将该变量传递给函数input()。

input():起到提示的作用。提示用户输入信息,用户输入信息后,就print()了。

如图所示,Python将输入解读成了字符串,因此,输出为'21'

但是不能将输入作为数字使用。

为解决这个问题,可使用函数int(),它让Python将输入视为数值

如何在实际程序中使用函数int()呢?

求模运算符(%)是一个很有用的工具,它将两个数相除并返回余数

小结

当number作为比较运算时,例图中,number%2==0这种情况,此时要

number=int(number)

当number被输出时,即在print()里,此时

print(str(number))

如果一个数可被另一个数整除,余数就为0,因此求模运算符将返回0。你可利用这一点来判断一个数是奇数还是偶数:

7-1 汽车租赁:编写一个程序,询问用户要租赁什么样的汽车,并打印一条消息,如“Let me see if I can find you a Subaru”。

7-2 餐馆订位:编写一个程序,询问用户有多少人用餐。如果超过8人,就打印一条消息,指出没有空桌;否则指出有空桌。

7-3 10的整数倍:让用户输入一个数字,并指出这个数字是否是10的整数倍。

 7.2       while循环简介 

for循环用于针对集合中的每个元素都一个代码块,而while循环不断地运行,直到指定的条件不满足为止。

7.2.2 让用户选择何时退出

我们创建了一个变量——message,用于存储用户输入的值。我们将变量message的初始值设置为空字符串" ",让Python首次执行while代码行时有可供检查的东西。

这个程序很好,唯一美中不足的是,它将单词'quit'也作为一条消息打印了出来。为修复这种问题,只需使用一个简单的if测试:

7.2.3        使用标志

在游戏中,多种事件都可能导致游戏结束,如玩家一艘飞船都没有了或要保护的城市都被摧毁了。如果在一条while语句中检查所有这些条件,将既复杂又困难。在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志。

你可让程序在标志为True时继续运行,并在任何事件导致标志的值为False时让程序停止运行。这样,在while语句中就只需检查一个条件——标志的当前值是否为True

7.2.4        使用break 退出循环

要立即退出while循环,不再运行循环中余下的代码,可使用break语句。

例如,来看一个让用户指出他到过哪些地方的程序。在这个程序中,我们可以在用户输入'quit'后使用break语句立即退出while循环:

7.2.5 在循环中使用continue

要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句,它不像break语句那样不再执行余下的代码并退出整个循环。

例如,输出1~10中的奇数

7.3        使用while 循环处理列表和字典

要记录大量的用户和信息,需要在while循环中使用列表和字典。 for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致Python难以跟踪其中的元素。要在遍历列表的同时对其进行修改,可使用while循环。通过将while循环同列表和字典结合起来使用,可收集、存储并组织大量输入,供以后查看和显示。

7.3.1 在列表中移动元素

但在for循环中不应修改列表,否则将导致Python难以跟踪其中的元素。要在遍历列表的同时对其进行修改,可使用while循环。就像前面的代码所写的,for 循环是可以让confirmed_users填充进来元素,但是不会在循环时修改列表。可以用while循环里修改列表。

在第3章中,我们使用函数remove()来删除列表中的特定值,这之所以可行,是因为要删除的值在列表中只出现了一次。如果要删除列表中所有包含特定值的元素,该怎么办呢?

假设你有一个宠物列表,其中包含多个值为'cat'的元素。要删除所有这些元素,可不断运行一个while循环,直到列表中不再包含值'cat',如下所示:

7.3.2 删除包含特定值的所有列表元素

假设你有一个宠物列表,其中包含多个值为'cat'的元素。要删除所有这些元素,可不断运行一个while循环,直到列表中不再包含值'cat'

7.3.3 使用用户输入来填充字典

可使用while循环提示用户输入任意数量的信息。下面来创建一个调查程序,其中的循环每次执行时都提示输入被调查者的名字和回答。我们将收集的数据存储在一个字典中,以便将回答同被调查者关联起来

小总结:for 循环和while 循环的区别:

for 循环不能在循环里修改变量,或者说进行修改操作

而,while循环可以在循环里进行修改操作。

 7.4 小结

在本章中,你学习了:如何在程序中使用input()来让用户提供信息;如何处理文本和数字输入,以及如何使用while循环让程序按用户的要求不断地运行;多种控制while循环流程的方式:设置活动标志、使用break语句以及使用continue语句;如何使用while循环在列表之间移动元素,以及如何从列表中删除所有包含特定值的元素;如何结合使用while循环和字典。 在第8章中,你将学习函数。函数让你能够将程序分成多个很小的部分,其中每部分都负责完成一项具体任务。你可以根据需要调用同一个函数任意次,还可将函数存储在独立的文件中。使用函数可让你编写的代码效率更高,更容易维护和排除故障,还可在众多不同的程序中重用。

第8章        函数

需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用执行该任务的函数,让Python运行其中的代码。

8.1.2 实参和形参

在函数greet_user()的定义中,变量username是一个形参——函数完成其工作所需的一项信息。在代码greet_user('jesse')中,值'jesse'是一个实参。实参是调用函数时传递给函数的信息。我们调用函数时,将要让函数使用的信息放在括号内。在greet_user('jesse')中,将实参'jesse'传递给了函数greet_user(),这个值被存储在形参username中。

 8.2 传递实参 
鉴于函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多。

8.2.1 位置实参

调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此,最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参。

来看一个显示宠物信息的函数。这个函数指出一个宠物属于哪种动物以及它叫什么名字

调用函数多次

~~~~提示:函数可以被调用多次。

调用函数多次是一种效率极高的工作方式。我们只需在函数中编写描述宠物的代码一次,然后每当需要描述新宠物时,都可调用这个函数,并向它提供新宠物的信息。

位置实参的顺序很重要

使用位置实参来调用函数时,如果实参的顺序不正确,结果也会弄反

8.2.2 关键字实参 (使用关键字实参时,务必准确地指定函数定义中的形参名。 )

8.2.3 默认值

编写函数时,可给每个形参指定默认值。

在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,将使用形参的默认值。

因此,给形参指定默认值后,可在函数调用中省略相应的实参。使用默认值可简化函数调用

8.2.4 等效的函数调用

下面对这个函数的所有调用都可行:

 8.2.5 避免实参错误

8.3 返回值

函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值。在函数中,可使用return语句将值返回到调用函数的代码行。返回值让你能够将程序的大部分繁重工作移到函数中去完成,从而简化主程序。

8.3.1 返回简单值

记住:return 和 变量是对应关系(return——变量)

8.3.2 让实参变成可选的

例如,假设我们要扩展函数get_formatted_name(),使其还处理中间名。

然而,并非所有的人都有中间名,为让中间名变成可选的,可给实参middle_name指定一个默认值——空字符串,为让get_formatted_name()在没有提供中间名时依然可行,可给实参middle_name指定一个默认值——空字符串,并将其移到形参列表的末尾

8.3.3 返回字典

函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。

8.3.4 结合使用函数和 while 循环

下面将结合使用函数get_formatted_name()和while循环,以更正规的方式问候用户。下面尝试使用名和姓跟用户打招呼。

但这个while循环存在一个问题:没有定义退出条件。请用户提供一系列输入时,该在什么地方提供退出条件呢?我们要让用户能够尽可能容易地退出,因此每次提示用户输入时,都应提供退出途径。每次提示用户输入时,都使用break语句提供了退出循环的简单途径。

8.4 传递列表

将一个名字列表传递给一个名为greet_users()的函数,这个函数问候列表中的每个人。

8.4.1 在函数中修改列表

将列表传递给函数后,函数就可对其进行修改。在函数中对这个列表所做的任何修改都是永久性的,这让你能够高效地处理大量的数据。

来看一家为用户提交的设计制作3D打印模型的公司。需要打印的设计存储在一个列表中,打印后移到另一个列表中。

我们可编写两个函数第一个函数将负责处理打印设计的工作,而第二个将概述打印了哪些设计。

8.4.2 禁止函数修改列表

有时候,需要禁止函数修改列表。。你可能会做出这样的决定:即便打印所有设计后,也要保留原来的未打印的设计列表,以供备案。但由于你将所有的设计都移出了unprinted_designs,这个列表变成了空的,原来的列表没有了。为解决这个问题,可向函数传递列表的副本而不是原件。

切片表示法[:]创建列表的副本。在print_models.py中,如果不想清空未打印的设计列表,
可像下面这样调用print_models():

print_models(unprinted_designs[:], completed_models) 

这样函数print_models()依然能够完成其工作,但它使用的是列表unprinted_designs的副本,而不是列表unprinted_designs本身。像以前一样,列表completed_models也将包含打印好的模型的名称,但函数所做的修改不会影响到列表unprinted_designs。

8.5 传递任意数量的实参

下面的函数只有一个形参*toppings,但不管调用语句提供了多少实参,这个形参都将它们统统收入囊中。

形参名*toppings中的星号(*)让Python创建一个名为toppings的空元组,并将收到的所有值都封
装到这个元组中。(因此,别忘了给形参加上*(星号),即形参*toppings)

注意,Python将实参封装到一个元组中

不管收到的是一个值还是三个值,这个函数都能妥善地处理,不管函数收到的实参是多少个,这种语法都管用。

8.5.1 结合使用位置实参和任意数量实参

如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。

例如,如果前面的函数还需要一个表示比萨尺寸的实参,必须将该形参放在形参*toppings的前面

8.5.2 使用任意数量的关键字实参

8.6 将函数存储在模块中

8.6.1 导入整个模块

函数的优点之一是,使用它们可将代码块与主程序分离。通过给函数指定描述性名称,可让主程序容易理解得多。你还可以更进一步,将函数存储在被称为模块的独立文件中,再将模块导入到主程序中。import语句允许在当前运行的程序文件中使用模块中的代码。

第九章        类

使用面向对象编程可模拟现实情景,其逼真程度达到了令你惊讶的地步。

9.1 创建和使用类

使用类可以模拟事物,比如创建一个表示小狗的类。对于大多数宠物狗来说,有年龄和名字,会蹲下和打滚。

9.1.1 创建 Dog 类

根据约定,在Python中,首字母大写的名称指的是类。这个类定义中的括号是空的,因为我们要从空白创建这个类。

方法__init__():类中的函数称为方法。在这个方法的定义中,形参self必不可少,还必须位于其他形参的前面。我们将通过实参向Dog()传递名字和年龄;self会自动传递,因此我们不需要传递它。每当我们根据Dog类创建实例时,都只需给最后两个形参(name和age)提供值。


9.1.2 根据类创建实例
9.2 使用类和实例

你可以使用类来模拟现实世界中的很多情景。类编写好后,你的大部分时间都将花在使用根据类创建的实例上。你需要执行的一个重要任务是修改实例的属性。你可以直接修改实例的属性,也可以编写方法以特定的方式进行修改。
9.2.1 Car 类

9.2.2 给属性指定默认值 
9.2.3 修改属性的值 
9.3 继承
9.3.1 子类的方法__init__() 
9.3.2 Python 2.7 中的继承
9.3.3 给子类定义属性和方法
9.3.4 重写父类的方法 
9.3.5 将实例用作属性
9.3.6 模拟实物 
9.4 导入类 
9.4.1 导入单个类 
9.4.2 在一个模块中存储多个类
9.4.3 从一个模块中导入多个类 
9.4.4 导入整个模块
9.4.5 导入模块中的所有类 
9.4.6 在一个模块中导入另一个模块
9.4.7 自定义工作流程
9.5 Python 标准库

python 学习2相关推荐

  1. pygame是python的一个库吗,python学习pygame,,基本库导入impor

    python学习pygame,,基本库导入impor 基本库导入 import pygame import sys from pygame.locals import * 初始化 pygame.ini ...

  2. python科学计数法转换_对比Python学习Go 基本数据结构

    公众号文章不方便更新,可关注底部「阅读原文」博客,文章随时更新. 本篇是「对比 Python 学习 Go」[1] 系列的第三篇,本篇文章我们来看下 Go 的基本数据结构.Go 的环境搭建,可参考之前的 ...

  3. python学习------tab补全

    python学习------tab补全   python也可以进行tab键补全 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/usr/bin/env  ...

  4. Python学习day5作业-ATM和购物商城

    Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆, ...

  5. Python学习系列(六)(模块)

    Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ...

  6. 最新Python学习项目Top10!

    作者 | Mybridge 译者 | Linstancy 整理 | Jane 出品 | AI科技大本营 [导读]过去一个月里,我们对近1000个Python 学习项目进行了排名,并挑选出热度前10的项 ...

  7. 200页!分享珍藏很久的Python学习知识手册(附链接)

    这是之前入门学习Python时候的学习资料,非常全面,从Python基础.到web开发.数据分析.机器学习.深度学习.金融量化统统都有,该手册是HTML版本,左侧是目录,可以点击,右侧是对目录知识点的 ...

  8. Python学习系列(五)(文件操作及其字典)

    Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件      在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...

  9. Python学习01 Hello World

    Python学习之Hello World 准备工作 去官网http://www.python.org/ 下载python的安装包: http://www.python.org/download/ 当前 ...

  10. [python教程入门学习]python学习笔记(CMD执行文件并传入参数)

    本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

最新文章

  1. 【发现】Warcraft III v1.22 不用正版CDKey上Battle.net 续篇
  2. angular 打印 lodop 引入css样式
  3. 随机生成文件名字或随机生成一个数
  4. python编程入门经典实例-【python】编程语言入门经典100例--30
  5. 腾讯NExT Studios万字解读:我们是怎样将一款偏硬核的Roguelike游戏大众化的?
  6. vue实现鼠标悬浮 显示全部内容
  7. Delphi MlSkin v3.9 (2019.4.15)发布啦! 它能让你的程序拥有像QQ一样多彩炫丽的外观...
  8. 在Windows Server 2012 R2的Hyper-V中设置虚拟机启用增强会话模式
  9. 详述 PyPI 中的远程代码执行漏洞,可引发供应链攻击
  10. py+webdriver学习之旅6:cookie
  11. 常用EDA软件的license文件结构分析
  12. Origin: Piper diagram/Trilinear diagram (三线图)
  13. 微软拼音输入法 2003 精选版 怎么用
  14. 按键精灵助手之按钮响应事件
  15. cadence SPB17.4 - orcad - 层次原理图
  16. html制作好看的五子棋(源码)
  17. ajax后台数据怎么返回,后台获取ajax参数 怎么返回数据
  18. Python的基础语法及使用
  19. 转:比谎言更可怕的,是对真相视而不见
  20. Oracle 18c:拉里·埃里森亲自支招,数据库自动化之后,DBA何去何从?

热门文章

  1. ASP.NET Web Forms - 教程
  2. 银行账号正则_求一个能验证银行卡号的正则表达式
  3. 前端预览pdf文件流
  4. 2019年制定的小目标
  5. python填充三角形颜色_python的pillow用ImageDraw.Draw.polygon如何填充半透明的颜色
  6. 线程池引发的故障到底该怎么排查?
  7. python中label组件参数_【Python64-tkinter_label组件】
  8. java休闲游戏背景音乐推荐_休闲益智类游戏背景音乐推荐
  9. echo和narcissus寓意_【故事】三毛的英文名Echo,有什么含义?
  10. 魔兽、星际和红警的比较