Python pow函数

48 篇文章 46 订阅

描述

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

语法和参数

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

举例说明

1. 参数z省略时

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

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

2. 参数z存在时

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

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

注意事项

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

>>> pow(2, 4)
16

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

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

>>> pow(4, 0.5)
2.0
>>> type(pow(4, -0.5))
<class 'float'>
>>> pow(4, 2)
16
>>> type(pow(4, 2))
<class 'int'>

3. 参数z不能为0

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

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

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

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

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

自行实现

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

def _pow(x, y):
    if x == 0:
        if y < 0:
            raise ZeroDivisionError("0.0 cannot be raised to a negative power")
            return
        elif y == 0:
            return 1
        else:
            return 0
    else:
        if y == 0:
            return 1
        if y < 0:
            result = x
            for i in range(1, abs(y)):
                result *= x
            return 1 / result

        result = x
        for i in range(1, y):
            result *= x
        return result

def my_pow(x, y, z=None):
    if z is None:
        return _pow(x, y)
    else:
        if (type(x) != int) or (type(y) != int):
            raise TypeError("pow() 3rd argument not"
                  " allowed unless all arguments are integers")
            return
        else:
            return _pow(x, y) % z

  • 89
    点赞
  • 372
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值