python5、6章

第五章 if语句

5.1 一个简单示例

cars=['sdidas','evil','daiya','guang']
for car in cars:
if car == 'guang':
print(car.upper())
else :
print(car.title())

5.2 条件测试

meigeif条件的核心都是ture或者false,这种代码被称为条件测试。如果条件测试的值为ture,python就执行紧跟在if语句后面的代码;反之,python就忽略这些代码。

5.2.1 检查是否相等

image-20210117121132404

同样,如果要是不同,就是False。

一个等号是陈述;对于图中第一行代码,可以理解为将变量car的值设置为‘puma’,两个等号是发问,对于第二行,可以理解为变量car是否为’puma‘。

5.2.2 检查是否相等是不考虑大小写

大小写在发问中,很重要,如果小写,原本是大写,就会出现False。

同样我们也可以把大写转成小写函数lower()比较,并且转化成小写的发问条件测试语句中是一次性的,不用担心变量的值会改变

5.2.3 检查是否不相等

!=用来表示不

和C语言一样,但是不要忘记if语句的:

5.2.4 比较数字
5.2.5 检查多个条件
1.使用and检查多个条件

and就是必须都满足,才可以ture

image-20210117125011916

2.使用or检查多个条件

有一个满足就行了。

接上面的

image-20210117125135299

反之就false

5.2.6 检查特定值是否包含在列表中

image-20210117125434125

5.2.7 检查特定值是否不包含在列表中
image-20210117125827114

not in 在if语句中。。。长知识了

5.2.8 布尔表达式

术语 布尔表达式

他是条件测试的别名,与条件表达式一样,要么ture,要么false

5.3 if语句

5.3.1 简单的if语句

image-20210117132213635

在if中,缩进与for循环相同,如果测试通过了,就会执行语句后面的所有缩进的代码行,否则就是忽略他。

5.3.2 if-else语句

image-20210117132555857

关于if语句的缩进要与if在位置上相同,不然会报错

5.3.3 if-elif-elif结构
5.3.4 使用多个elif代码块
5.3.5 省略else代码块

应该考虑elif来代替else,因为else包括不成立的所有,而elif是指定范围。

5.3.6 测试多个条件

if-elif-else虽强大,但只适用于只有一个条件满足时,遇到通过了的测试后,python就跳过余下的测试。行为很好,但效率很低。

要关心所有条件,就得使用不包含elif和else的代码块的if语句。

5.4 使用if语句处理列表

5.4.1 检查特殊元素

注意if语句中print的缩进紧邻其下面,否则会报错

image-20210117140708090

5.4.2 确定列表不是空的

image-20210117143044323

如果列表不为空,将输出if-else语句的

5.4.3 使用多个列表

5.5 设置if语句的格式

注意单词之间、符号之间空格,会让代码阅读起来更容易

第六章 字典

6.1 一些简单的字典

image-20210117145017188

字典alien存储了外星人的颜色和点数。

6.2 使用字典

在python中,字典是一系列键-值对。每个键都关联一个值相关联,可以使用键来访问与之关联的值。与值相关的值可以是数字、字符串、列表、甚至字典。实际上可以将任何python对象用作为i字典中的值。

在python中,字典放在花括号中的一系列键-值对表示

就像上面的图那样。

键-值 是两个相关联的值。指定键时,python将返回与之相关联的值。键和值之间用冒号分隔,而键-值对用逗号分隔。

6.2.1 访问字典中的值

还是上面那个图

image-20210117145017188

要获取与键关联的值,可依次指定字典名和放在方括号内的键。

这样会返回字典alien中’color‘相关联的值。

字典中可包含任意数量的键-值对。

上面的图包含两个键-值对。

image-20210117151021605

上图代码首先定义一个字典alien,然后从这个字典中获取与键’point‘相关联的值,并将这个值存储在变量newpoint中。接下里,让整数转化成字符串,并打印着一条消息。

6.2.2 添加键-值对

字典时一种动态结构,可随时随地在其中添加键-值对。添加可以根据指定给字典名、用方括号括起来的键和相关联的值。

image-20210117151453847

这样就是添加,再次打印字典,会发现多两个键-值对。

注意:键-值对的排列顺序与添加顺序不同。python不关心键-值对的添加顺序,而关心键和值之间的关联关系。

6.2.3 先创建一个空字典

要用花括号

6.2.4 修改字典的值

image-20210117154150164

6.2.5 删除键-值对

对于字典中不需要的信息,可以用del对键-值对彻底删除。

使用del删除需要指明字典名和删除的键

image-20210117154550323

6.2.6 由类似对象组成的字典

字典是存储的是一个对象的多种信息,但我们也可以通过使用字典来存储众多对象的同一信息。

定义好字典,在最后一个键-值对的下一行添加一个右花括号,并缩进4空格,使其与字典中的键对齐(美观🐎)另一种是:在最后的一个键-值对后面也加上逗号,方便下一次添加键-值对做好准备。

嗯。。看见书上都是最后一个键-值对加逗号,还是养成这种习惯把,看着好看

举例:

image-20210118111512476

image-20210118111525859

这样就是显示了键所对应的值,并且在语句中以首字母大写的形式

书上说可以把print的那里的语句分成几行,但是我感觉不太好,因为一直到底不好吗,还来回换。。。

6.3 遍历字典

鉴于字典可能包含大量数据,python指出支持字典遍历。

6.3.1 遍历所有键-对值 方法items()

image-20210118112644877

image-20210118112910795

for语句的第二部分包含字典名和方法items(),他返回一个键-对值。接下来,foe循环依次将每个键-值对存储到指定的两个变量中。

python不关心键-值对的存储顺序,只跟踪键和值之间的关联关系。

6.3.2 遍历字典中的所有键 方法keys()

image-20210118113129900

image-20210118113141297

这样只有键,无值。

同样,也可以省略,因为遍历字典时,会默认遍历所有的键,可以把上图的for语句变成 for n in wocao:

然后各种举例:

第一:

image-20210118114238060

image-20210118114251638

第二:看是否调查

image-20210118114448786

6.3.3 按照顺序遍历字典中的所有键

获取字典的元素时,获取顺序是不可预测的。

要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序。

为此,我们可以使用函数sorted()来获得特定顺序排列的键列表副本

image-20210118133522791

image-20210118133533621

这样对打印前的遍历进行了排序。输出表明:按顺序显示所有被调查者的名字

6.3.4 遍历字典中的所有值 values()

ps:不知道咋回事,在输入方法的时候,包括前面的方法,老忘记s,大家别忘了,哈哈哈哈

使用方法set()来剔出重复的值,按照上图

for name in language.values() // 对值进行取

for name in set(language.values()) //对值进行取,并且去掉重复的

6.4 嵌套

需要将一系列字典存储在列表中,或者将列表作为值存储在字典中,这称为嵌套。

6.4.1 字典列表

先创建几个字典,然后用一个变量包含住字典。for循环迭代打印

image-20210118141350549

image-20210118141404388

image-20210118142853882

发现自己一个容易出错的地方,==是发问,=是陈述

6.4.2 在字典中存储列表

有时,需要把列表存储在字典中,而不是字典存储在列表中。

image-20210118144919315

image-20210118144932458

列表和字典的嵌套层级不应太多。如果嵌套层级比前面的示例多得多,很可能有更简单的解决问题的方案。

6.4.3 在字典中存储字典

image-20210118153226481

image-20210118153245114

虽然书上在for的语句中第一个print中用+username,但是还是不习惯,习惯用”+username+“来,这样看着更舒服。。。

在图一,定义了一个名字为users的字典,其中包括两个键:'aeinstein'和'mcurice'与键对应的相关的值都是字典(迷了迷了,哈哈哈),包括第一性、名、居住地。

然后在for中,遍历字典users,让python依次将每个键存储在变量username中,并依次将与当前键相关联的字典存储在变量user中。

自己理解:首先看缩进,知道for后第一次迭代是将aeinstein的键和相关联的字典打印,第一个是打印姓名,第二行是全名(中间的“ ”是空格,这样让其看起来更好看),然后是根据第二行的user中的字典找’first‘和’last‘并相加。然后下面的就和平常一样。

应该让表示每位用户的字典相同结构,不然for循环内部代码会更复杂(就像我们在填写表格那样。。)

训练题

6-7人

image-20210118154804174

其实感觉去掉下面两行,直接prin(people)也行

6-8宠物

image-20210118155009458

6-9 喜欢的地方

image-20210118155317495

6-10 喜欢的数字

image-20210118155547084

6-11 城市

image-20210118161552052

posted @ 2021-01-18 16:18  testadm1n  阅读(134)  评论(0编辑  收藏  举报