# 字典 dict
# 用{}定义,用键值对组成
# 变量 = {key1: value, key2: value, ...} 一个key: value是一个元素
# 字典的key可以是字符串类型和数字类型,不能是列表,value可是以任意类型
# 定义空字典
my_dict = {}
my_dict1 = dict()
print(type(my_dict)) # <class 'dict'>
print(type(my_dict1)) # <class 'dict'>
# 定义带数据的字典
my_dict2 = {'name': 'zhangsan', 'age': 18, 'sex': '男', 'course': ['数学', '语文', '英语'], 1: [2, 3]}
print(my_dict2) # {'name':'zhangsan', 'age': 18, 'sex':'男', 'course': ['数学', '语文', '英语'], 1: [2, 3]}
# 访问value值,在字典中没有下标的概念,使用key值访问对应的Value值
print(my_dict2['name']) # zhangsan
print(my_dict2['course']) # ['数学', '语文', '英语']
print(my_dict2['course'][1]) # 语文 因为my_dict2['course']的值是一个列表,列表可以使用下标查找值
# 如果key值不存在,程序会报错
# dict.get(key) 也可以查找value值
print(my_dict2.get('name')) # zhangsan
print(my_dict2.get('course')) # ['数学', '语文', '英语']
print(my_dict2.get('course')[1]) # 语文 因为my_dict2.get('course')的值是一个列表,列表可以使用下标查找值
print(my_dict2.get('salary')) # None 用这种方式,找不到时会输出None,不会报错
# dict.get(key,数据值) 如果key存在,返回key对应的value值,如果key不存在,返回书写的数据值
print(my_dict2.get("salary", 'NO')) # NO
print(len(my_dict2)) # 5 键的数目就是长度数
# 字典中的添加数据和修改数据
my_dict = {'name': 'zhangsan'}
# 字典中添加和修改数据,使用key值进行添加和修改
# dict[key] = 数据值 如果key值存在,就是修改,不存在就是添加
my_dict['age'] = 18 # key值不存在,添加
print(my_dict) # {'name': 'zhangsan', 'age': 18}
my_dict['age'] = 19 # key值已经存在,修改
print(my_dict) # {'name': 'zhangsan', 'age': 19}
# key值 int的1和float的1.0代表一个数据
my_dict[1] = 'int'
print(my_dict) # {'name': 'zhangsan', 'age': 19, 1: 'int'}
my_dict[1.0] = 'float'
print(my_dict) # {'name': 'zhangsan', 'age': 19, 1: 'float'}
# 字典中删除数据
# del 根据key值删除数据 dict[key]
my_dict = {'name': 'zhangsan', 'age': 19, 1: 'float', 'password': 123456}
del my_dict['name']
print(my_dict) # {'age': 19, 1: 'float', 'password': 123456}
# pop 根据key值删除数据 dict.pop(key)
my_dict.pop('age')
print(my_dict) # {1: 'float', 'password': 123456}
# clear() # 清空字典,删除所有键值对 dict.clear()
my_dict.clear()
print(my_dict) # {}
# 补充: del.dict 会直接删除这个字典,就是说之后不能再直接使用这个变量了,需要重新定义
# del my_dict
# print(my_dict) # 代码报错,变量未定义 NameError: name 'my_dict' is not defined
# 字典的遍历
# for循环直接遍历,是对key值直接遍历
my_dict = {'name': 'zhangsan', 'age': 19, 1: 'float', 'password': 123456}
for key in my_dict:
print(key)
# name
# age
# 1
# password
for key in my_dict:
print(key, my_dict[key])
# name zhangsan
# age 19
# 1 float
# password 123456
# dict.keys() 获取字典中所有的key值,得到的类型是dict_keys,该类型具有的特点是:
# 1.可以使用list()进行类型转换,即将其转换为列表类型
# 2.可以使用for循环进行遍历
my_dict = {'name': 'zhangsan', 'age': 19, 1: 'float', 'password': 123456}
results = my_dict.keys()
print(results) # dict_keys(['name', 'age', 1, 'password'])
for key in results:
print(key)
# name
# age
# 1
# password
# dict.values()
results = my_dict.values()
print(results) # dict_values(['zhangsan', 19, 'float', 123456])
for value in results:
print(value)
# zhangsan
# 19
# float
# 123456
# dict.items() 获取所有的键值对,类型是dict_items
# 1.可以使用list()进行类型转换,即将其转换为列表类型
# 2.可以使用for循环进行遍历
result = my_dict.items()
print(result, type(
result)) # dict_items([('name', 'zhangsan'), ('age', 19), (1, 'float'), ('password', 123456)]) <class 'dict_items'>
for item in result:
print(item, item[0]) # item是元组类型,可以使用下标查找,查找每个元组里的下标为0的值
# ('name', 'zhangsan') name
# ('age', 19) age
# (1, 'float') 1
# ('password', 123456) password
for k, v in result: # k 是元组中的第一个数据,v 是元组中的第二个数据
print(k, v)
# name zhangsan
# age 19
# 1 float
# password 123456
# 等同于
# for item in result:
# print(item[0], item[1])
# enumerate 将一个可遍历的数据对象(如列表、元组或字符串)中元素所在的下标和具体元素数据组合在一起,变成元组
my_list = ['a', 'b', 'c', 'd', 'e']
for i in my_list:
print(my_list.index(i), i) # 找到对应的下标和元素
# 0 a
# 1 b
# 2 c
# 3 d
# 4 e
for j in enumerate(my_list):
print(j)
# (0, 'a')
# (1, 'b')
# (2, 'c')
# (3, 'd')
# (4, 'e')
# 公共方法
# 1.运算符
# + 合并 支持类型:字符串,列表,元组
a = [1, 2] + [3, 4] # [1, 2, 3, 4]
# * 复制 支持类型:字符串,列表,元组
b = ['hi'] * 4 # ['hi', 'hi', 'hi', 'hi']
# in 元素是否存在 支持类型:字符串,列表,元组,字典(在字典中判断的是key)
c = 3 in (1, 2, 3) # True
# not in 元素是否不存在 支持类型:字符串,列表,元组,字典(在字典中判断的是key)
d = 3 in (1, 2, 3) # False
# 2.Python内置函数
# len(item) 计算容器中元素个数
# max(item) 返回容器中元素最大值 对于字典来说比较的是key值
# min(item) 返回容器中元素最小值 对于字典来说比较的是key值
# del(item) 删除变量
# 函数
# 函数定义
def 函数名(): 代码,规范定义函数的代码块前后都要与别的代码空两行
# 函数的文档说明
本质就是注释,告诉别人这个函数是干什么用的,不过这个注释有特定的书写要求,要写在函数名字的下方
# 规范函数文档说明用三个双引号
def func():
"""
打印输出一个hello world!
"""
print("hello world!")
# 查看函数文档注释可以使用help(函数名)
help(func)
# Help on function func in module __main__:
#
# func()
# 打印输出一个hello world!
# 用函数定义求任意两个数的和
# def num_sum():
# num1 = float(input("请输入数字一:"))
# num2 = float(input("请输入数字二:"))
# sum_result = num1 + num2
# print(sum_result)
#
#
# num_sum()
def num_sum(a, b): # a和b称为形式参数,简称形参
result = a + b
print(f"{result:.2f}")
# 函数调用
如果函数在定义的时候有形参,那么在函数调用的时候,必须传递参数值,这个参数我们称为实际参数,简称实参
# 在函数传递的时候会将实参的值传递给形参
# 形参的个数与实参的个数要一样
num_sum(11.3, 15.4) # 把11.3给了a,把15.4给了b
# 局部变量,就是在函数内部定义的变量
# 局部变量只能在函数内部使用,不能在函数外部和其他函数中使用
# 函数内部可以直接访问全局变量的值
# 函数内部不可以直接修改全局变量的值,想要在函数内部修改全局变量的值需要使用global关键字声明这个变量为全局变量
num = 10 # 全局变量
g_num = 20
def func():
num = 100 # 局部变量
global g_num
g_num = 200
func()
print(num) # 10 因为在函数外的输出要用全局变量
print(g_num) # 200 global 把全局变量的值修改为200了
# 函数返回值
# 在函数中定义的局部变量,或者通过计算得出的局部变量,想要在函数外部访问和使用,此时就可以使用return关键字,将这个返回值返回
# return关键字的作用:将return后面的数据值返回,程序代码遇到return时会终止执行
# 注意点:return 关键字必须要写在函数中,值返回到调用的地方
def num_add(a, b):
c = a +b
# 想要将求和的结果c返回,即函数外部使用求和的结果
return c
print(f"输出的结果是:{c}") # 这样写的话,由于函数遇到return会终止运行,所以这一行无法运行
num_add(100,200) # 无结果展示
def num_add1(a, b):
c = a +b
# 想要将求和的结果c返回,即函数外部使用求和的结果
return c
res = num_add1(100,200)
print(f"函数外部获得了求和的结果:{res}")
# 函数返回多个数据值
def func(a, b):
c = a + b
d = a - b
# 需求:想要将c 和 d 的值都返回
# 容器可以保存多个数据值,就可以将c和d放到容器中返回
return [c, d] # 返回一个列表
# return (c, d) # 返回一个元组
# renturn {0: c, 1: d} # 返回一个字典
# return c, d 默认是组成元组进行返回的
result = func(100, 200)
print(f"a+b的结果是{result[0]},a-b的结果是{result[1]}")
# return后面可以不写数据值,默认返回None
# 函数可以不写return,默认返回None
# 函数嵌套调用
def func():
print("func start ......")
print("函数的其他代码")
print("func end")
def func1():
print("func1 start ...... ")
func1()
print("func1 end ......")
func1()
# 用函数打印一条横线
def print_one_line():
print('-'*30)
print_one_line() # ------------------------------
# 用函数打印5条直线
def print_lines(n):
for i in range(n):
print('-'*30)
print_lines(5)
# ------------------------------
# ------------------------------
# ------------------------------
# ------------------------------
# ------------------------------
# 写一个函数求三个数的和
def sum(a, b, c):
res = a + b + c
return res
a, b, c = input("请分别输入a, b, c的值:").split()
a = float(a)
b = float(b)
c = float(c)
num_sum = sum(a, b, c)
print(num_sum)
# 写一个函数求三个数的平均值
def avg(a, b, c):
res = (a + b + c) / 3
return res
a, b, c = input("请分别输入a, b, c的值:").split()
a = float(a)
b = float(b)
c = float(c)
num_avg = avg(a, b, c)
print(num_avg)