0

这是来自 codecademy,关于评论:内置函数:

def distance_from_zero(n):
    return n
    if type(n) == int or type(n) == float:
        print "The absolute value of the input is ", abs(n)
    else:
        print "Not an integer or float!"

错误代码是:糟糕,再试一次!您的函数在返回 -10 而不是 10 时似乎在 -10 上失败。

我想知道,10号是怎么出来的?我的代码有什么问题?

4

4 回答 4

2

您只是返回参数,因此它不会返回绝对值。因此,如果你给它 -10 作为参数,它会吐出 -10,而答案应该是 10。要解决这个问题,你需要通过以下方式返回参数的绝对值:

return abs(n)

您还应该将 return 语句移到该if部分的末尾,这样您就不会尝试返回非数字的绝对值。

def distance_from_zero(n):

    if type(n) == int or type(n) == float:
        print "The absolute value of the input is ", abs(n)
        return abs(n)
    else:
        print "Not an integer or float!"
于 2013-07-12T00:07:57.113 回答
1

当一个函数返回一些东西时,它会立即中断。所以你的函数所做的就是返回你传递给它的数字。

你会想要return abs(n)在你的打印声明之后。

此外,要检查类型,您应该使用isinstance(). 要在此处使用它,您可以执行以下操作:

def distance_from_zero(n):
    if isinstance(n, (int, float)):
        n = abs(n)
        print "The absolute value of the input is ", n
        return n
    else:
        print "Not an integer or float!"

请记住,Codecademy 检查代码的方式有点“狡猾”。Codecademy 上有一个内置的论坛系统,您可以查看某些练习。要通过练习,您可能需要使用type()而不是isinstance(),就像您所做的那样。

于 2013-07-12T00:07:21.203 回答
0

你应该试试:

def distance_from_zero(n):
    if type(n) == int or type(n) == float: 
        return abs(n)
    else:
        return "Nope"
于 2015-09-03T18:22:07.820 回答
-1
def distance_from_zero(n):

    if type(n) == int or type(n) == float:
        print "The absolute value of the input is ", abs(n)
        return abs(n)
    else:
        return "Nope"
于 2014-09-21T19:02:42.497 回答