可变类型逻辑运算符if条件

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('程序结束')

 

原文地址:https://www.cnblogs.com/achai222/p/12430591.html