python 基础学习 (六)

本贴最后更新于 729 天前,其中的信息可能已经事过景迁

数据类型转换和控制流
一、能直接相互转换
str <===> int
list <===> set
tuple <===> set
list <===> tuple

二、不能直接相互转换
str ===> tuple
str ===> list
str ===> set

字典
一、创建【掌握】
1、通过键值对表达元素,一个键值对表示一个元素
2、key不要重复,如果重复相同的key对应的value会被覆盖
test_dict = {}
test_dict = {"key1":"val1","key2":"val2"}

3、嵌套list创建字典

test_list = [('key1', 'val1'), ('key2', 'val2'), ('key3', 'val3')]
res7 = dict(test_list)
print(res7,type(res7))

4、可变数据类型不可以作为字典的key,不可变数据类型才能作为字典的key
元组可以作为字典的key
test_dict2 = {('key1', 'val1'):"val1",'key2':'val2'}
5、创建字典
list1 = ['a','b','c'] #每个元素都是key
list2 = [1,2,3] #整个list2是一个value
res3 = dict.fromkeys(list1,list2)
print(res3)
#掌握,后面会再讲
res = dict(zip(list1,list2))
print(res)

二、访问
1、通过key获取对应的value,如果key不存在会报错【KeyError: 'key3'】
test_dict["key3"]

2、如果key3不存在,则返回val3
如果key3不存在,则返回val3
res2 = test_dict.get('key3','val3')

3、获取所有的key
res3 = test_dict.keys()

4、获取所有的value
res4 = test_dict.values()

5、获取所有的key和value
res5 = test_dict.items()

三、修改
key不可以修改
不能在字典中间指定位置插入键值对(字典是无序的)
value可以是任意数据类型
1、通过key修改(如果key存在就修改对应的value值,如果key不存在就会添加一个键值对)
test_dict["key4"]="val4"

2、当key不存在就添加一个可以,当key存在不做任何修改
test_dict.setdefault("key1","val4")

3、合并
如果key相同则会使用test_dict1的key对应的value覆盖test_dict2中key对应的value
test_dict2.update(test_dict1)

四、删除
1、通过del删除
del test_dict["key1"]

2、删除指定的key,返回对应删除的value
res1 = test_dict.pop("key2")

3、删除后进栈的,后进先出,返回被删除的key,value
res2 = test_dict.popitem()

4、清空字典
test_dict.clear()

使用场景:RSA加密,或者签名的时候,要求请求参数的字典序
{"key1": 1, "key2": 10, "key3": 2,"key4": 5}
{"key1": 1, "key3": 2,"key4": 5,"key2": 10}
密串:公钥加密

五、排序
key=operator.itemgetter(0):通过key排序
key=operator.itemgetter(1):通过value排序
1、升序

test_dict = {"key1": 1, "key2": 10, "key3": 2,"key4": 5}
res = dict(sorted(test_dict.items(),key=operator.itemgetter(0)))

2、降序

test_dict = {"key1": 1, "key2": 10, "key3": 2,"key4": 5}
res = dict(sorted(test_dict.items(),key=operator.itemgetter(0),reverse=True))

控制流
一、什么叫流程
1、事务进行的次序就叫流程

二、python里面流程的分类
1、顺序结构:代码从上往下执行
2、选择结构:代码根据条件选择来执行
3、循环结构:代码循环执行

三、选择结构
1、单if语句

if a < 10:
print("a > 10")
print("执行完成")

2、标准的if...else语句

if a < 10:
print("a < 10")
else:
print("a >= 10")
print("执行完成")

四、debug调试
1、step over: 执行当前断点所在位置的代码,进入下一步停住
2、resume program:执行当前断点所在位置的代码,在下一个断点位置停住
3、小窗口执行代码

2022-11-14(选择结构、循环结构、range)
三、选择结构
1、单if语句

if a < 10:
print("a > 10")
print("执行完成")

2、标准的if...else语句

if a < 10:
print("a < 10")
else:
print("a >= 10")
print("执行完成")

3、复合if...elif...else
只会走一个条件语句

if num > 100:
print("num > 100")
elif 50< num <= 100:
print('50< num <= 100 : {}'.format(num))
elif 40< num <= 50:
print(f'40< num <= 50 : {num}')
else:
print(num)

4、用户输入的默认是str类型
num1 = input("请输出num:")

拓展【了解】
1、可迭代对象:能通过for循环遍历的对象为可迭代对象(创建它的类实现了,迭代协议)
2、判断对象是否是可迭代对象,返回布尔值
字符串、列表、元组、集合、字典

test_list ={1,33,3}
result = isinstance(test_list,Iterable)
print(result)

循环结构
四、for循环【掌握】
1、遍历: 将可迭代对象里面的元素依次获取出来的过程叫遍历
2、遍历字典
test_dict = {"key1":"val1","key2":"val2","key3":"val3"}
#遍历key
for i in test_dict:
print(i)
#遍历key
for i in test_dict.keys():
print(i)
#遍历value
for a in test_dict.values():
print(a)
#遍历Key和value
for key,val in test_dict.items():
print(key,val)
#遍历Key和value,元组
for key in test_dict.items():
print(key)
print(test_dict.items())

五、while循环【掌握】
1、while循环一定要写退出条件,否则就会死循环
2、例子中while循环退出条件是num不小于10的时候就会退出循环

while num < 10:
print(num)
num += 1
print("条件不成立,循环退出",num)
while num < 20:
print(num)
num2 = random.randint(1,8)
print(f"随机数{num2}")
num += num2
print("条件不成立,循环退出",num)

六、while 循环 和for循环如何选择
1、for循环:知道循环次数就选for循环
2、while:不知道循环次数选while,一定要写退出条件

七、range函数

for index in range(0,len(test_list)):
res = test_list[index]
if res == 'c':
test_list[index]=10
print(test_list[index])
print(test_list)
print("="*20)

循环控制
1、continue: 结束本轮循环,进入下一轮循环

if i == 3:
continue
print(i)

2、break: 结束本次循环,退出循环

if i == 3:
break
print(i)

嵌套循环
for for嵌套循环

print("柠檬")
for j in range(3): #0,1,2
print("python56")
print("内层循环结束")

拓展: 99乘法表

for j in range(1,i+1): #1,2 ,3 , 4
#end=''不换行输出
print(f" {j} * {i} = {j*i}\t",end='')
print("*",end='')
#换行输出

while + for 循环嵌套‘

while num<5:
print("外层循环")
for i in range(3):
print("内存循环:",num)
num += 1
回帖
请输入回帖内容 ...