程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python 运算符大揭秘(python运算符代码)

hfteth 2025-04-07 14:33:00 技术文章 14 ℃



对话实录

小白:(崩溃)我写了1 + '1',为什么 Python 会报错?

专家:(推眼镜)Python 是强类型语言,数字和字符串不能直接相加!想拼接?先转类型!


算术运算符三连击

1. 基础运算

#  标准操作
print(5 + 3) # → 8 加法运算,将两个数字相加

print(5 - 3) # → 2 减法运算,计算两个数字的差值

print(5 * 3) # → 15 乘法运算,得到两个数字的乘积

print(5 / 3) # → 1.666... 除法运算,结果为浮点数,即使两个操作数都是整数

print(5 // 3) # → 1(整除) 整除运算,只保留商的整数部分

print(5 % 3) # → 2(取余) 取余运算,得到除法运算后的余数

print(5 ** 3) # → 125(幂运算) 幂运算,计算5的3次方

专家提醒:/总是返回float类型,这意味着无论操作数是整数还是浮点数,结果都会以浮点数形式呈现;而//返回int类型,其结果是整除后的整数部分。

2. 类型转换

# 字符串转数字
num = int("42") # 将字符串"42"转换为整数42,前提是字符串内容为合法数字格式

price = float("3.14") # 将字符串"3.14"转换为浮点数3.14

# 数字转字符串
text = str(42) # 将整数42转换为字符串"42"

# 拼接字符串
result = "答案是:" + str(42) # → "答案是:42" 通过将数字转换为字符串,实现字符串与数字的拼接
result = f"答案是:{42}" # → "答案是:42"(推荐) 使用f-string格式化字符串,更简洁直观

比较运算符三连击

1. 基础比较

print(5 > 3)    # → True  判断5是否大于3,结果为真
print(5 < 3 false 53 print5='= 3)' false 53 print5 true 53 print5>= 3) # → True 判断5是否大于或等于3,结果为真

print(5 <= 3) # → False 判断5是否小于或等于3,结果为假

2. 链式比较

# 传统写法
if 1 < x and x < 10:
 print("x在1到10之间") 传统方式通过逻辑与运算符`and`,分两步判断x是否在1到10之间

# 链式写法
if 1 < x < 10:
 print("x在1到10之间") 链式比较更加简洁直观,直接表达x大于1且小于10的逻辑,在Python中这种写法是合法且高效的

3. 对象比较

a = [1,2,3]  
b = [1,2,3]

print(a == b) # → True(值相等) 判断a和b的值是否相等,因为它们包含相同的元素,所以结果为真
print(a is b) # → False(不是同一对象) 判断a和b是否是同一对象,虽然值相同,但它们在内存中是不同的对象,所以结果为假

逻辑运算符三连击

1. 基础逻辑

print(True and False)  # → False  逻辑与运算,只有当两个操作数都为真时,结果才为真
print(True or False) # → True 逻辑或运算,只要有一个操作数为真,结果就为真
print(not True) # → False 逻辑非运算,将操作数的布尔值取反

2. 短路求值

def expensive_call():  
	print("我被调用了!")
 	return True

# 短路求值
False and expensive_call() # → False(不调用函数) 在逻辑与运算中,如果第一个操作数为假,由于整个表达式结果必然为假,所以不会执行第二个操作数(即不会调用expensive_call函数)

True or expensive_call() # → True(不调用函数) 在逻辑或运算中,如果第一个操作数为真,由于整个表达式结果必然为真,所以不会执行第二个操作数(即不会调用expensive_call函数)


3. 三元运算符

# 传统写法
if x > 0:
 result = "正数"
else:
 result = "非正数" 传统的if-else语句,根据x的值判断并赋值

# 三元写法
result = "正数" if x > 0 else "非正数" # 三元运算符用更简洁的方式实现了相同的逻辑,先判断条件,条件为真时返回冒号前的值,为假时返回冒号后的值

逻辑运算符像交通灯,控制程序流程。and、or、not等逻辑运算符根据不同的条件组合,决定程序下一步的走向,如同交通灯通过不同颜色控制车辆的通行与停止。

闭坑指南(血泪总结)

类型错误:

print(1 + "1")  #  TypeError  在Python中,数字和字符串属于不同的数据类型,不能直接进行加法运算,会引发类型错误
print(str(1) + "1") # → "11" 通过将数字1转换为字符串,再进行字符串拼接,可得到正确结果

浮点精度:

print(0.1 + 0.2 == 0.3)  # → False  由于计算机对浮点数的存储和运算采用二进制表示,会存在精度问题,所以0.1 + 0.2的结果在计算机中并不精确等于0.3
print(abs((0.1 + 0.2) - 0.3) < 1e-9) # → True 通过计算差值的绝对值并与一个极小值(如1e-9)比较,可以更准确地判断两个浮点数是否近似相等

链式比较陷阱:

print(1 < 2 < 3)  # → True  链式比较正确表达了1小于2且2小于3的逻辑,结果为真
print(1 < (2 < 3)) # → False(括号改变语义) 加上括号后,先计算2 < 3,结果为True,再计算1 < True,在Python中True被当作整数1,所以1 < True为假

专家终极总结

  1. /返回float,//返回int,在进行除法运算时要注意结果的数据类型。
  1. 链式比较让代码更简洁,能直观表达复杂的比较逻辑,提高代码可读性。
  1. 短路求值提升性能,在逻辑运算中避免不必要的计算,尤其是在涉及函数调用等开销较大的操作时。
  1. 三元运算符替代简单if-else,用更紧凑的语法实现条件赋值,使代码更加简洁明了。

小白:懂了!我现在就用运算符重构代码!

专家:(竖大拇指)下次我们讲【条件判断】,关注不迷路!

Tags:

最近发表
标签列表