用于处理数字的内置Python3函数

来自菜鸟教程
跳转至:导航、​搜索

介绍

Python 3 带有许多内置函数,您可以在您正在处理的任何程序中轻松使用它们。 一些函数使您能够 转换数据类型 ,而其他函数则特定于特定类型,例如 strings

本教程将介绍一些可用于 Python 3 中数字数据类型的内置函数。 我们将介绍以下功能:

  • abs() 为绝对值
  • divmod() 同时求商和余数
  • pow() 将数字提高到一定的幂
  • round() 将数字四舍五入到某个小数点
  • sum() 计算可迭代数据类型中项目的总和

熟悉这些方法可以在编程时为您提供更大的灵活性,以便您在决定使用哪些运算符和函数时做出明智的决定。 在本教程中,我们将通过示例介绍其中一些函数。

先决条件

您应该在您的计算机或服务器上安装 Python 3 并设置编程环境。 如果您没有设置编程环境,您可以参考本地编程环境或服务器上的编程环境适合您的操作的安装和设置指南系统(Ubuntu、CentOS、Debian 等)

绝对值

内置函数 abs() 将返回您传递给它的数字的绝对值。 在数学中,绝对值是指一个数在数轴上到0的距离。 绝对值不考虑数字从零开始的方向,这意味着负数将用正数表示。

举个例子,15的绝对值为15-74的绝对值为74,[的绝对值为X145X] 是 0

绝对值是微积分和实分析的一个重要概念,但当我们考虑诸如旅行距离之类的日常情况时,它也很有意义。 例如,如果我们试图到达 58 英里外的某个地方,但实际上却走了 93 英里,那么我们就超出了原来的目的地。 如果我们现在要计算到达预定目的地还剩下多少英里,我们最终会得到一个负数,但我们不能行驶负数。

让我们使用 abs() 来解决这个问题:

Info: 要跟随本教程中的示例代码,请通过运行 python3 命令在本地系统上打开 Python 交互式 shell。 然后,您可以通过在 >>> 提示符后添加示例来复制、粘贴或编辑示例。


目的地英里.py

miles_from_origin = 58 # Miles destination is from origin
miles_travelled = 93  # Miles travelled from origin to destination (too many)

# Calculate how many miles destination is from current location:
miles_to_go = miles_from_origin - miles_travelled   

print(miles_to_go)     # Print how many miles left (a negative number)
print(abs(miles_to_go))   # Use absolute value to account for negative number
Output-35
35

在输出中,我们看到如果我们不使用 abs() 函数,在这种情况下我们有一个负数,-35。 虽然我们可能处于 miles_travelled 小于 miles_from_origin 的位置,但包括 abs() 函数考虑了负数的可能性。

对于负数,abs() 将返回正数,因为绝对值始终为正数或零。

让我们使用带正数和零的 abs()

print(abs(89.9))
print(abs(0))
Output89.9
0

当我们只寻找一个正数时,我们最有可能将 abs() 与一个可能是正数或负数的变量一起使用。 为了说明负输入或结果,我们将使用 abs() 将返回的值修改为正数。

在一个函数中求商和余数

因为底除法(返回商)和模除法(返回余数)密切相关,所以使用同时组合这两种操作的函数会很有用。

Python 内置函数 divmod() 将两者结合起来,首先返回来自地板除法的商,然后返回余数。

因为 divmod() 将使用两个数字,我们需要将两个数字传递给它。

divmod(a,b)

使用此功能,我们基本上执行以下操作:

a // b
a & b

假设我们写了一本 80,000 字长的书。 对于我们的出版商,我们可以选择每页 300 或 250 个字,我们想了解每种情况下我们会有多少页。 使用 divmod() 我们可以立即看到我们将拥有多少页,以及有多少单词会溢出到额外的页面上。

words_per_page.py

words = 80000      # How many words in our book
per_page_A = 300  # Option A, 300 words per page
per_page_B = 250  # Option B, 25- words per page

print(divmod(words,per_page_A))    # Calculate Option A
print(divmod(words,per_page_B))    # Calculate Option B
Output(266, 200)
(320, 0)

在选项 A 中,我们将有 266 页填满单词,剩下 200 个单词(一页的 2/3),总共 267 页,在选项 B 中,我们将有一本 320 页的书。 如果我们想要有环保意识,我们可以选择选项 A,但如果我们想通过更大尺寸的书看起来更令人印象深刻,我们可以选择选项 B。

因为函数 divmod() 既可以接受整数也可以接受浮点数,我们也来看一个使用浮点数的例子:

a = 985.5
b = 115.25

print(divmod(a,b))
Output(8.0, 63.5)

在此示例中,8.0 是 985.5 除以 115.25 的底商,而 63.5 是余数。

请记住,您可以使用地板除法运算符 // 和模运算符 % 来验证 divmod() 做了什么:

print(a//b)
print(a%b)
Output8.0
63.5

在 Python 中使用 divmod() 函数时。 我们得到除法发生的全部次数和返回的余数。

力量

在 Python 中,您可以使用 运算符 ** 将数字提高一个指数,或者您可以使用内置函数 pow() 接受两个数字。

要了解 pow() 函数是如何工作的,假设我们正在研究细菌,并且想看看如果我们从 1 开始,最终我们会有多少细菌。 我们正在使用的特定细菌每小时翻一番,因此我们将计算 2(加倍)的总小时数(在我们的例子中为 24)的幂。

细菌.py

hours = 24
total_bacteria = pow(2,hours)

print(total_bacteria)
Output16777216

我们将两个整数传递给 pow() 函数,并确定到这 24 小时结束时,我们将拥有超过 1600 万个细菌。

在数学中,如果我们要计算 3 的 3 次方,一般是这样写的:

我们正在完成的计算是 3 x 3 x 3,等于 27。

要在 Python 中计算 3³,我们将输入 pow(3,3)

函数 pow() 将接受整数和浮点数,当您打算将数字提高到某个幂时,它提供了使用 ** 运算符的替代方法。

四舍五入的数字

在使用具有大量小数位的浮点数时,能够快速轻松地舍入数字变得很重要。 内置 Python 函数 round() 接受两个数字,一个要四舍五入,一个指定要包含的小数位数。

我们将使用该函数获取超过 10 位小数的浮点数,并使用 round() 函数将小数位数减少到 4:

i = 17.34989436516001
print(round(i,4))
Output17.3499

在上面的示例中,浮点数 17.34989436516001 被四舍五入为 17.3499,因为我们已指定小数位数应限制为 4。

另请注意,round() 函数将数字向上舍入,因此它没有提供 17.3498 作为输出,而是提供了 17.3499,因为十进制数字 8 后面的数字是数字 9 . 任何后跟数字 5 或更大的数字都将向上舍入到下一个整数。

让我们分解一下 round() 的语法:

round(number to round,number of decimal places)

在日常生活中,四舍五入经常发生,尤其是在处理金钱方面; 我们不能在几个朋友之间平均分配一分钱。

让我们看一个可以计算小费的程序示例。 这里我们将提供数字,但我们可以重写程序以引入用户提供的数字。 在这个例子中,3 个朋友去一家餐馆,他们想平分 87.93 美元的账单,并加上 20% 的小费。

bill_split.py

bill = 87.93               # Total bill
tip = 0.2                 # 20% tip
split = 3                 # Number of people splitting the bill

total = bill + (bill * tip)   # Calculate the total bill

each_pay = total / split    # Calculate what each person pays

print(each_pay)                # What each person pays before rounded

print(round(each_pay,2)) # Round the number — we can’t split pennies
Output35.172000000000004
35.17

在这个程序中,我们首先要求在我们计算总账单加上小费除以 3 后输出数字,它的计算结果是一个有很多小数位的数字:35.172000000000004。 由于这个数字作为货币数字没有意义,我们使用 round() 函数并将小数位限制为 2,以便我们可以提供 3 个朋友实际可以使用的输出:35.17

如果您希望舍入到一个只有 0 作为十进制值的数字,您可以通过使用 0 作为 round() 函数中的第二个参数来实现:

round(345.9874590348545304636,0)

这将评估为 346.0

您还可以将整数传递给 round() 而不会收到错误,以防您以整数而不是浮点数的形式收到用户输入。 当一个整数作为第一个参数传递时,将返回一个整数。

计算总和

sum() 函数用于计算数字复合数据类型的总和,包括 liststuplesdictionaries

我们可以将列表传递给 sum() 函数,将列表中的所有项目按从左到右的顺序添加到一起:

some_floats = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]
print(sum(some_floats))
Output49.5

这将与元组和字典类似地工作:

print(sum((8,16,64,512)))   # Calculate sum of numbers in tuple
print(sum({-10: 'x', -20: 'y', -30: 'z'}))   # Calculate sum of numbers in dictionary 
Output600 # Sum of numbers in tuple
-60 # Sum of numbers in dictionary

sum() 函数最多可以使用 2 个参数,因此您可以添加一个整数或浮点形式的附加数字,以添加到构成第一个位置的参数的数字:

some_floats = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]

print(sum(some_floats, 0.5))
print(sum({-10: 'x', -20: 'y', -30: 'z'},60))
Output50.0
0

当您不包含第二个参数时,sum() 函数默认为可迭代复合数据类型添加 0。

结论

本教程介绍了一些可用于 Python 编程语言中的数值数据类型的内置方法。

要了解有关处理数字的更多信息,您可以阅读“如何使用运算符在 Python 3 中进行数学运算”,要了解有关列表的更多信息,请查看“了解 Python 3 中的列表[ X191X]。