如何在调用函数时修复“NameError:name'thing'未定义”?

时间:2013-07-14 17:25:32

标签: python function

我正在从代码学院学习python,我正在尝试完成他们的审核任务。 我应该定义一个函数,然后设置一个if / else循环来检查我得到的输入类型,然后返回int / float的绝对值或错误消息。

我试着看一下类似的问题,但我不明白那些代码比我能理解的O_O复杂得多。我再次查看了功能模块课程,但我认为我正确地遵循了功能模式?在调用函数之前是否应该有一个额外的行?我试图继续前进,但后来我在其他练习中得到了同样的错误信息。

我很感激任何回复:)

def distance_from_zero(thing):
     thing = input 
     if type(thing) != int or float: 
         return "Not an integer or float!"
     else:
         return abs(thing)
distance_from_zero(thing)

3 个答案:

答案 0 :(得分:2)

您是否尝试使用输入函数从用户获取值? 如果是这样,你必须为它添加括号:

thing = input()
# If you're using python 2.X, you should use raw_input instead:
# thing = raw_input()

此外,如果您正在尝试这样做,则不需要输入参数。

如果你的意思是input是一个参数,那么你在尝试使用变量之前就会尝试使用变量。 distance_from_zero(thing)无法正常工作,因为thing尚未在您的函数之外定义,因此您应首先定义该变量或使用litteral值调用该变量:

thing = 42
distance_from_zero(thing)
# or
distance_from_zero(42)

答案 1 :(得分:1)

您没有定义thing。请尝试

def distance_from_zero(thing): 
     if type(thing) != int or float: 
         return "Not an integer or float!"
     else:
         return abs(thing)

thing = 1
distance_from_zero(thing)

或者您的意思是这样,接受用户输入?

def distance_from_zero():
     thing = int(input())
     if type(thing) != int or float: 
         return "Not an integer or float!"
     else:
         return abs(thing)
distance_from_zero()

您的代码if type(thing) != int or float:将永远转到True,因为它是if (type(thing) != int) or float。将其更改为if not isinstance(thing, (int, float)):

答案 2 :(得分:1)

将它传递给distance_from_zero函数时,

thing未定义?

def distance_from_zero(input):
     if type(input) != int or float: 
         return "Not an integer or float!"
     else:
         return abs(input)

thing = 5
distance_from_zero(thing)