python05入门——基本运算符

一、算术运算符

+、-、*、/、**、%、//

print(10 + 3)  # 输出:13
print(10 - 3)	 # 输出:7
print(10 * 3)	 # 输出:30
print(10 / 3)  # 输出:3.3333333333333335
print(10 ** 3) # 次方 输出:1000
print(10 % 3)  # 取余 输出:1
print(10 // 3) # 地板除——保留整数 输出:3

二、比较运算符

=、==、>、<、>=、<=、!=

x=20
y=23
print(x==y) # ==是否相等,输出False
print(x!=y) # !=是否不相等,输出True

注意:数字类型之间可以比较大小,但不可以与字符串之间进行比较

x=22
b="123"
print(x > b)
# 报错:TypeError: '>' not supported between instances of 'int' and 'str'
# 字符串跟整型数值进行比较,类型不匹配导致报错

同类型之间可以进行比较,str按照ascii码表进行比较,列表按照索引进行比较

print("abc" > "az")  # 输出:False
print([1,2,3] < [1,3,4]) # 输出:True

三、赋值运算符

+、+=、-=、*=、/=、**

3.1 增量赋值

age=10
age +=2    # age =age+2
age -=2		 # age = age-2
age **=2   # age = age*age
age *=2    # age = age*2
age /=2    # age = age/2
print(age)

3.2 链式赋值

x=10
y=x
z=y

x=y=z=10
print(id(x))
print(id(y))
print(id(z))

3.3 交叉赋值

x=10
y=20

# 第一种
temp=x  # 把x再赋值一次给一个变量名
x=y
y=temp

# 第二种
x,y=y,x
print(x,y)

3.4 解压赋值

salary = [1.1,2.2,3.3,4.4,5.5]
mon1=salary[0]
mon2=salary[1]
mon3=salary[2]
mon4=salary[3]
mon5=salary[4]
mon1,mon2,mon3,mon4,mon5 =salary
print(mon1,mon2,mon3,mon4,mon5)
# 变量名多一个不行少一个也不行,必须与值一一对应
# mon1,mon2,mon3,mon4,mon5,mon6=salary
# mon1,mon2,mon3,mon4=salary
# 报错:ValueError: not enough values to unpack(expected 6, got 5)
#	期望有5个返回值,但函数有6返回值

取前三个值

*代表所有,_下划线相当于一个变量名,把不需要解压的全部赋值给下划线

mon1,mon2,mon3,*_=salary
print(mon1,mon2,mon3) # 输出:1.1 2.2 3.3
# 取下划线内所有的值
print(_)  # 输出:[4.4, 5.5]

取前2个和最后一个

mon1,mon2,*_,mon5=salary
print(mon1,mon2,mon5)  # 输出:1.1 2.2 5.5

解压字典取出的是key

dic={"k1":111,"k2":222,"k3":333}
x,y,z=dic
print(x,y,z)  # 输出:k1 k2 k3

x,*_=dic
print(x)   # 输出:k1 
# 通过key取value
print(dic[x])  # 输出:111
# 注意:字典取值用[]

四、逻辑运算符

一、优先级: not > and > or

not:代表把紧跟其后的条件结果取反

print(not 10 > 3)  # False

and:连接左右两个条件,左右两个条件必须同时成立,最终结果才为True

print(True and 1 > 0 and "aaa" == "aaa")  # True
print(True and 1 < 0 and "aaa" == "aaa")  # False

or:连接左右两个条件,左右两个条件但凡是有一个成立的,最终结果才为True

print(True or 1 < 0 or "aaa" == "aaa")  # True
print(False or 1 < 0 or "aaa" != "aaa")  # False
#      False   False           False

注意

not与紧跟其后的那个条件是不可分割的

如果条件语句全部由纯and、或纯or链接,按照从左到右的顺序依次计算既可

print(True and 10 > 3 and not 4 < 3 and 1 == 1)  # True
print(False or 10 < 3 or not 4 < 3 or 1 == 1)	   # True

三者混合用时,以and为中心把左右两个条件用括号括起来

# res = 3 > 4 and 4 > 3 or not 1 == 3 and 'x' == 'x' or 3 > 3

          false         or             true        or     false
res = (3 > 4 and 4 > 3) or (not 1 == 3 and 'x' == 'x') or 3 > 3
print(res)  # 输出:True

二、短路运算=》偷懒原则

1、所有数据类型的值都自带布尔值,所以值可以直接被当成条件使用

2、0、None、空对应的布尔值为False,其余为True

if 0:
    print('ok')
else:
    print('打印')


if None:
    print('yes')
else:
    print('NO')

    
if 3 and []:
    print('真')
else:
    print('假')
    
# 打印
# NO
# 假

3、and运算会返回当前计算位置的值

print(1 and 3)  # 3
# 数字3为True,算到3打印3

print(1 and 3 or 4)  # 3
# 数字3为True,算到3后条件成立则直接打印3
posted @ 2020-11-19 12:05  岳岳-  阅读(67)  评论(0编辑  收藏  举报