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 检查是否相等
同样,如果要是不同,就是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
2.使用or检查多个条件
有一个满足就行了。
接上面的
反之就false
5.2.6 检查特定值是否包含在列表中
5.2.7 检查特定值是否不包含在列表中
not in 在if语句中。。。长知识了
5.2.8 布尔表达式
术语 布尔表达式
他是条件测试的别名,与条件表达式一样,要么ture,要么false
5.3 if语句
5.3.1 简单的if语句
在if中,缩进与for循环相同,如果测试通过了,就会执行语句后面的所有缩进的代码行,否则就是忽略他。
5.3.2 if-else语句
关于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的缩进紧邻其下面,否则会报错
5.4.2 确定列表不是空的
如果列表不为空,将输出if-else语句的
5.4.3 使用多个列表
5.5 设置if语句的格式
注意单词之间、符号之间空格,会让代码阅读起来更容易
第六章 字典
6.1 一些简单的字典
字典alien存储了外星人的颜色和点数。
6.2 使用字典
在python中,字典是一系列键-值对。每个键都关联一个值相关联,可以使用键来访问与之关联的值。与值相关的值可以是数字、字符串、列表、甚至字典。实际上可以将任何python对象用作为i字典中的值。
在python中,字典放在花括号中的一系列键-值对表示
就像上面的图那样。
键-值 是两个相关联的值。指定键时,python将返回与之相关联的值。键和值之间用冒号分隔,而键-值对用逗号分隔。
6.2.1 访问字典中的值
还是上面那个图
要获取与键关联的值,可依次指定字典名和放在方括号内的键。
这样会返回字典alien中’color‘相关联的值。
字典中可包含任意数量的键-值对。
上面的图包含两个键-值对。
上图代码首先定义一个字典alien,然后从这个字典中获取与键’point‘相关联的值,并将这个值存储在变量newpoint中。接下里,让整数转化成字符串,并打印着一条消息。
6.2.2 添加键-值对
字典时一种动态结构,可随时随地在其中添加键-值对。添加可以根据指定给字典名、用方括号括起来的键和相关联的值。
这样就是添加,再次打印字典,会发现多两个键-值对。
注意:键-值对的排列顺序与添加顺序不同。python不关心键-值对的添加顺序,而关心键和值之间的关联关系。
6.2.3 先创建一个空字典
要用花括号
6.2.4 修改字典的值
6.2.5 删除键-值对
对于字典中不需要的信息,可以用del对键-值对彻底删除。
使用del删除需要指明字典名和删除的键
6.2.6 由类似对象组成的字典
字典是存储的是一个对象的多种信息,但我们也可以通过使用字典来存储众多对象的同一信息。
定义好字典,在最后一个键-值对的下一行添加一个右花括号,并缩进4空格,使其与字典中的键对齐(美观🐎)另一种是:在最后的一个键-值对后面也加上逗号,方便下一次添加键-值对做好准备。
嗯。。看见书上都是最后一个键-值对加逗号,还是养成这种习惯把,看着好看
举例:
这样就是显示了键所对应的值,并且在语句中以首字母大写的形式
书上说可以把print的那里的语句分成几行,但是我感觉不太好,因为一直到底不好吗,还来回换。。。
6.3 遍历字典
鉴于字典可能包含大量数据,python指出支持字典遍历。
6.3.1 遍历所有键-对值 方法items()
for语句的第二部分包含字典名和方法items(),他返回一个键-对值。接下来,foe循环依次将每个键-值对存储到指定的两个变量中。
python不关心键-值对的存储顺序,只跟踪键和值之间的关联关系。
6.3.2 遍历字典中的所有键 方法keys()
这样只有键,无值。
同样,也可以省略,因为遍历字典时,会默认遍历所有的键,可以把上图的for语句变成 for n in wocao:
然后各种举例:
第一:
第二:看是否调查
6.3.3 按照顺序遍历字典中的所有键
获取字典的元素时,获取顺序是不可预测的。
要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序。
为此,我们可以使用函数sorted()来获得特定顺序排列的键列表副本
这样对打印前的遍历进行了排序。输出表明:按顺序显示所有被调查者的名字
6.3.4 遍历字典中的所有值 values()
ps:不知道咋回事,在输入方法的时候,包括前面的方法,老忘记s,大家别忘了,哈哈哈哈
使用方法set()来剔出重复的值,按照上图
for name in language.values() // 对值进行取
for name in set(language.values()) //对值进行取,并且去掉重复的
6.4 嵌套
需要将一系列字典存储在列表中,或者将列表作为值存储在字典中,这称为嵌套。
6.4.1 字典列表
先创建几个字典,然后用一个变量包含住字典。for循环迭代打印
发现自己一个容易出错的地方,==是发问,=是陈述
6.4.2 在字典中存储列表
有时,需要把列表存储在字典中,而不是字典存储在列表中。
列表和字典的嵌套层级不应太多。如果嵌套层级比前面的示例多得多,很可能有更简单的解决问题的方案。
6.4.3 在字典中存储字典
虽然书上在for的语句中第一个print中用+username,但是还是不习惯,习惯用”+username+“来,这样看着更舒服。。。
在图一,定义了一个名字为users的字典,其中包括两个键:'aeinstein'和'mcurice'与键对应的相关的值都是字典(迷了迷了,哈哈哈),包括第一性、名、居住地。
然后在for中,遍历字典users,让python依次将每个键存储在变量username中,并依次将与当前键相关联的字典存储在变量user中。
自己理解:首先看缩进,知道for后第一次迭代是将aeinstein的键和相关联的字典打印,第一个是打印姓名,第二行是全名(中间的“ ”是空格,这样让其看起来更好看),然后是根据第二行的user中的字典找’first‘和’last‘并相加。然后下面的就和平常一样。
应该让表示每位用户的字典相同结构,不然for循环内部代码会更复杂(就像我们在填写表格那样。。)
训练题
6-7人
其实感觉去掉下面两行,直接prin(people)也行
6-8宠物
6-9 喜欢的地方
6-10 喜欢的数字
6-11 城市