【问题标题】:How to select integer for function如何为函数选择整数
【发布时间】:2020-09-25 02:58:06
【问题描述】:

我有一些函数,例如范围数 n 的 sumssqure,如果 n 是整数,它应该返回总和值。如果 n 不是整数,应该返回一些字符串。它必须使用 raise ValueError("对不起,n 必须是整数!"). 我的代码可以很好地处理任何整数 n,但是当 n 不是整数时会出现问题。我不知道如何解决它。非常感谢。

def sumsquares(n):
    try:
        return sum(i**2 for i in range(0,n+1))
    except ValueError as ve:
        err = str(ve)
    assert err == "Sorry, n must be a whole number!"
sumsquares(2.2)

【问题讨论】:

  • assert 不起作用。如果没有错误,则err 未设置,尝试比较时会出错。如果有错误,err 将是错误消息,而不是您要比较的字符串。
  • 你为什么不简单地测试输入看它是否是一个整数?
  • except 和 assert 部分来自指令,看来我必须在里面添加这些代码。也许我添加不正确?失去理智。
  • 如果其中一个答案解决了您的问题,请accept it;这样做不仅为回答者提供了一些积分,而且还为有类似问题的读者提供了一些关闭。尽管您只能接受一个答案,但您可以选择对您认为有帮助的人进行投票。 (如果仍有问题,您可能需要编辑您的问题并提供更多详细信息。)(也返回您的其他问题并提供答案。谢谢!)

标签: python


【解决方案1】:

只需在except 块中返回您想要的字符串。

此外,当您向range() 提供错误类型的参数时引发的异常是TypeError,而不是ValueError

def sumsquares(n):
    try:
        return sum(i**2 for i in range(0,n+1))
    except TypeError as ve:
        return "Sorry, n must be a whole number!"

【讨论】:

  • 非常感谢。我试过你的代码,但失败了。如果我删除“ValueError as ve:”,它运行良好。怎么会出来:ValueError:对不起,n必须是整数!非常感谢!
  • 例外应该是TypeError
【解决方案2】:

如果 n 是浮点类型,可以添加一个简单的检查并返回如下

if n%1 != 0:
    return 'Float type'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-21
    • 2021-05-08
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    相关资源
    最近更新 更多