Python学习笔记(五):字典的基本操作到流程控制

Python学习笔记(五):字典的基本操作到流程控制

一. 字典的基本操作

基本用法

通过key访问value
a_dict = {'a': 1}
print(a_dict['a'])  

要为dict添加 key-value 对,只需为不存在的 key 赋值

要删除宇典中的 key-value 对,可使用 del 语句
del a_dict['a']dict中存在的 key-value 对赋值,会覆盖原有的 value,这样就改变了dict中的 key-value 对

判断字典是否包含指定的 key,可以使用 innot in 运算符,对于dict而言,innot in 运算符都是基于 key 来判断的

字典的 key 是关键,字典的 key 可以是任意不可变类型

常用方法

clear() 
清空字典中所有的 key-value 对
a_dict.clear()
get()
根据 key 来获取 value,访问不存在的 key,会返回None,不会导致错误
a_dict.get('a')
update()
用一个字典所包含的 key-value 对来更新己有的字典
被更新的字典中己包含对应的 key-value 对,那么原 value 会被覆盖;反之则该 key-value 对被添加进去
items()、keys()、values()
于获取字典中的所有 key-value 对、所有 key、所有 value,依次返回 dict_items、dict_keys 和 dict_values 对象

用字典的 items()、keys()、values() 之后,都需要调用 list() 函数将它们转换为列表
b_dict = a_dict.items() #获取字典所有的key-value对
print(list(b_dict))
pop() 
用于获取指定 key 对应的 value,并删除这个 key-value 对

a_dict.pop('a')
popitem()
用于随机弹出字典中的一个 key-value 对

字典的 popitem() 方法总是弹出底层存储的最后一个 key-value 对
popitem()弹出的是一个元组,因此可以通过序列解包的方式用两个变量分别接收 key 和 value
>>>k, v = a_dict.popitem()
>>>print(k, v) 
a 1
setdefault()
根据 key 来获取对应 value 的值,当获取的 key 在字典中不存在时,为这个不存在的 key 设置一个默认的 value,然后会返回该 key 对应的 value

>>>a_dict = {'a': 1}
>>>a_dict.setdefault('b', 2) #该key在dict中不存在,新增key-value对
>>>print(a_dict)
{'b': 2, 'a': 1}

>>>a_dict.setdefault('a', 111) # 该key在dict中存在,不会修改dict内容
>>>print(a_dict)
{'b': 2, 'a': 1}

使用字典格式化字符串

如果字符串模板中包含大量变量,可在字符串模板中按 key 指定变量,然后通过字典为字符串模板中的 key 设置值
a_str = 'Name:%(name)s, Age:%(age)i'
a_dict = {'name':'youchanwill', 'age': 20 }
print(a_str % a_dict)

二. 流程控制:选择结构

if else条件语句

语法格式说明

表达式形式不限,只要它能得到一个值
代码块由具由相同缩进量的若干条语句组成
ifelifelse 语句的最后都有冒号:
import sys  #引入sys模块
number = int( input("") )
if number < 20 :  #判断语句
    print("该数小于二十")
    sys.exit() #sys 模块的 exit() 函数用于退出程序
else:
    print("该数不小于二十")
print("程序正在运行") #该语句不属于if的代码块
if 语句如何判断表达式是否成立

布尔类型(bool)只有两个值,TrueFalse

数字,Python 会把 00.0 当做“False”,把其它值当做“True”

其它类型,当对象为空或者为 None 时,Python 会把它们当做“假”,其它情况当做真(""#空字符串 [ ]#空列表 ( )#空元组  { }#空字典  None#空值)

对于没有 return 语句的函数,返回值为空(None*return语句用于退出函数,向调用方返回一个表达式

if else条件语句对缩进的要求

Python以缩进来标记代码块,代码块一定要有缩进,没有缩进的不是代码块
同一个代码块的缩进量要相同,缩进量不同的不属于同一个代码块

ifelifelse 后面的代码块的所有语句都要缩进,缩进量要大于 ifelifelse 本身,而且缩进量必须相同

Python要求代码块必须缩进,但没有要求缩进量,常规1个Tab 键的位置

不需要使用代码块的地方不要随便缩进

pass语句

pass 空语句 
是Python中的关键字,用来让解释器跳过此处

有时候程序需要占一个位置,或者放一条语句,但又不希望这条语句做任何事情,此时就可以通过 pass 语句来实现
number = int( input("") )
if number < 20 :  #判断语句
    pass
else:
    pass
print("程序正在运行") #该语句不属于if的代码块

assert断言

assert 语句,断言语句
用于判断某个表达式的值,如果值为真,则程序可以继续往下执行;反之会报 AssertionError 错误

语法结构:assert 表达式

if 表达式==True:
    程序继续执行
else:
    程序报 AssertionError 错误

assert 语句通常用于检查用户的输入是否符合规定,在程序初期测试和调试过程中有利于对程序排错,提高程序的健壮性

number = int( input("") )
assert 0 <= number <= 100 #断言输入值是否在设定值的范围内
print(number)#只有当 number 位于 [0,100]范围内,程序才会继续执行

三. 流程控制:循环结构

while循环

语法格式:
while test_expression:
    body_statements
    [iteration_statements]
    
while 循环在每次执行循环体之前,都要先对 test_expression 循环条件求值,如果循环条件为真,则运行循环体部分

迭代语句 iteration_statements 总是位于循环体的最后,只有当循环体能成功执行完成时,while 循环才会执行迭代语句 iteration_statements
number = 0  #循环的初始化条件
while number < 10 : # 当number小于10时,执行循环体
    print("number:", number)
    number += 1 # 迭代语句
print("循环结束!")

在使用 while 循环时,一定要保证循环条件有变成假的时候:否则这个循环将永远无法结束

while 循环的循环体中所有代码必须使用相同的缩进,规范与if else语句相同

列表和元组的元素都是有索引的,可通过 while 循环来遍历列表和元组中的所有元素

for循环

for iteration_statements in 序列类型变量:
    body_statements
    
迭代变量iteration_statements用于存放从序列类型变量中读取出来的元素,一般不会在循环中对迭代变量手动赋值

代码块body_statements又称为循环体
name = "youchanwill"
for Name in name: #for循环,遍历name字符串
    print(Name,end="")  #end=''的意思是末尾不换行,加''内的内容
    print(Name,end="1") #end=''的意思是末尾不换行,加''内的内容
youchanwill
y1o1u1c1h1a1n1w1i1l1l1
    
使用 for 循环遍历字符串的过程中,迭代变量会先后被赋值为字符串中的每个字符,并代入循环体中使用
使用 for 循环时,最基本的应用就是进行数值循环

number = 0
for i in range(101): #逐个获取从 1 到 100 ,并累加
    number += i
print(number)
当用 for 循环遍历列表或元组时,其迭代变量会先后被赋值为列表或元组中的每个元素并执行一次循环体

用 for 循环遍历字典时,可以使用 items()、keys() 以及 values()

如果使用 for 循环直接遍历字典,则迭代变量会被先后赋值为每个key-value 对中的key,直接遍历字典,和遍历字典 keys() 方法的返回值是相同的

循环结构中else用法

while 循环还是 for 循环,都可以跟着一个 else 代码块,当循环条件为 False 跳出循环时,程序会最先执行 else 代码块中的代码

循环嵌套

whilefor 循环结构支持嵌套(Nest)

循环嵌套结构的代码,Python执行的流程为:

 1. 当外层循环条件为 True 时,则执行外层循环结构中的循环体

 2. 外层循环体中包含了普通程序和内循环,当内层循环的循环条件为 True 时会执行此循环中的循环体,直到内层循环条件为 False,跳出内循环

 3. 如果此时外层循环的条件仍为 True,则返回第 2 步,继续执行外层循环体,直到外层循环的循环条件为 False

 4. 当内层循环的循环条件为 False,且外层循环的循环条件也为 False,则整个嵌套循环执行完毕

循环嵌套的执行流程图

while-for 嵌套结构:

i = 0
while i<10:
    for j in range(10):
        print("i=",i," j=",j)       
    i=i+1

i=0 循环条件 i<10 成立,进入 while 外循环执行其外层循环体

从 j=0 开始,j <10 成立,进入 for 内循环执行内层循环体,直到 j=10 不满足循环条件,跳出 for 循环体,继续执行 while 外循环的循环体

执行 i=i+1 语句,如果 i<10 依旧成立,则从第 2 步继续执行。直到 i<10 不成立,循环嵌套结构执行完毕

嵌套循环执行的总次数 = 外循环执行次数 * 内循环执行次数
ifwhilefor 之间支持多层嵌套

if ...:
    while ...:
        for ...:
            if ...:
                ...
判断结构和循环结构之间可以相互嵌套,甚至可以多层嵌套
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值