Python 中的模运算符

2025年3月17日 | 阅读13分钟

与其他编程语言一样,Python 模数运算符执行相同的工作以找到给定数字的模数。该运算符是一个数学符号,用于对给定的两个数字执行不同的操作,例如(+、-、* /)加法、减法、乘法和除法,以整数和浮点数的形式返回结果。运算符告诉编译器根据传递给给定数字的运算符符号执行某些操作。

Python Modulus Operator

模数运算符

Python 模数运算符是一个内置运算符,它通过将第一个数字除以第二个数字来返回剩余的数字。它也称为 Python 模数。在 Python 中,模数符号表示为百分比 (%) 符号。因此,它被称为余数运算符。

语法

以下是表示 Python 语言中模数运算符的语法,它用于在我们用第一个数字除以第二个数字时获取余数。

这里 X 和 Y 是两个整数,模数 (%) 用于两者之间以获取余数,其中第一个数字 (X) 除以第二个数字 (Y)。

例如,我们有两个数字,24 和 5。我们可以通过在数字 24 % 5 之间使用模数或取模运算符来获取余数。这里 24 除以 5,返回 4 作为余数,4 作为商。当第一个数字完全可以被另一个数字整除而没有留下任何余数时,结果将为 0。例如,我们有两个数字,20 和 5。我们可以通过在数字 20 % 5 之间使用模数或取模运算符来获取余数。这里 20 除以 5,返回 0 作为余数,4 作为商。

使用 while 循环获取两个整数的模数

让我们编写一个程序,使用 while 循环和模数 (%) 运算符在 Python 中获取两个数字的余数。

Get_rem.py

输出

Do you want to continue or not (Y / N)? Y
First number is: 37
Second number is: 5
The result after performing modulus operator is: 37 % 5 = 2
The result after performing modulus operator is: 5 % 37 = 5
Do you want to continue or not (Y / N)? Y
First number is: 37
Second number is: 5
The result after performing modulus operator is: 24 % 5 = 4
The result after performing modulus operator is: 5 % 24 = 5
Do you want to continue or not (Y / N)? Y
First number is: 37
Second number is: 5
The result after performing modulus operator is: 28 % 5 = 3
The result after performing modulus operator is: 5 % 28 = 5

说明

  • while True: 这会创建一个无限循环。循环内的代码将一直运行,直到循环被明确中断。
  • a = input('您想继续还是不继续 (Y / N)? '): 用户被提示输入 'Y' 或 'N' 来决定是继续还是退出程序。
  • if a.upper() != 'Y': break: 如果用户输入的不是 'Y'(不区分大小写),则退出循环,程序终止。
  • a = int(input('第一个数字是: ')) and b = int(input('第二个数字是: ')): 用户被提示输入两个整数。
  • print("执行模数运算符后的结果是: ", a, ' % ', b, ' = ', a % b): 它计算并打印第一个输入的数字对的模数运算 (a % b) 的结果。
  • print("执行模数运算符后的结果是:", b, ' % ', a, ' = ', b % a): 它计算并打印第二个输入的数字对的模数运算 (b % a) 的结果。
  • 程序将询问用户是想继续还是想停止程序,通过输入 (Y/N),其中 Y 是继续程序的输入,'N' 用于停止程序。

获取两个浮点数的模数

让我们编写一个程序,使用 Python 中的模数运算符查找两个浮点数的余数。

Mod.py

输出

First number: 40.5
 Second number: 20.5
Modulus of two float number is:  40.5 % 20.5 = 20.0

说明

  • x = float(input('第一个数字: ')): 提示客户端输入第一个变量的浮点数,并将信息存储在变量 x 中。
  • y = float(input('第二个数字: ')): 提示客户端输入第二个变量的浮点数,并将信息存储在变量 y 中。
  • res = x % y: 对 x 和 y 执行模数操作,结果存储在变量 res 中。
  • print("两个浮点数的模数是: ", x, "%", y, " = ", res, sep=" "): 打印模数操作的结果,使用适当的格式,用空格分隔值 (sep=" ")。

获取负数的模数

让我们编写一个程序,使用 while 循环和模数 (%) 运算符在 Python 中获取两个负数的余数。

Mod.py

输出

First number: -10
Second number: 3
Modulus of negative number is:  -10 % 3  =  2
Modulus of negative number is:  3 % -10  =  -7
 Do you want to continue (Y / N)? N

说明

  • while True: 创建一个无限循环。循环内的代码将继续运行,直到客户端选择通过输入与 'Y' 不同的选项来退出。
  • x = input('您需要继续吗 (Y/N)? '): 提示客户端输入 'Y' 或 'N' 来选择是继续还是退出程序。
  • if x.upper() != 'Y': break: 假设客户端输入的不是 'Y'(不区分大小写),则退出循环,程序终止。
  • x = int(input('第一个数字: ')) and y = int(input('第二个数字: ')): 提示客户端输入两个整数。
  • print("负数的模数是: ", x, "%", y, " = ", x % y, sep=" "): 它计算并打印第一个输入的数字对的模数操作 (x % y) 的结果。
  • print("负数的模数是: ", y, "%", x, " = ", y % x, sep=" "): 它计算并打印第二个输入的数字对的模数操作 (y % x) 的结果。

使用 fmod() 函数获取两个数字的模数

让我们编写一个程序,使用 Python 中的 fmod() 函数获取两个浮点数的余数。

Fmod.py

输出

Modulus using fmod() is: 3.5
 Modulus using fmod() is: 13.5
First number is 24
Second number is 5
Modulus of two numbers using fmod() function is 24  %  5  =  4.0

说明

  • import math: 此行导入数学模块,该模块提供数学功能,包括 fmod()。
  • res = math.fmod(25.5, 5.5): math.fmod() 函数用于计算两个浮点数(在此情况下为 25.5 和 5.5)的模数,结果存储在变量 res 中。
  • print("使用 fmod() 的模数是:", res): 此行打印使用 math.fmod() 计算的模数操作的结果。
  • ft = math.fmod(75.5, 15.5): 与第一个模型类似,它计算两个浮点数(75.5 和 15.5)的模数,并将结果存储在变量 ft 中。
  • print("使用 fmod() 的模数是:", ft): 此行打印第二个模数操作的结果。
  • x = int(input("第一个数字是 ")) and y = int(input("第二个数字是 ")): 提示客户端输入两个整数,然后将其转换为数字并存储在变量 x 和 y 中。
  • out = math.fmod(x, y): math.fmod() 函数再次用于计算客户端输入的两个数字的模数,结果存储在变量 out 中。
  • print("使用 fmod() 函数的两个数字的模数是", x, " % ", y, " = ", out): 此行打印使用 math.fmod() 计算的客户端输入的整数的模数操作的结果。

使用函数获取 n 个数字的模数

让我们编写一个 Python 程序,使用函数和 for 循环查找 n 个数字的模数。

getRemainder.py

输出

Define a number till that you want to display the remainder 7
 Enter the second number 5
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0
6 % 5 = 1
7 % 5 = 2

说明

  • def getRemainder(n, k): 此行定义了一个名为 getRemainder 的函数,它接受两个边界(n 和 k)。
  • for I in range(1, n + 1):: 此行开始一个 for 循环,该循环从 1 到 n(包括)进行迭代。
  • rem = I % k: 在循环内部,计算 I 除以 k 的其余部分并存储在变量 rem 中。
  • print(i, " % ", k, " = ", rem, sep=" "): 此行打印每次迭代的模数操作的结果,显示 I 的值、除数 k 和计算出的剩余部分。
  • if __name__ == "__main__":: 此行检查内容是否作为主程序运行。
  • n = int(input("定义一个数字,直到您需要显示剩余部分,并且 k = int(input("输入第二个数字 ")))): 提示客户端输入两个整数,n 和 k。
  • getRemainder(n, k): 使用客户端提供的值调用 getRemainder 函数,该函数计算并打印循环每次迭代的剩余部分。

使用 mod() 函数获取给定数组的模数

让我们编写一个程序来演示 Python 中的 mod() 函数。

Mod_fun.py

输出

The modulus of the given array is [0 3 4 3]

说明

  • import numpy as np: 此行导入 NumPy 库并为其分配别名 np。NumPy 是 Python 中用于数学任务的强大库,它提供有效的数组操作。
  • x = np.array([40, - 25, 28, 35]): 使用指定的值创建一个名为 x 的 NumPy 数组。
  • y = np.array([20, 4, 6, 8]): 使用指定的值创建另一个名为 y 的 NumPy 数组。
  • print("给定集群的模数是 ", np.mod(x, y)): 调用 NumPy mod() 函数,该函数对数组 x 和 y 的对应组件执行元素级模数过程。结果使用 print() 打印。

使用 numpy 获取两个数字的模数。

让我们考虑一个程序,从 Python 库中导入 numpy 包,然后使用余数函数在 Python 中获取模数。

Num.py

输出

Modulus is 38 % 8 = 6

说明

  • import numpy as np: 此行导入 NumPy 库并为其分配别名 np。
  • num = 38: 初始化变量 num,值为 38。
  • num2 = 8: 初始化变量 num2,值为 8。
  • res = np.remainder(num, num2): 调用 NumPy 剩余部分() 函数,该函数计算 num 除以 num2 的剩余部分。结果存储在变量 res 中。
  • print("模数是", num, " % ", num2, " = ", res): 使用 print() 打印模数操作的结果。它显示 num、num2 的值和计算出的剩余部分 (res)。

Python 模数运算符中的异常

在 Python 中,当一个数字被零除时,它会抛出一个异常,这个异常称为 ZeroDivisionError。换句话说,当一个数字可以被零除数整除时,它会返回一个异常。因此,如果我们要从 Python 模数运算符中删除异常,除数不应该为零。

让我们编写一个程序来演示 Python 模数运算符中的异常。

Except.py

输出

The first number is: 24
The second number is: 0

不能将数字除以零!所以,改变右操作数的值。

正如我们在上面的结果中看到的那样,它显示“不能将数字除以零!所以,改变右操作数的值”。因此,我们可以说,当我们用零除第一个数字时,它会返回一个异常。

说明

  • x = int(input('第一个数字是: ')) and y = int(input('第二个数字是: ')): 提示客户端输入两个整数,然后将其转换为整数并存储在变量 x 和 y 中。
  • 尝试:: 这开始尝试块,其中放置可能引发异常的代码。
  • print(x, ' % ', y, ' = ', x % y): 在尝试块内部,代码尝试计算并打印模数操作 (x % y) 的结果。
  • 除 ZeroDivisionError 之外:: 如果发生 ZeroDivisionError(即,如果客户端将零作为第二个数字输入),则执行除块之外的代码。
  • print('不能将数字除以零!' + '因此,改变右操作数的值。'): 此行打印一条错误消息,指示不允许除以零,并建议更改右操作数的值。

下一主题MATLAB 与 Python