【问题标题】:Why is ValueError not raised?为什么没有引发 ValueError?
【发布时间】:2019-01-27 17:52:52
【问题描述】:

Python 文档指出:

所以我的代码是:

print(pow(-2,2.1))

此代码应该引发 ValueError,因为 -2 和 2 是有限的,-2 是负数,并且 2.1 不是整数 - 因此 pow(-2,2.1) 是未定义的。

【问题讨论】:

  • 你使用的是pow,而不是math.pow。
  • 为此,请使用from math import pow,然后使用print(pow(-2,2.1))
  • 它确实提高了ValueErrow: negative number cannot be raised to a fractional power。
  • @Ry- 我得到了答案,我该如何在这里结束这个问题?
  • 结束这个问题是没有意义的。但是,您可以做的是接受答案。

标签: python python-3.x


【解决方案1】:

您将内置的 pow 函数与 math.pow 的文档混为一谈

查看内置pow函数: https://docs.python.org/3/library/functions.html#pow

返回 x 的 y 次方;如果 z 存在,则返回 x 的 y 次方, 模 z(比 pow(x, y) % z 计算效率更高)。这 两个参数的形式 pow(x, y) 等价于使用幂运算符: x**y。

参数必须是数字类型。对于混合操作数类型, 适用于二元算术运算符的强制规则。对于整数 操作数,结果具有与操作数相同的类型(之后 coercion) 除非第二个参数是否定的;在这种情况下,所有 参数被转换为浮点数并传递一个浮点数结果。为了 例如,102 返回 100,但 10-2 返回 0.01。如果第二个 参数是否定的,第三个参数必须省略。如果 z 是 现在,x 和 y 必须是整数类型,并且 y 必须是非负数。

同样值得注意的是,内置pow函数的结果与使用**相同,即 pow(-2,2.1) 等价于(-2) ** 2.1

【讨论】:

    猜你喜欢
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 2015-08-16
    • 2014-11-20
    • 2020-03-08
    • 1970-01-01
    相关资源
    最近更新 更多