代码返回"无"在codecademy上,我不知道为什么

时间:2017-01-19 14:56:25

标签: python function python-3.x return

说明:

  

首先,用一个参数定义一个名为distance_from_zero的函数(选择你喜欢的任何>参数名称)。

     

如果参数的类型是int或float,则函数应返回>函数输入的绝对值。

     

否则,该函数应返回" Nope"

我完成了第一项任务而我认为我已完成任务,但是

"当函数返回时,您的函数似乎在输入时失败'无'而不是' Nope'

这是我的代码:

Accept header

从我在其他模块中看到的,codecademy测试这个,我的论点是" 1",这样if语句通过,将返回(参数)的绝对值,然后我将通过模块。 (为了测试目的,我添加了print(参数),控制台什么也没输出。)

我是否误解了返回的工作原理?为什么这不起作用? 我感谢所有回复! :)

编辑:它打印"无",不" Nope"在控制台中。忘了提这个。

2 个答案:

答案 0 :(得分:0)

在Python中,如果return不是显式的,则变为None。试试这个:

def distance_from_zero(argument):
    if type(argument) == int or type(argument) == float:
        print(abs(argument))
    else:
        print("Nope")

> f = distance_from_zero(-4234)
4234
> f
None

正如您可以看到f的None,这是因为print正在输出到控制台而没有主动返回内容。相反,请尝试使用return语句:

def distance_from_zero(argument):
    if type(argument) == int or type(argument) == float:
        return abs(argument)
    else:
        return "Nope"

> distance_from_zero(123)
123 
# here, because you're not assigning the value returned to a variable, it's just output.
> f = distance_from_zero(-4234)
> f
4234
> f = distance_from_zero('cat')
> f
'Nope'

知道这个原因也很重要:

return abs(argument)
print(argument) 
由于print调用,打印到控制台的

。不执行块中return之后的任何内容。您看到输出打印到屏幕的原因是因为在解释器中Python输出的所有函数返回值都没有收集到变量中。

答案 1 :(得分:0)

def distance_from_zero(num):
    if type(num) == int or type(num) == float:
        return abs(num)
    else:
        return "Nope"