03.基本运算符
现在来了解一下python中的基本运算符
1.算术运算符
加减乘除自不必说,次方和整除该怎么搞呢?
# print(2 ** 3) # 8
# print(9 // 2) # 4
2.比较运算符
print(1 > 2) # False
print('hello' > 'world') # False
字符串也可以进行比较,不过比较的时候是按照对应的数字比较。 A~Z:65~90 a~z:97~122
3.增量赋值
x = 10
x = x + 1 # 等价于 x += 1
x = x - 10 # 等价于 x -= 10
x = x * 20 # 等价于 x *= 20
x = x / 10 # 等价于 x /= 10
增量赋值的设计初衷是为了简化代码。
4.链式赋值
若x = 'jason',现在想让变量y和z也变成'jason',该怎么做?
x = 'jason'
y = x
z = x
print(x)
print(y)
print(z)
这当然是正确答案,但是有另一种叫做链式赋值的方法可以大大简化代码:
x = y = z = 'jason'
print(x)
print(y)
print(z)
5.交叉赋值
现在来做一道题:已知m = 10,n = 20,若想要更改变量成m =20,n=10,该怎么做?
方式1 中间变量
tmp = m
m = n
n = tmp
print(m,n)
这当然是正确答案,但还有一种方法可以大大简化代码。
方式2 交叉赋值
m, n = n, m
print(m, n)
6.解压赋值
已知列表stu_name = ['jason', 'kevin', 'tony'],现在要将列表中的每一个数据都取出来分别赋值给3个变量,应该怎么做?
name1 = stu_name[0]
name2 = stu_name[1]
name3 = stu_name[2]
print(name1)
print(name2)
print(name3)
如果使用解压赋值,那么一行代码就能搞定了:
name1, name2, name3 = stu_name
print(name1, name2, name3)
需要注意的是:默认情况下左右两边要保持相同的个数。
也就是说列表里有几个元素,解压赋值时就要解压给几个变量,每个变量各接收一个元素。
那如果有一个列表里有一万个元素,而我只想从其中选取其中几位明确序数的元素,岂不是依然要写一万个变量再分别解压赋值?
不用这么麻烦,可以用*来打破位数限制。
l1 = [11,2,2,3,4,5,6,7,8,67,5,4,5,7,5,3,5,4]
a,b,*_,d = l1
print(a,b,d,_)
7.逻辑运算符
1.and与,链接的多个条件必须都满足结果才成立否则不成立。
eg:相亲对象身高165以上并且体重110以下并且长得漂亮并且家里有钱。
2.or或,链接的多个条件有一个满足即可。
eg:相亲对象身高165以上或者体重110以下或者长得漂亮或者家里有钱。
3.not非,对条件取反。
eg:说反话:“不写完作业不能玩游戏(实际意思是写完作业才能玩游戏)。”
光看定义好像还有些似懂非懂,接下来简单举几个栗子稍加分析就能说清其判定逻辑。
print(1 > 2 and 4 > 1)
print(False and 1 < 4 and 5 > 1 and 9 > 6 and 8 > 3 and 7 > 9)
and链接的多个条件,只要有条件一个是False时就不用往后看了,结果肯定是False。
print(1 > 2 or 4 > 1)
print(False or 1 < 4 or 5 > 1 or 9 > 6 or 8 > 3 or 7 > 9)
or链接的多个条件,只要有一个是True就不用往后看了,结果肯定是True。
print(not True)
如此一来是不是就能分清三者的用途了呢?
注意:上述三个关键字如果混合使用是存在优先级的,但是我们不需要考虑优先级。在书写的时候应该通过括号强制规定优先级关系。例如:先乘除后加减,打破顺序可以使用括号。
15-(3*4)=? # 3
8.成员运算符
in
成员运算符用于判断某个个体(局部)在不在某个群体(整体)内。
stu_list = ['joe', 'simon', 'frank', 'jerry']
guess_name = input('name>>>:')
print(guess_name in stu_list)
print(guess_name not in stu_list)
9.身份运算符
== # 判断是否相等
is # 判断是否是
这次要来一个复杂一点的栗子。不过举例子之前首先要知道如何查看变量值所在的内存地址。
id()
这行代码的运行结果是返回一串数字,用来表示内存地址。
接下来该说明正题了:查看两个变量值及其内存地址是否相等。
name1 = 'jason kevin tony'
name2 = 'jason kevin tony'
这需要用cmd来输入指令,pycharm有优化机制不太好展示。我们查看内存地址的代码查看一下:
id(name1)
id(name2)
可以看到两者的内存地址不一样。
接下来在看看另外的变量。
x = y = z = 'jason kevin tony'
id(x)
id(y)
id(z)
这三个变量的内存地址一样,但是和name1,name2的内存地址不一样
所以我们可以得出结论了:
print(name1 == name2) # 判断name1的变量值和name2的变量值是否相等(两个变量的值是否相等)
print(name1 is name2) # 判断name1是否是name2(两个变量绑定值的内存地址是否相等)
两个变量的值相等 那么内存地址不一定相等。
两个变量的内存地址相等 那么值肯定相等。