我尝试编写一个函数,如果字符串中有整数,则返回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
答案 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)
我认为由于复制粘贴,缩进是错误的。
您正试图在之前访问变量i
,位于:z = z + i
。
您的函数可能无法返回任何内容,因为您只涵盖s
实际包含int(return True
)的情况。
除了这些技术问题之外,您不能将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)