【问题标题】:isqrt function ValueErroriqrt 函数 ValueError
【发布时间】:2021-10-04 04:04:20
【问题描述】:

当我在这段代码中输入一个负数时,我试图找出一个 valueerror。我试图让它说出一个数字是正数、负数、奇数还是偶数,或者是否是正方形。所有数字都有效,但负数会从我的( if isqrt(num) * isqrt(num) == 0 )返回一个值错误,因为它只会读取正值,但我如何输入它必须是的最后几行非负测试 isqrt 函数?

from math import isqrt

num = int(input("enter a number: "))
if num > 0:
    print(num, "is positive")
elif num == 0:
    print(num, "is zero")
else:
    print(num, "is negative")

if num % 2 == 0:
    print(num, 'is even')
else:
    print(num, 'is odd')

if isqrt(num) * isqrt(num) == num:
    print(num, 'is square')
else:
    print(num, 'is not square')

【问题讨论】:

  • 为什么不在 sqrt 测试之前先检查一下?喜欢if num >= 0 and isqrt(num) * isqrt(num) == num:
  • isqrt 的输入不能为负数。
  • Python中的math.isqrt()方法用于获取给定非负整数值n的整数平方根

标签: python valueerror


【解决方案1】:

好的,所以我让它做我想做的事。我必须添加的是(如果 num >= 0 和 isqrt(num) * isqrt(num) == num: )。所以只需添加 [num >= 0 和] 。由 N. Wouda 找到,谢谢。

【讨论】:

    【解决方案2】:

    如果你得到一个ValueError,为什么不在if num > 0 中包含方形部分?

    from math import isqrt
    def check_sqrt(num):
        if isqrt(num) * isqrt(num) == num:
            print(num, 'is square')
        else:
            print(num, 'is not square')
    num = int(input("enter a number: "))
    if num > 0:
        print(num, "is positive")
        check_sqrt(num)
    elif num == 0:
        print(num, "is zero")
        check_sqrt(num)
    else:
        print(num, "is negative")
    
    if num % 2 == 0:
        print(num, 'is even')
    else:
        print(num, 'is odd')
    

    【讨论】:

    • 不过,零是一个完美的正方形。
    猜你喜欢
    • 2021-12-14
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 2020-02-18
    • 1970-01-01
    • 2021-02-03
    • 2019-08-02
    相关资源
    最近更新 更多