Python运算符(P0007)

Python 中的运算符是一种特殊的符号,主要用于实现数值之间的运算。根据操作数据数量的不同,运算符可以分为单目运算符、双目运算符;根据功能的不同,运算符可以分为算术运算符、赋值运算符、比较运算符、逻辑运算符、成员运算符和位运算符。当一个表达式中包含多个运算符时,Python 根据运算符的优先级确定操作数的运算顺序。

7.1 算术运算符

Python 中的算术运算符包括 +-*///%**。它们都是双目运算符,只要在终端输入由两个操作数和一个算术运算符组成的表达式,Python 解释器就会解析表达式,并打印计算结果。

运算符 说明 示例 结果
+ 加法运算 13.65 + 10 23.65
- 减法运算 13.65 - 10 3.65
* 乘法运算 9 * 2 18
/ 除法运算(保留小数) 9 / 2 4.5
// 整除(保留商的整数部分) 9 / 2 4
% 取余数(返回除法的余数) 9 % 2 1
** 幂运算/次方运算 2 ** 5 32

Python 中的算术运算符既支持相同类型的数值运算,也支持不同类型的数值混合运算。进行混合运算时 Python 会强制对数值的类型进行临时类型转换。临时类型转换遵循如下原则:

  1. 整型与浮点型进行混合运算时,将整型转换为浮点型;
  2. 其他类型与复数类型运算时,将其他类型转换为复数类型。

动手实验

# 相同数据类型进行运算
print(type(10 + 10), 10 + 10)
print(type(20 - 10), 20 - 10)
print(type(10 * 2), 10 * 2)
print(type(10 / 4), 10 / 4)
print(type(10 // 3), 10 // 3)
print(type(10 % 3), 10 % 3)
print(type(4 ** 2), 4 ** 2)

# 不同数据类型进行运算
print(type(10 + 10.5), 10 + 10.5)
print(type(10.5 - 10), 10.5 - 10)
print(type(10.5 / 2), 10.5 / 2)
print(type(10.5 * 2), 10.5 * 2)

7.2 赋值运算符

赋值运算符的作用是将一个表达式或对象赋值给左值。左值是指一个能位于赋值运算符左边的表达式,通常是一个可修改的变量,不能是一个常量。

动手实验

# 将字符串 hello 赋值给 str1 变量
str1 = 'hello'
# 将整数 100 赋值给 num1
num1 = 100
print(str1)
print(num1)

Python 中的算术运算符可以与赋值运算符组成复合赋值运算符,复合赋值运算符同时具备运算和赋值两项功能。

假设:x=5y=2

运算符 说明 示例 等价形式 结果
= 最基本的赋值运算 x = y x = y x=2
+= 复合加赋值 x += y x = x + y x=7
-= 复合减赋值 x -= y x = x - y x=3
*= 复合乘赋值 x *= y x = x * y x=10
/= 复合除赋值 x /= y x = x / y x=2.5
%= 复合取余数赋值 x %= y x = x % y x=1
**= 复合幂赋值 x **= y x = x ** y x=25
//= 复合取整数赋值 x //= y x = x // y x=2

动手实验

# 链式赋值
num1 = num2 = num3 = num4 = num5 = num6 = num7 = 10

# 复合赋值运算
print(num1 += 10)   # 加法运算
print(num2 -= 10)   # 减法运算
print(num3 *= 2)    # 乘法运算
print(num4 /= 2)    # 除法运算
print(num5 //= 3)   # 短除运算
print(num6 %= 3)    # 求余运算
print(num7 **= 2)   # 求幂运算

7.3 比较运算符

比较运算符也叫关系运算符,用于比较两个数值以判断它们之间的关系。Python 中的比较运算符包括 ==!=><>=<=,它们通过用于布尔测试,测试的结果只能是 TrueFalse

运算符 说明
> 大于,如果左边的值大于右边的值,则返回True,否则返回False
< 小于,如果左边的值小于右边的值,则返回True,否则返回False
== 等于,如果左右两边的值相等,则返回True,否则返回False
>= 大于等于,如果如果左边的值大于或等于右边的值,则返回True,否则返回False
<= 小于等于,如果左边的值小于等于右边的值,则返回True,否则返回False
!= 不等于,如果左边的值不等于右边的值,则返回True,否则返回False

动手实验

print(1 == 0)       # 判断两个整数相等
print(1 != 0)       # 判断两个整数不相等
print(2 > 1)        # 判断第一个整数大于第二个整数
print(2 >= 1)       # 判断第一个整数大于等于第二个整数

7.4 逻辑运算符

逻辑运算符可以把多个条件按照逻辑进行连接,变成更复杂的条件。Python 中分别使用 andornot 这 3 个关键字作为逻辑运算符,其中 andor 为双目运算符,not 为单目运算符。

运算符 说明 格式 作用
and 逻辑与运算,等价于数学中的“且” x and y 当x和y两个表达式都为真时,x and y的结果才为真,否则为假
or 逻辑或运算,等价于数学中的“或” x or y 当x和y两个表达式都为假时,x or y的结果才为假,否则为真
not 逻辑非运算,等价于数学中的“非” not x 如果x为真,那么not x的结果为假;如果x为假,那么not x的结果为真。相当于对x取反

动手实验

print(1 == 0 or 1 == 1)
print(1 != 0 and 1 == 2)
print(not 2 > 1)

7.5 成员运算符

成员运算符 innot in 用于测试给定数据是否存在于序列(如列表、字符串)中

  • in:如果指定元素在序列中返回 True,否则返回 False
  • not in:如果指定元素不在序列中返回 True,否则返回 False

示例

str1 = 'hello'  # 定义一个字符串
print('o' in str1)  # 判断字符串“o”是否在字符串变量 str1 中
print('l' not in str1)      # 判断字符串“l”是否在字符串变量 str1 中

7.6 运算符优先级

Python 支持使用多个不同的运算符连接简单表达式实现相对复杂的功能,为了避免含有多个运算符的表达式出现歧义,Python 为每种运算符都设定了优先级。如果表达式中的运算符优先级相同,按从左向右的顺序执行;如果表达式中包含括号,那么解释器会优先执行小括号中的表达式。

7.7 运算符运用训练

  1. 请定义三个变量num1、num2和result1,使用输入函数分别向num1和num2输入整型数据10和6,分别运用所有算术运算符让num1与num2进行加、减、乘、除、取模、取整除、幂等。最后将计算的结果保存到result1中并输出结果。

输出结果:

请输入第一个数字:10
请输入第二个数字:6
10 + 6 = 16
10 - 6 = 4
10 * 6 = 60
10 / 6 = 1.6666666666666667
10 % 6 = 4
10 // 6 = 1
10 ** 6 = 1000000

  1. 请定义三个变量myChar、myNum和result2,使用输入函数分别向myChar和myNum输入Z和90,需要将Z转换为对应的整型数字,然后分别运用比较运算符让myChar与myNum进行等于、不等于、大于、小于、大于等于、小于等于进行关系比较。最后将计算的结果保存到result2中并输出结果。

输出结果:

请输入一个字符:Z
请输入一个数字:90
Z == 90 为: True
Z != 90 为: False
Z > 90 为: False
Z < 90 为: False
Z >= 90 为: True
Z <= 90 为: True

  1. 请定义两个变量n和m,使用输入函数分别向n和m输入8和5,然后分别运用复合赋值运算符让n与m进行加等于、减等于、乘等于、除等于、取模等于、取整除等于、幂等于进行运算并赋值。最后将计算的结果保存到n中并输出结果。注意:n的值会随着计算方式的不同发生改变。

输出结果:

请输入第一个数字15
请输入第二个数字7
n结果为 22
n结果为 15
n结果为 105
n结果为 15.0
n结果为 1.0
n结果为 0.0
n结果为 0.0

  1. 请定义四个变量i、j、k和result3,使用输入函数分别向i、j和k输入13.4、11.2和10.9,然后使用比较运算符以及逻辑运算符进行配合进行i > j 逻辑与 i < k、i > j 逻辑或 i < k的运算,而逻辑非运算符对i > j进行运算。最后将计算的结果保存到result3中并输出结果。

输出结果:

请输入第一个数字:13.4
请输入第二个数字:11.2
请输入第三个数字:10.9
结果为:False
结果为:True
结果为:False

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容