首页 > 技术文章 > 运算符(算术运算符,赋值运算符,比较运算符,逻辑运算符)

REN-Murphy 2020-10-23 10:41 原文

一、算术运算符

+
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,因为做了优化

推荐阅读