0: 温故知新
l = [111, 222, 333] l2 = l # 把l的内存地址给l2 l[0] = 'balabla' print(l) #['balabla', 222, 333] print(l2) #['balabla', 222, 333] l2[1] = 4444444444444 print(l2) #['balabla', 4444444444444, 333] print(l) #['balabla', 4444444444444, 333]
代码中l与l2指向同一个列表,同一个内存地址
python中传递变量,传递参数其实传递的都是内存地址
# 格式化输出 print('成功的概率 %s%% ' % (97,)) # 成功的概率 97% x = 'wu' y = 18 res = f'name:{{{x}}} age {y}' # 输出{}符号 print(res) # name:{wu} age 18
格式化输出中如想输出有特殊含义的符号需要打两遍才能正常输出
print("华丽的分割线{:*<30}".format("我占几个格就少几个*号")) #{}替换字符左对齐,其他用* print("华丽的分割线{:*>30}".format("我占几个格就少几个*号")) #{}替换字符右对齐,其他用* print("华丽的分割线{:*^30}".format("我占几个格就少几个*号")) #{}替换字符居中,其他用* # 华丽的分割线我占几个格就少几个********************* # 华丽的分割线********************我占几个格就少几个* # 华丽的分割线**********我占几个格就少几个***********
格式化输出进阶用法: 指定{}替换后字符串的长度,不够的用指定字符填充
print("salary = {:.4f}".format(3000.1234567)) # :.4f含义为小数点后保留4位,四舍五入 salary = 3000.1235
格式化输出进阶用法: 指定格式化输出数字的保留位数
f'{print("aaaa")}'
f"进阶用法: 使用f""会运行{}内的程序
1:可变不可变类型
可变类型就是可以在内存地址不改变的情况下更改原数据的类型
不可变类型就是无法在内存地址不改变的情况下更改原数据的类型
字符串,数字类的类型,布尔类型,元组都属于不可变数据类型
字典,列表,集合属于可变数据类型
下面进行验证:
# int是不可变类型 x = 10 print(id(x)) x += 1 # 产生新值 print(id(x)) # id改变
# float是不可变类型 x = 10.5 print(id(x)) x += 1 # 产生新值 print(id(x)) # id改变
# str是不可变类型 x = "abc" print(id(x)) x = x.replace("a", "x") print(x) print(id(x)) # id改变
# list是可变类型 l=['aaa','bbb','ccc'] print(id(l)) l[0]='111' print(l) print(id(l)) # id未改变
# dict dic = {'k1': 111, 'k2': 222} print(id(dic)) dic['k1'] = 333 print(dic) print(id(dic)) # id未改变
2、条件
什么是条件?
条件是我们用来判断某事是否满足需求的标准,如我们的各种要求,
条件只有满足与不满足两种结果,即True以及False也就是布尔值
通过前面比较运算符的学习,我们能通过它的运算得到布尔值,
这就是条件的一种形式: 通过比较运算符的运算获得条件
布尔值的形式:
1.显式布尔值:True、False
我们通过比较运算得到的就是显式布尔值
还有一种方法就是直接输入的True和False
2.隐式布尔值:所有数据类型,其中0、None、空为假
我们使用if判断时输入的条件也可以是显示布尔值以外的值: 如数字,12或字典,列表
通过if我们可以发现隐式布尔值,其中0、None、空(如空列表[],空字典{})为假,其他值都为真
3:逻辑运算符
逻辑运算符有三种:not、 and 、 or
3.1 not
not用来取反条件
not True == False,not False == True
3.2 and
and:逻辑与,and用来链接左右两个条件,两个条件同时为True,最终结果才为真
print(True and 10 > 3 and 10 and 0) # 条件全为真,最终结果才为True print(10 > 3 and 10 and 0 and 1 > 3 and 4 == 4 and 3 != 3) # 条件有假就是假
3.3 or
or:逻辑或,or用来链接左右两个条件,两个条件但凡有一个为True,最终结果就为True,
两个条件都为False的情况下,最终结果才为False
print(3 > 2 or 0) # 条件全为假,最终结果才为False,否则为真 print(3 > 4 or False or 3 != 2 or 3 > 2 or True) # 条件有真就为真
3.4 优先级
当我们混合逻辑运算符使用时,不可避免会遇到优先级问题,先运算哪种
区分优先级:not > and > or
res = 3 > 4 and ((not 4 > 3) or 1 == 3) and ('x' == 'x' or 3 > 3) print(res) # False
4、成员运算符
成员运算符有 in 和 not in
用于判断in左边的元素是否是右边数据的子元素,输出结果为布尔值
简单的说就是判断左边的数据是否在右边的数据里面
print("wu" in "hello wuu") # 判断一个字符串是否存在于一个大字符串中 print("o" in "hello wuu") # 判断一个字符串是否存在于一个大字符串中 print(111 in [111, 222, 33]) # 判断元素是否存在于列表 print(111 in {"k1": 111, 'k2': 222}) # 对于字典,只能判断数据是否存在于字典的key中 print("k1" in {"k1": 111, 'k2': 222})
注意点: 对于字典,只能判断左边的数据是否存在于字典的key中
not in 与 in 用法相同,只是将输出结果的布尔值做取反
5、身份运算符
身份运算符有: is
用于判断is两边的数据的内存地址,即id是否相等,输出结果为布尔值
a = [2, 3] b = a print(a is b) # True
6、流程控制之if判断
if 语法可以用于在满足if条件时执行部分代码
if后跟条件,第二行填入条件满足时执行的代码
elif后跟条件,第二行填入条件满足时执行的代码,可使用多个elif
else第二行表示不满足条件时执行的代码
choose = input("请选择执行功能:(1,2)") if choose == "1": print("执行代码1") print("程序结束")
choose = input("请选择执行功能:(1,2)") if choose == "1": print("执行代码1") else: print("执行代码") print("程序结束")
score = input('请输入您的成绩:') # 输出成绩所属级别 score = int(score) if score >= 90: print('优秀') elif score >= 80: print('良好') elif score >= 60: print('及格') else: print('不及格') print('程序结束')