楼主: CDA网校
3086 3

罕见的Python值的绝对值:二进制,八进制,无穷大等等! [推广有奖]

管理员

大师

62%

还不是VIP/贵宾

-

威望
3
论坛币
31793 个
通用积分
3041.6096
学术水平
260 点
热心指数
268 点
信用等级
235 点
经验
194744 点
帖子
5102
精华
19
在线时间
3689 小时
注册时间
2019-9-13
最后登录
2024-4-26

初级热心勋章

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
当我们使用Python的abs()function时,我们经常使用整数和浮点值。但是abs()具有一个鲜为人知的功能:它也可以使用不常见的值。让我们来看看。

在这篇文章中:

获取不常见的Python值的绝对值
Python中复数的绝对值
非基数10的绝对值
二进制数的绝对值
科学计数法的绝对价值
十六进制数的绝对值
八进制数的绝对值
Python的无穷大和NaN的绝对值
概要
#获取不常见的Python值的绝对值
在Python中,我们使用函数获得数字的绝对值abs()。当我们给该函数一个整数或浮点数时,它返回返回该数的非负值(Python Docs,nd)。

但是abs()可以做得更多。此函数还知道如何处理不太常见的值。让我们来看看:

对于复数,abs()返回该数字的大小。
如果数字的底数不同于10,则abs()仍返回以10为底的绝对值。
具有正或负无穷大时,abs()返回绝对正无穷大。
并使用非数字值(NaN)abs()返回NaN。
让我们看看代码如何查找这些abs()行为。

#在Python复数的绝对值
甲复数处于方程的形式表示的数字,实部和一个所谓的虚部。后者为方程式提供了解决方案,而该方程式不能满足实数。

当我们使用abs()复数时,该函数返回复数的大小(Python Docs,nd)。例如:
  1. complexA = 2 + 1j * 3
  2. complexB = (2 - 1j) * 3

  3. # Output magnitude of complex numbers
  4. print("Absolute values of", complexA, "and", complexB, "are:")
  5. print(abs(complexA), " | ", abs(complexB))
复制代码
在这里,我们有两个复数,分别存储在complexA和complexB变量中。然后我们将它们与print()功能一起输出。代码段的最后一行调用abs()这些复数上的函数。

这是Python的输出:

  1. Absolute values of (2+3j) and (6-3j) are:
  2. 3.605551275463989  |  6.708203932499369
复制代码

#非基数10的绝对值
几乎所有时间该abs()函数都使用以10为底的十进制值,abs(-3.14)和abs(234.98)。但是,如果我们使用具有不同底数的值,则函数的结果仍将以10为底。让我们看一下。

#二进制数的绝对值
甲二进制数表示在基座-2数字系统,该系统只使用两个符号的值:“0”和“1”。这些1和0的顺序确定二进制数的实际值。

当我们调用abs()二进制数时,我们得到一个十进制结果。例如:
  1. positiveBinary = 0b11110
  2. negativeBinary = -0b11110

  3. print("Absolute value of 30 and -30 in binary form:")
  4. print(abs(positiveBinary), " | ", abs(negativeBinary))
复制代码
此代码产生两个变量,positiveBinary和negativeBinary。这些是以二进制格式表示的正值和负值。

print()然后,Python的函数输出一些文本。然后,abs()对那些二进制数字调用该函数。输出的内容如下:
  1. Absolute value of 30 and -30 in binary form:
  2. 30  |  30
复制代码
这表明abs()即使不输入基数也返回以10为底的值。(由于print()输出数字的方式而不会发生这种情况。当我们将abs()立即返回的值转换为字符串时,该字符串值已经是一个十进制数字。)

#科学计数法的绝对价值
用科学计数法,我们有一个十进制数字乘以数字10,该数字升为正或负。这表示非常大或很小的值,而不必写一堆零。

当我们调用该abs()函数与科学记数法的数字,我们得到一个正规浮点值回。例如:
  1. positiveExp = 3.0e1
  2. negativeExp = -3.0e1

  3. print("Absolute value of 30 and -30 in scientific notation:")
  4. print(abs(negativeExp), " | ", abs(negativeExp))
复制代码

在这里,我们做两个变量,positiveExp和negativeExp。print()然后,Python的函数宣布其绝对值的输出。我们通过调用abs()这些变量来兑现承诺。

这是小程序的输出:

  1. Absolute value of 30 and -30 in scientific notation:
  2. 30.0  |  30.0
复制代码

#十六进制的绝对值
与常见的十进制数字基数10不同,十六进制数字使用基数16。它用十六个不同的符号表示这些值(通常为“ 0”至“ 9”,“ A”至“ F”)。这也是表示二进制数的一种便捷方式,因为一个十六进制数字可以表示四个二进制数字的排列。

当我们给Pythonabs()函数一个十六进制值时,我们得到一个常规的十进制值作为回报。例如:
  1. positiveHex = 0x1E
  2. negativeHex = -0x1E

  3. print("Absolute value of 30 and -30 in hexadecimal form:")
  4. print(abs(positiveHex), " | ", abs(negativeHex))
复制代码
这个小程序首先生成两个十六进制变量,positiveHex和negativeHex。print()然后该函数进行一些输出。然后,abs()对这些十六进制值调用该函数。

这是我们得到的输出:
  1. Absolute value of 30 and -30 in hexadecimal form:
  2. 30  |  30
复制代码

#八进制数的绝对值
一个八进制数是在底座8的值的八位数字这种格式开始与计数为“0”至“7”。10到17的八进制值用“ 8”到“ 15”表示。

当我们abs()以八进制值调用函数时,我们不会得到八进制值。相反,我们最终得到一个十进制值。这是一个例子:
  1. positiveOctal = 0o36
  2. negativeOctal = -0o36

  3. print("Absolute value of 30 and -30 in octal form:")
  4. print(abs(positiveOctal), " | ", abs(negativeOctal))
复制代码

在这里,我们首先做两个变量。它们具有正负八进制值。

然后,我们使用Pythonprint()函数打印一些信息。接下来,我们显示变量的绝对值。我们通过获得这些值abs()。这是输出的样子:
  1. Absolute value of 30 and -30 in octal form:
  2. 30  |  30
复制代码
# Python的无穷大和NaN的绝对值
为了完整起见,让我们看一下abs()函数如何使用两种特殊值:正无穷大和负无穷大以及非数字值(NaN)。

让我们通过这个迷你程序探索这些值:
  1. # Store some uncommon values in variables
  2. positiveInf = float("inf")
  3. negativeInf = float("-inf")
  4. nanValue = float("nan")

  5. # Output their absolute values
  6. print("Absolute values of:")
  7. print("Positive infinity (+∞):", abs(positiveInf))
  8. print("Negative infinity (-∞):", abs(negativeInf))
  9. print("Not a number (NaN):", abs(nanValue))
复制代码

在此Python脚本,我们首先要三个变量:positiveInf,negativeInf,和nanValue。它们分别具有正无穷大,负无穷大和“非数字”(NaN)值。

然后,我们使用该print()函数输出其绝对值。为了获得这些非负值,我们abs()在每个变量上调用该函数。

从下面的输出中可以看到,这些值保持相同的类型。abs()不会像我们在上面的其他示例中看到的那样改变它们。
  1. Absolute values of:
  2. Positive infinity (+∞): inf
  3. Negative infinity (-∞): inf
  4. Not a number (NaN): nan
复制代码
我们不能将abs()函数与None值一起使用。当我们这样做时,Python会生成一条TypeError错误消息(“ abs()的错误操作数类型”)。
#总结
我们使用Pythonabs()函数获得数字的绝对值。该函数可以返回三种类型的值之一:整数,浮点值或复数的大小。

有趣的是abs(),即使我们没有为其提供以十进制开头的值,它也会返回以10为底的值。因此,当我们以十六进制,二进制或八进制值执行函数时,结果不在基数16、2或8中。结果在基数10中。

这样abs()不仅可以返回绝对值,还可以转换该值。




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python 绝对值 二进制 无穷大 Scientific

已有 2 人评分经验 收起 理由
cheetahfly + 100 精彩帖子
yunnandlg + 60 精彩帖子

总评分: 经验 + 160   查看全部评分

沙发
yunnandlg 在职认证  学生认证  发表于 2020-10-15 16:46:21 |只看作者 |坛友微信交流群
Pray for the best, prepare for the worst.

谢谢分享

使用道具

藤椅
kenidizl 发表于 2022-5-14 09:12:30 |只看作者 |坛友微信交流群
学习中

使用道具

板凳
kenidizl 发表于 2022-5-21 10:23:43 |只看作者 |坛友微信交流群
感谢分享

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 04:37