我的功能因某种原因没有定义?

时间:2017-07-27 22:30:31

标签: python function

我尝试编写一个函数,如果字符串中有整数,则返回true。但是,该功能显然没有定义。当我尝试运行代码时,我得到了

Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    integer(5)
NameError: name 'integer' is not defined

这是我的代码:

def integer(s):
z = ''
z = z + i
for i in s:
    if s == int:
        return True

4 个答案:

答案 0 :(得分:1)

在这种情况下欢迎使用Python:)

在Python中,空格和缩进是必不可少的。您的函数需要正确缩进,如下所示:

def integer(s):
    z = ''
    z = z + i
    for i in s:
        if s == int:
            return True

现在,你的功能并不是你想做的。 if s == int:不是正确的语法。 您可能想要更像if s in "0123456789":的内容,因为s是一个字符串,即使它在0-9之间,如果函数从未找到,请确保函数末尾为return False一个数字。如此:

def integer(s):
    for i in s:
        if s in "0123456789":
            return True
    return False

为确保您可以定义一个简单的函数,请尝试执行hello world程序,以确保您的定义正常工作。

答案 1 :(得分:1)

只是一些提示,所以它未定义的原因是因为你必须用python缩进...这相当于在其他语言中使用{}。

此外,你不应该使用像'int'这样的关键词来表示变量,关键词是已经被python定义的关键词,比如'def'......

祝你好运最好的语言:)

答案 2 :(得分:1)

好的,我也看到了各种错误,但我认为你试图在定义之前调用该函数。尝试这样的事情:

def integer(s):
    if isinstance(s, int):
        return True
    if isinstance(s, str):
        for i in s:
            if i in "0123456789":
                return True
    return False

print(integer(5)) # True
print(integer("123")) # True
print(integer("a212")) # True
print(integer("aaa")) # False

答案 3 :(得分:0)

我认为由于复制粘贴,缩进是错误的。

  1. 您正试图在之前访问变量i ,位于:z = z + i

  2. 您的函数可能无法返回任何内容,因为您只涵盖s实际包含int(return True)的情况。

    < / LI>

    除了这些技术问题之外,您不能将z用于任何事情,因此可以删除两个第一行。

    总之:

    def integer(s):
        for i in s:
            if s == int:
                return True
    
        return False # In case there is no integer.
    

    此方法可以正常工作,但是,您可以做得更好:

    def has_integer(s):
        return any(char.isdigit() for char in s)