CC++ & Algorithm

Python绝对值函数 abs

中等4
语言版本:C++Python
概述:绝对值函数abs可以把负数变成正数,就像温度计上的零下温度变回零上温度一样简单。

Python中的绝对值函数abs:让负数变成正数的魔法棒

同学们,你们有没有玩过温度计?温度计上会有零下几度,比如零下5度(-5℃)。当我们想知道实际有多冷时,往往只关心数字大小,不看正负号,比如零下5度也是“5度冷”。在Python中,有一个叫 abs 的函数,它能把任何负数变成正数,这就是“绝对值”。

绝对值表示一个数离零有多远,只看距离,不看方向。想象你站在数轴上的0点,往左走3步到-3,往右走3步到3,离0点的距离都是3步。所以 -3 的绝对值是 35 的绝对值还是 5abs 就像一把“直尺”,只量距离,不管方向。

一、abs函数的基本用法

abs 函数只需要一个参数(要计算的数),返回值就是它的绝对值。它总是返回非负数(0或正数)。来看几个最简单的例子:

# 计算绝对值
print(abs(-10))   # 输出 10
print(abs(5))     # 输出 5
print(abs(0))     # 输出 0
print(abs(-3.14)) # 输出 3.14

你可以对整数、小数(浮点数)甚至更复杂的数字类型使用 abs。如果输入的是整数,返回整数;输入的是小数,返回小数(但保证是非负)。

二、生活中的绝对值例子

1. 零花钱的“欠款”问题

小明存了10元钱,后来花掉了,存款变成-10元(欠钱)。如果只看他“欠了多少”,绝对值就是10元。abs(-10) 的结果就是10。同样,小红的存款是-5元,abs(-5) 就是5元。谁的欠款更多?比较绝对值就行:10 > 5,所以小明欠得更多。

# 比较两个人欠款的多少
ming_money = -10    # 小明的存款(负数表示欠款)
hong_money = -5     # 小红的存款
ming_debt = abs(ming_money)   # 小明欠款绝对值
hong_debt = abs(hong_money)   # 小红欠款绝对值
print("小明欠了", ming_debt, "元")   # 输出 10
print("小红欠了", hong_debt, "元")   # 输出 5
if ming_debt > hong_debt:
    print("小明欠得更多")
else:
    print("小红欠得更多")

2. 考试分数的差距

在一次数学考试中,小明得了85分,小红得了92分。他们相差多少分?用 85 - 92 = -7,但差距不可能是负数,所以用绝对值:abs(85 - 92) 得到7分。如果想知道任意两个人的分数差,直接用 abs(score1 - score2) 最方便。

# 计算两个同学的分差
score_xiaoming = 85   # 小明的分数
score_xiaohong = 92   # 小红的分数
difference = abs(score_xiaoming - score_xiaohong)  # 分差的绝对值
print("小明和小红的分差是:", difference)  # 输出 7

3. 温度变化

今天早上温度是-3℃,中午升到了8℃。温度变化了多少度?变化量也是用绝对值:abs(8 - (-3)) = abs(11) = 11度。注意:abs(8 - (-3)) 相当于 abs(8 + 3) = 11。绝对值的魔力在于,无论你从-3升到8,还是从8降到-3,变化量都是11度。

# 计算温度变化
morning_temp = -3   # 早上温度
noon_temp = 8       # 中午温度
change = abs(noon_temp - morning_temp)  # 温度变化绝对值
print("温度变化了", change, "度")  # 输出 11

4. 游戏中的得分差距

在赛车游戏中,两位玩家的得分分别是 player1 = 120player2 = 95。要计算他们相差多少分,用 abs(player1 - player2) 得到25分。如果之后分数变了,再用同样的方法计算,非常方便。

# 计算玩家得分差距
player1_score = 120   # 玩家1得分
player2_score = 95    # 玩家2得分
gap = abs(player1_score - player2_score)
print("两位玩家的得分差距是:", gap)  # 输出 25

三、新手常犯的错误

错误1:忘记 abs 只能有一个参数

有些同学想一次求多个数的绝对值,写成 abs(-5, -3),这会导致错误。abs 只接受一个参数。如果需要求多个数的绝对值,可以分别调用,或者用循环。

# 错误写法
# print(abs(-5, -3))  # 会报错!

# 正确写法
print(abs(-5))   # 5
print(abs(-3))   # 3

错误2:以为 abs 会改变原变量的值

abs 不会改变原来的变量,它只是返回一个新的值。如果你想让变量变成它的绝对值,需要重新赋值。

# 错误理解
score = -10
abs(score)      # 这个操作不会改变 score
print(score)    # 仍然输出 -10

# 正确做法:重新赋值
score = abs(score)
print(score)    # 输出 10

错误3:对字符串使用 abs

abs 只能用于数字(整数、小数),不能用于字符串。如果写成 abs("hello"),Python会报错。

错误4:混淆 absmath.fabs

math.fabsmath 模块里的函数,专门处理浮点数的绝对值,返回结果一定是浮点数。而 abs 是Python内置函数,更通用,返回类型与输入相同。对于GESP二级,掌握 abs 就够了。

四、完整可运行示例:温度比较程序

下面是一个完整的程序,用户输入两个温度值(可能为负数),程序输出它们的差值和绝对差值。

# 温度比较程序
temp1 = float(input("请输入第一个温度(℃):"))   # 第一个温度
temp2 = float(input("请输入第二个温度(℃):"))   # 第二个温度

diff = temp1 - temp2                     # 差值,可能为负数
diff_abs = abs(temp1 - temp2)            # 差值的绝对值

print("两个温度相差", diff_abs, "度")    # 输出绝对差距
print("第一个温度减去第二个温度的结果是:", diff)  # 原始差值

运行示例:

请输入第一个温度(℃):-5
请输入第二个温度(℃):3
两个温度相差 8 度
第一个温度减去第二个温度的结果是: -8

五、相关指引

绝对值函数在很多地方都会用到,比如:

  • 当你需要比较两个数的差距而不关心谁大谁小时,用 abs 最方便。
  • random 模块中,有时需要生成随机数并计算离某个值的偏差,也可以用到绝对值。
  • 如果你想知道一个数的平方根(正数),可以用 math.sqrt 函数,但注意 math.sqrt 只能接受非负数,如果要计算负数的平方根,就需要先取绝对值或者使用复数(超出GESP二级范围)。
  • 最大值最小值函数 maxmin 也常与绝对值搭配使用,比如找出多个数的绝对值中的最大值:max(abs(a), abs(b), abs(c))

如果你想学习更多数学相关的函数,可以看看 math 模块,里面还有取整、三角函数等工具。但无论如何,abs 是你必须掌握的第一个“数学魔法”。把它记住,以后写程序遇到“距离”或“差距”时,第一时间想到它!

例题精讲

1单选题

在Python中,abs(-3.14) 的返回值是什么?

A3.14
B-3.14
C0
D报错
2判断题

在Python中,abs()函数只能用于整数类型的参数。

3填空题
补全以下代码,实现计算两个整数差值的绝对值:
a = int(input())
b = int(input())
result = ___
print(result)
4单选题

执行 print(abs(0)) 会输出什么?

A0
B1
C-1
D报错
5判断题

在Python中,表达式 abs(-5) == abs(5) 的结果为 True。