【无为则无心&Python基础】— 17.Python运算符(一)

变量的赋值与计算都离不开表达式,表达式的运算依赖于变量、常量和运算符。

那么我们先说一说什么是表达式。

(一)表达式

  • Java表达式是变量、常量、运算符、方法调用的序列,它执行指定的计算并返回某个确定的值。

  • 表达式不会对程序产生实质性的影响, 一般只是返回一个结果。

  • 在Python中,如果在交互模式中只输入一个表达式,解释器会自动将表达式的结果输出。如果是在Python文件中只输入表达式,运行文件都不会有任何输出的。

    • 交互模式中只写表达式。


    • Python文件中只写表达式的语句会没有任何输出。


(二)运算符

运算符用于执行程序代码运算。

1、运算符的分类

Python的常用运算符分为5类:

  • 算数运算符
  • 赋值运算符
  • 复合赋值运算符
  • 比较运算符
  • 逻辑运算符

2、算数运算符

Python中算数运算符如下:

运算符 描述 实例
+ 1 + 1 输出结果为 2
- 1-1 输出结果为 0
* 2 * 2 输出结果为 4
/ 10 / 2 输出结果为 5
// 整除 9 // 4 输出结果为2
% 取余 9 % 4 输出结果为 1,也叫取模
** 指数 2 ** 4 输出结果为 16,即 2 * 2 * 2 * 2
() 小括号 小括号用来提高运算优先级,即 (1 + 2) * 3 输出结果为 9

注意:

  • 混合运算优先级顺序:()高于 ** 高于 * / // % 高于 + -

示例:

# 1、运算符:加、减、乘
# 所有运算中,只要有浮点数参加的运算,一定会得到一个浮点数
a = 10.5 + 5
print(f'a = {a}') # a = 15.5

# 2、运算符:除
# 除法不管得到什么数,结果都是小数(浮点型),//(整除不会)
b = 4 / 2
print(f'b = {b}') # b = 2.0

# 3、运算符://(整除),只会保留整数位
# 运算结果只会得到一个整型,结果只保留整数部分。
c = 4 // 2
print(f'c = {c}') # c = 2
# 如果除数或被除数是小数,则返回一个浮点数
c = 4.567 // 2
print(f'c = {c}') # c = 2.0


# 4、用变量d的值减去2,然后再赋值给d
d = 10
d = d - 2
print(f'd = {d}') # d = 8

"""
 5、如果将字符串和数字相乘,
    则会对字符串进行复制操作,
    将字符串重复指定次数
 6、如果对字符进行加法运算,
    就是字符串的拼接
"""
e = 'hello' + ' ' + 'world' 
print(e) # hello world

f = ('hello' + ' ') * 2
print(f) # hello hello 

# 7、除0异常
g = 5 / 0
# 报出异常:ZeroDivisionError: division by zero

3、赋值运算符

运算符 描述 实例
= 赋值 =右侧的结果赋值给等号左侧的变量
  • 单个变量赋值
num = 1
print(num)
  • 多个变量赋值
num1, float1, str1 = 10, 0.5, 'hello world'
print(f"num1 = {num1}")
print(f"float1 = {float1}")
print(f"str1 = {str1}")

# 输出结果如下:
# num1 = 10
# float1 = 0.5
# str1 = hello world
  • 多变量赋相同值
a = b = 10
print(f"a = {a}")
print(f"b = {b}")

# 输出结果如下:
# a = 10
# b = 10

4、复合赋值运算符

当解释器执行到复合赋值运算符时,先计算算数运算符的表达式,再将算数运算符执行后的结果赋值到等号左边的变量。

复合赋值运算符如下:

运算符 描述 实例
+= 加法赋值运算符 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

示例:

# 输出101  a = a + 1,最终a = 100 + 1
a = 100
a += 1
print(a) # 101

# 输出6  b = b * 3,最终b = 2 * 3
b = 2
b *= 3
print(b)

# 输出13, 先算运算符右侧1 + 2 = 3, c += 3 , 推导出c = 10 + 3
c = 10
c += 1 + 2
print(c)
# 注意: 先算复合赋值运算符右面的表达式,再算复合赋值运算.
d = 100
d *= 3 + 4 
print(d) # 700
# 3 + 4 = 7 * 100 = 700

在对浮点数做算术运算时,结果也会返回一个浮点数。

5、比较运算符

比较运算符也叫关系运算符,来比较两个值之间的关系,总会返回一个布尔值, 如果关系成立,返回True,否则返回False,通常用来判断。

比较运算符如下:

运算符 描述 实例
== 判断相等。如果两个操作数的结果相等,则条件结果为真(True),否则条件结果为假(False) 如a=3,b=3,则(a == b) 为 True
!= 不等于 。如果两个操作数的结果不相等,则条件为真(True),否则条件结果为假(False) 如a=3,b=3,则(a == b) 为 True如a=1,b=3,则(a != b) 为 True
> 运算符左侧操作数结果是否大于右侧操作数结果,如果大于,则条件为真,否则为假 如a=7,b=3,则(a > b) 为 True
< 运算符左侧操作数结果是否小于右侧操作数结果,如果小于,则条件为真,否则为假 如a=7,b=3,则(a < b) 为 False
>= 运算符左侧操作数结果是否大于等于右侧操作数结果,如果大于,则条件为真,否则为假 如a=7,b=3,则(a < b) 为 False如a=3,b=3,则(a >= b) 为 True
<= 运算符左侧操作数结果是否小于等于右侧操作数结果,如果小于,则条件为真,否则为假 如a=3,b=3,则(a <= b) 为 True

示例:

# 1、关系运算符基本使用
a = 7
b = 5
print(a == b)  # False
print(a != b)  # True
print(a < b)   # False
print(a > b)   # True
print(a <= b)  # False
print(a >= b)  # True

# 2、数字可以可布尔值比较,True=1,False=0
print(1 == True) # True
print(2 < True) # False
print(-1 < False) # True

# 3、数字和字符串之间不能进行比较
print(2 > '1')
# TypeError: '>' not supported between instances of 'int' and 'str'

"""
# 4、字符串和字符串之间可以进行比较
    在Python中可以对两个字符串进行大于(等于)或小于(等于)的运算时,
    实际上比较的是字符串对应的Unicode编码。
    比较两个字符串的Unicode编码时,是逐位比较的。
   
    利用该特性可以对字符串按照字母顺序进行排序,但是对于中文来说意义不是特别大。
    
    注意:如果不希望比较两个字符串的Unicode编码,
        则需要通过数据类型转换
        将字符串转换为数值型然后再比较。
"""
#  a(0061) 和 b(0062) 比较
print('a' > 'b') # False

# 比较两个字符串的Unicode编码时,是逐位比较的。
# 也就是第一位和第一位比,第二位和第二位比,
# 只有在第一位没有比出结果的时候(相等),才比第二位。
print('ab' > 'bc') # 实际上就是a和b比较,结果False
print('ab' > 'b') # 同上一句结果
print('af' > 'ac') # True
# 没有肯定小于有字符
print('a' > 'ac') # False

# 将字符串转换成数值型在比较
print(int('5') > int('7')) # False
print(float('5.115') > float('4.64')) # True


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