【问题标题】:Code returns "none" on codecademy and im not sure why代码在 codecademy 上返回“无”,我不知道为什么
【发布时间】:2017-06-04 08:03:08
【问题描述】:

说明:

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

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

否则,函数应该返回“Nope”

我已经完成了第一个任务,我以为我完成了任务,然而

“当您的函数返回 'None' 而不是 'Nope' 时,您的函数似乎在输入 True 时失败”

这是我的代码:

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

从我在其他模块中看到的情况来看,codecademy 对此进行了测试,我的论点为“1”,这样 if 语句通过,将返回 (argument) 的绝对值,然后我将通过模块。 (我添加了 print(argument) 用于测试目的,控制台不输出任何内容。)

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

编辑:它在控制台中打印“None”,而不是“Nope”。忘了说这个了。

【问题讨论】:

  • 您在else 子句中没有return 语句。您的函数打印字符串'Nope',而不是返回它。
  • 该函数不打印任何内容,“无”,而不是“不”,如果我不清楚,请见谅
  • 打印不等于返回。
  • 我想我得回去看看,我很困惑哈哈。无论哪种方式,我都在 else 语句中返回并且我通过了,谢谢 :^)

标签: python function python-3.x return


【解决方案1】:

在 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 输出了所有未收集到变量中的函数返回值。

【讨论】:

    【解决方案2】:
    def distance_from_zero(num):
        if type(num) == int or type(num) == float:
            return abs(num)
        else:
            return "Nope"
    

    【讨论】:

    • def distance_from_zero(num): if type(num) == int or type(num) == float: return abs(num) else: return "Nope"
    猜你喜欢
    • 1970-01-01
    • 2013-08-23
    • 2015-06-01
    • 2018-01-05
    • 2012-12-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多