2022年 11月 5日

Python pow函数

描述

pow()函数是Python的内置函数,它计算并返回x的y次方的值。

语法和参数

pow(x, y, z)
名称 备注 说明
x 底数 不可省略的参数
y 指数 不可省略的参数
z 取余数字 可省略的参数。当z存在时,函数返回值等于 pow(x, y)%z

举例说明

1. 参数z省略时

当省略取余数字z时,pow函数返回x的y次方的值。

  1. >>> pow(2, 3)
  2. 8
  3. >>> pow(4, 0.5)
  4. 2.0

2. 参数z存在时

当参数z存在,pow(x, y, z)的返回结果就等于pow(x, y)的结果对z求余。

  1. >>> pow(8, 2, 5)
  2. 4

注意事项

1. z参数省略时,返回值是x的y次方

  1. >>> pow(2, 4)
  2. 16

2. z参数省略时,x和y的值可以是整数和浮点数

当x或y存在浮点数时,pow()函数的返回结果也是浮点数,否则为整数。

  1. >>> pow(4, 0.5)
  2. 2.0
  3. >>> type(pow(4, -0.5))
  4. <class 'float'>
  5. >>> pow(4, 2)
  6. 16
  7. >>> type(pow(4, 2))
  8. <class 'int'>

3. 参数z不能为0

当参数z为0时,Python会抛出异常。

  1. >>> pow(4, 2, 0)
  2. Traceback (most recent call last):
  3. File "<stdin>", line 1, in <module>
  4. ValueError: pow() 3rd argument cannot be 0

4. 参数z存在时,x和y只能是整数

当z存在时,x和y必须时整数。否则Python会抛出异常。

  1. >>> pow(3, 0.7, 1)
  2. Traceback (most recent call last):
  3. File "<stdin>", line 1, in <module>
  4. TypeError: pow() 3rd argument not allowed unless all arguments are integers

自行实现

根据pow函数的功能特性,自行实现的代码如下(函数 my_pow()模拟实现了pow()函数):

  1. def _pow(x, y):
  2. if x == 0:
  3. if y < 0:
  4. raise ZeroDivisionError("0.0 cannot be raised to a negative power")
  5. return
  6. elif y == 0:
  7. return 1
  8. else:
  9. return 0
  10. else:
  11. if y == 0:
  12. return 1
  13. if y < 0:
  14. result = x
  15. for i in range(1, abs(y)):
  16. result *= x
  17. return 1 / result
  18. result = x
  19. for i in range(1, y):
  20. result *= x
  21. return result
  22. def my_pow(x, y, z=None):
  23. if z is None:
  24. return _pow(x, y)
  25. else:
  26. if (type(x) != int) or (type(y) != int):
  27. raise TypeError("pow() 3rd argument not"
  28. " allowed unless all arguments are integers")
  29. return
  30. else:
  31. return _pow(x, y) % z