好了,我们接着上期
目录
十一.字典
如果我们赋值许多的变量,需要哪个变量就用print,把它打印出来,这时就会出现一个问题,那就是这些变量太多,导致整体看上去十分的不规整,这时就需要一个能包容这些变量的数据结构,有人说那上次的列表可以实现吗,答案是当然可以只不过有个致命的问题那就是,列表无法显示这个变量名,这导致我们无法知道这个赋值到底是干什么的,这是就需要用到另一个数据结构那就是字典,字典可以很好的解决这个问题,字典用于存储键值对,键的英文是key,值是value,键会有对应的值,键是用来查找值的
键 : 值
(key) (value)
空的字典用一对花括号表示,要在字典里面放入多个键值对,就用花括号把他们包住,键和值之间用引号表示对应,键值对之间用逗号分隔
contacts={"键1":"值",
"键2":"值"......}
如果我们要获取某个键的值,在字典后面跟方括号里面放入键,需要注意的是,键的类型必须是不可变的,列表是可变的就不能作为建,而字符串、整数、浮点数等就可以
contacts["键1"]
但有时会遇到相同的键,但需要其他的属性来辨别,就比如说我们的通讯录里面有几个叫张三的,但我们会根据这几个叫张三的不同年龄来区分它们,有人肯定会这样想
contacts={["张三",22]:"xxxxxxxxxxx",
["张三",23]:"xxxxxxxxxxx",
["张三",24]:"xxxxxxxxxxx"}
这样是肯定不行的,列表是不能作为键的,在刚刚就有提到,那么怎么办呢,放心python为我们准备了一个不可变但又很像列表的数据结构,元组tuple,元组里面可以放多个元素,和列表显而易见的区别是列表用方括号,元组用圆括号,另外由于元组不可变,之前列表的那些添加,删除元素等统统不可行
example_tuple=("xxx","xxx"......)
这样就完美解决了刚刚的问题
contacts={(张三",22):"xxxxxxxxxxx",
("张三",23):"xxxxxxxxxxx",
("张三",24):"xxxxxxxxxxx"}
字典和列表一样是可变的,所以可以添加和删除键值对,添加进字典只需要字典名方括号里面放它的键,然后赋值就行了,但需要注意的是更新值也是一样操作,如果在这个字典中已经有相同的键存在,那我们的操作就会把它原本的值给覆盖掉想知道某个键是否已经存在,我们可以通过”键 in 字典“来查询,这回返回一个布尔值来告诉你该键是否已经存在
contacts["键"]="xxxxxx"
删除一个键值对,我们可以用del字典名[”xxx“]里面放入键,这样就可以把键和对应的值从字典里面删除了。但如果键本身不存在的话就会报错
del contacts["xxx"]
如果想知道字典里面有多少的键值对,就需要我们的老朋友len
len(contacts)
十二.循环
在python中我们可以用for循环和while循环进行迭代,迭代对象可以是列表、字典、字符串等,对列表进行迭代就是按顺序对里面的各个元素做一些事情,对字典进行迭代就是按顺序对里面的各个键或值做一些事情,对字符串进行迭代就是按顺序对里面的各个字符串做一些事情,这里我将分别给大家介绍下这两种循环
for循环的基本结构,先关键字for 然后自己取一个变量名来代表迭代对象里面的每个东西,接下来是关键字in后面跟上迭代的对象,针对每个元素的操作写在for的下面一行,所有前面带缩进的,都会视为这个for循环里面的语句,对每个元素都会执行一遍
for 变量名 in 可迭代对象
#对每个变量做一些事情
#...
针对字典有三个方法:字典名.keys()会返回里面的所有键、字典名.values()会返回里面的所有值、
字典名.items()会返回里面的所有键值对,要注意的是字典名.items()在for循环时,变量会被赋值为键和值组成的元组,因此要设置两个变量名
字典名.keys() #所有键
字典名.values() #所有值
字典名.items() #所有键值对
for循环结合range还有奇效,range用来表示整数序列,括号里面的一个数字表示起始值,最后一个表示结束值,需要注意的是 结束值不在序列的范围内
range(1,5)
比如说
for i in range (1,9):
print(i)
i会依次赋值为从1到8的数字
range还可以包含第三个参数,表示步长,不指明的话默认为1
range(1,5,2)
好了for循环简单就到这,接下去是while循环,while循环基本结构:while关键词后面跟上一个条件,只要求值出来为布尔值都可以作为条件,计算机会判断这个条件是否为真,如果为真,则执行下方缩进部分的内容,然后再次判断条件是否为真,如果为真,继续执行下方内容,如此循环直到条件为假,退出循环,如果while后面的条件第一次判断的时候就为False,那么下方缩进部分的内容一次也不会被执行
while 条件A:
行动B
那什么时候该用for循环或while循环呢,只要记得一点有明确的循环对象或次数用for更方便,在条件何时结束未知的情况下用while,在很多时候for循环可以和while循环相互转换
十三.格式化字符串
简洁优雅的格式化字符串:
1.format:
message_content="""律回春渐,新元肇启。
金{0}贺岁,福气东来。
给{1}及家人拜年了""".
format(year,name)
花括号表示被替代的位置,里面的数字表示会用format里面的第几个参数及逆行替换
message_content="""律回春渐,新元肇启。
金{current_year}贺岁,福气东来。
给{receiver_name}及家人拜年了""".
format(current_year=year,receiver_name=name)
2.f-字符串,在字符串前加前缀“f”花括号里的内容会被直接求值添加到字符串内
name=“老林”,year=“虎”,meddage_content=f"""律回春渐,新元肇启。
金{year}贺岁,福气东来。
给{name}及家人拜年了。"""
除了用字符串进行格式化,数字也可以对字符串进行格式化
gpa_dict={"小明":3.251,"小花":3.869,"小李":2.683,"小张":3.685}
for name in gpa_dict.items():
gpa=gpa_dict[name]
print("{0}你好,你的当前绩点为:{1:.数字f(来指定浮点数在格式化时,保留几位小数)}".format(name,gpa))
好了今天就到这,下次我将着重介绍python的重头戏函数以及面向对象,敬请期待!!!!