运算符(算术运算符,赋值运算符,比较运算符,逻辑运算符)
一、算术运算符
+
1>求和
2>正号
3>连接两个字符串
"a" + "b" = "ab"
# ---------------------- "+"的用途 ------------------- a = 10 b = +20 c = a + b print("%d + %d = %d"%(a,b,c)) # 10 + 20 = 30 str1 = "Hello" str2 = "World" str3 = str1 + str2 print(str3) # HelloWorld
-
1>求差
2>负号
# ---------------------- "-"的用途 ------------------- a = 10 b = -20 c = a - b print("c = %d"%c) # c = 30 负负得正
*
1>求乘积
2>重复
# ---------------------- "*"的用途 ------------------- a = 5 b = 6 c = a * b print("c = %d"%c) # c = 30 # 重复将Hello打印3次 print("Hello"*3) # HelloHelloHello
/
1>求商
//
1>取整除
# ---------------------- "/"与"//"的用途 ------------------- print(5/2) # 2.5 print(5//2) # 2 print(5//2.0) # 2.0
**
1>求几次幂
2的3次幂
python写法:2 ** 3
# ---------------------- "**"的用途 ------------------- print(2 ** 3) # 8 print(2 ** -1) # 0.5
%
1>取余数
# ---------------------- "%"的用途 ------------------- print(100%3) # 1
二、赋值运算符
1.单独的赋值
=
PI = 3.14
PI = 3.14 print("PI = %g"%PI) # PI = 3.14 #只能在python里面使用连等 a = 10 b = 20 c = a = b print("a = %d\tb= %d\tc = %d"%(a,b,c)) # a = 20 b= 20 c = 20 # 注意,此类赋值操作,变量a和b是同时进行赋值的 a,b = 10,20 a,b = a+1,a print("a = %d\tb= %d"%(a,b)) # a = 11 b= 10
2.结合的赋值(算术运算符结合)
+=
# ---------------------- "+="的用途 ------------------- a,b = 10,20 a += b # 等价于 a = a + b print("a = %d\tb= %d"%(a,b)) # a = 30 b= 20
-=
# ---------------------- "-="的用途 ------------------- a,b = 10,20 a -= b # 等价于 a = a - b print("a = %d\tb= %d"%(a,b)) # a = -10 b= 20
*=
# ---------------------- "*="的用途 ------------------- a,b = 10,20 a *= b print("a = %d\tb= %d"%(a,b)) # a = 200 b= 20
/=
//=
# ---------------------- "/="与"//="的用途 ------------------- a = 100 a /= 5 print("a = %g"%a) # a = 20
a //= 5
print("a = %g"%a)
# a = 4
**=
# ---------------------- "**="的用途 ------------------- a = 2 a **= 3 print("a = %d"%a) # a = 8
%=
# ---------------------- "%="的用途 ------------------- a = 10 a %= 3 print("a = %d"%a) # a = 1
三、比较运算符
>
<
>=
<=
==
!=
比较结果:
bool值
True /Yes 非0
False /No 0
result = 10 > 9 print(result) # True print("result的数据类型:",type(result)) # result的数据类型: <class 'bool'>
四、逻辑运算符
and
or
not
import random #猜筛子大小游戏,得到[1,6]范围内的随机数,包括1,6 rand_num = random.randint(1,6) if 1 <= rand_num and rand_num <= 3: print("小") if 4 <= rand_num and rand_num <= 6: print("大")
案例1:
输入用户名跟密码,输入都正确的话,给出登陆成功的提示
# 用户已经注册好的用户名和密码 acc = "2020110157" pwd = "tyy19950225" account = input("请输入用户名:") password = input("请输入密码:") # 判断,是否符合成功登陆的条件 if(account == acc and password == pwd): print("登陆成功!") if(account != acc or password != pwd): print("用户名或者密码错误...")
案例2:
从键盘录入两个整型数,分别打印两个值,将两个数值完成交换,打印交换之后的值
a = int(input("请输入第一个整型数:")) b = int(input("请输入第二个整型数:")) print("交换前:a = %d\tb = %d"%(a,b)) # 方案一 temp = a a = b b = temp print("交换后:a = %d\tb = %d"%(a,b)) # 方案二 a = a + b b = a - b a = a - b print("交换后:a = %d\tb = %d"%(a,b)) # 方案三 a,b = b,a # python特有的交换方法,同时执行赋值操作 print("交换后:a = %d\tb = %d"%(a,b))
拓展:
1.同一运算符(is 与 ==)
1> is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同。
即is比较两个条件:
1)内容相同。
2)内存中地址相同
2> == 是比较两个对象的内容是否相等,即两个对象的“值“”是否相等,不管两者在内存中的引用地址是否一样
a = [1,2,3] b = [1,2,3] print("a的id:{0}\ta的类型:{1}".format(id(a),type(a))) # a的id:61465504 a的类型:<class 'list'> print("b的id:{0}\tb的类型:{1}".format(id(b),type(b))) # b的id:60774440 b的类型:<class 'list'> print("a is b:{}".format(a is b)) # a is b:False print("a == b:{}".format(a == b)) # a == b:True
2.使用is注意python对于小整数使用对象池存储问题
python对小整数在内存中直接创建了一份,不会回收,所有创建的小整数变量直接从对象池中引用他即可。
但是注意Python仅仅对比较小的整数对象进行缓存(范围为范围[-5, 256])缓存起来,在这个范围内的小整数,任意相同的整数都是同一个对象,而并非是所有整数对象。
(pycharm对整数池进行了优化,因此也是同一个对象)
# pycharm对于小整数使用对象池存储问题,进行了优化 a1 = 100 b1 = 100 print("a1的id:{0}\ta1的类型:{1}".format(id(a1),type(a1))) print("b1的id:{0}\tb1的类型:{1}".format(id(b1),type(b1))) print("a1 is b1:{}".format(a1 is b1)) # True a2 = 10000 b2 = 10000 print("a2的id:{0}\ta2的类型:{1}".format(id(a2),type(a2))) print("b2的id:{0}\tb2的类型:{1}".format(id(b2),type(b2))) print("a2 is b2:{}".format(a2 is b2)) # True 使用pycharm同样是True,因为做了优化