Python运算符

1. 什么是运算符

  • 举个简单的例子 3 + 3 = 6 。 其中,3 被称为操作数,”+“ 称为运算符

    2. Python有哪些类型的运算符?

    算术运算符、赋值运算符比较(关系)运算符、逻辑运算符、位运算符、成员运算符、身份运算符】
    看似很多,实际工作中常用的不多,不用慌

    2-1. 算数运算

    所谓算数运算,就是我们从小学的 ‘加减乘除’。不过不再是我们自己算,而是让计算机去算。
    举个栗子:例如创建变量a = 10, b = 20, c = ‘Hello’;Python中是如何进行计算的呢?
运算符 名称 描述 实例
+ 两个对象相加; a + b 输出结果 30
- 得到负数;或是两个变量相减 a - b 输出结果 -10
* 两个数相乘;或是返回一个被重复若干次的字符串 a b 输出结果 200; c2 输出结果为“HelloHello”
/ 两个数字相除 b / a 输出结果 2
// 取整除 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
% 取余 返回除法的余数 b % a 输出结果 0
** 指数 a**b 为10的20次方, a**b 输出结果 100000000000000000000

有点懵?直接上代码,一目了然
需求:商品单价5元,买了3件,领了一个2元的优惠劵,有商城8折会员,问实付多少钱

  1. unit_price = 5 # 单价
  2. amount = 3 # 数量
  3. coupon = 2 # 优惠劵
  4. value=0
  5. value = (unit_price*amount - coupon) * 0.8
  6. print(value)
  7. # 执行结果10.4

2-2. 赋值运算符

什么是赋值?
=,就表示赋值。例如:
a = 10,就是把10给到a;
b = a, 就是把a的值给到b;简而言之,就是=右边的值,给到等号左边的变量名

运算符 描述 实例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c = a 等效于 c = c a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c = a 等效于 c = c a
//= 取整除赋值运算符 c //= a 等效于 c = c // a

以最常用的‘+=’为例

  1. a = 100
  2. b = 200
  3. b += a # 这句等价于 b = b+a,也就是说,b = 200+100, 结果为b=300;
  4. print(b)
  5. # 执行结果为 300
  6. 实际运用,常和循环相结合,做计算。后面会详细讲到

拓展:
海象运算符,表达式为” := “,可在表达式内部为变量赋值。是Python3.8 版本新增运算符
目前公司在Python版本多数在3.6及以下。暂时还用不到。可以研究研究,很pythonic。节省了不少代码。

2-3. 比较运算符

简单理解,就是小学学的比较大小;比较两个变量的值,注意是“值”
例如:假设 a = 10, b = 20

运算符 描述 实例
== 等于(比较对象值是否相等) (a == b) 返回 False。
!= 不等于(比较两个对象的值是否不相等) (a != b) 返回 True。
> 大于(返回x是否大于y) (a > b) 返回 False。
< 小于 - 返回x是否小于y。 (a < b) 返回 True。
>= 大于等于 - 返回x是否大于等于y。 (a >= b) 返回 False。
<= 小于等于 - 返回x是否小于等于y。 (a <= b) 返回 True。
  • 所有比较运算符返回True表示真,返回False表示假。
  • 常常和判断语句(if)相结合使用,后面会详细了解

2-4. 成员运算符与身份运算符

  • 成员运算符,顾名思义就是,一个变量是否是指定变量的成员。 | 运算符 | 描述 | 实例 | | :—- | :—- | :—- | | in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 | | not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |

例如,判断一下宋江是不是梁山好汉;潘金莲是不是梁山好汉

  1. 梁山好汉 = ['宋江', '林冲', '卢俊义', '关胜', '扈三娘']
  2. print('宋江' in 梁山好汉) # True, 宋江在梁山好汉这个变量中
  3. print('潘金莲' in 梁山好汉) # Flase, 潘金莲不在梁山好汉这个变量中
  • 身份运算符,顾名思义,就是是不是同一个内存地址 | 算符 | 描述 | 实例 | | :—- | :—- | :—- | | is | is 是判断两个变量名是不是引用自一个对象,或者说两个变量内存地址是不是一样 | x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False | | is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。 |

  • id() 函数用于获取对象内存地址。

屏幕快照 2020-03-10 下午9.09.38.png
屏幕快照 2020-03-10 下午9.03.13.png
经典面试题:聊聊 is 和 == 的区别

2-5. 逻辑运算符

运算符 逻辑表达式 描述 实例
and x and y 布尔”与”:如果 x 为 False,x and y 返回 False,否则它返回 y 的值。 True and False, 返回 False。
or x or y 布尔”或”:如果 x 是 True,它返回 True,否则它返回 y 的值。 False or True, 返回 True。
not not x 布尔”非”:如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not True 返回 False, not False 返回 True


Python类型转换

其实前面不知不觉中已经用过,上一篇输入时,input()函数输入的是字符串,我们需要的是数字类型,是这样写的:age = int(input())
以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

函数 描述
int(x [,base]) 将x转换为一个整数
float(x) 将x转换到一个浮点数
complex(real [,imag]) 创建一个复数
str(x) 将对象 x 转换为字符串
repr(x) 将对象 x 转换为表达式字符串
eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s) 将序列 s 转换为一个元组
list(s) 将序列 s 转换为一个列表
set(s) 转换为可变集合
dict(d) 创建一个字典。d 必须是一个 (key, value)元组序列。
frozenset(s) 转换为不可变集合
chr(x) 将一个整数转换为一个字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串

不用记,了解即可。int(),float(),str()