Python 创建一个函数来完成内置函数“的功能”;isdigit“;做
我试图创建一个函数,该函数执行Python 创建一个函数来完成内置函数“的功能”;isdigit“;做,python,string,function,python-2.7,if-statement,Python,String,Function,Python 2.7,If Statement,我试图创建一个函数,该函数执行isdigit的操作,即如果字符串中的所有字符都是数字且至少有一个字符,则返回true,否则返回false。每次我尝试使用它,它告诉我“数字”没有定义。我对它要求我改变什么感到困惑。。。非常感谢您的帮助 函数查看每个字符,如果所有字符都是数字,则只返回True: def my_isdigit(str): if digit in str >0 and str is int: print "True" else: p
isdigit
的操作,即如果字符串中的所有字符都是数字且至少有一个字符,则返回true,否则返回false。每次我尝试使用它,它告诉我“数字”没有定义。我对它要求我改变什么感到困惑。。。非常感谢您的帮助 函数查看每个字符,如果所有字符都是数字,则只返回True
:
def my_isdigit(str):
if digit in str >0 and str is int:
print "True"
else:
print "False"
或者使用字符串比较:
digits = '0123456789'
def isdigit(inputstring):
if not inputstring: return False
for char in inputstring:
if char not in digits:
return False
return True
def isdigit(输入字符串):
如果不是inputstring:返回False
对于inputstring中的字符:
如果不是“0”,则可以使用正则表达式
def isdigit(inputstring):
if not inputstring: return False
for char in inputstring:
if not '0' <= char <= '9':
return False
return True
因为有一些问题,这里有一些简单的测试:
def my_isdigit(str):
return re.search("[^\d]", str) is None
@Martijn Pieters建议如何修复您的版本;为了完整起见,这里有一种更为“pythonic”(和高效)的方法来解决这个问题
print my_isdigit("02211")
> True
print my_isdigit("022x01")
> False
print my_isdigit("a02201")
> False
def my_isdigit(str):
返回所有('0'感觉有点像用加农炮射击苍蝇:)我认为不会捕获“至少有一个字符”条件。一个有效的正则表达式应该是^\d+$
。这与文本的开头和结尾之间至少有一个数字字符相匹配。它需要更改为类似于返回bool(re.search(“^\d+$”,str))
的内容才能真正匹配内置的isdigit
@SethMMorton无需执行bool(),但我同意使用“\d”而不是0-9会更好谢谢您的帮助!我需要定义数字吗?“int”不起作用吗?我正在尝试创建一个与现有函数isdigit完全相同的函数…@user2784808:str is int
将检查str
是否是对int
类型的引用,这与它是否是只包含数字的字符串无关。@user2784808:而不是自己定义数字,您可以从字符串
模块导入它们:从字符串导入数字
如果您担心性能,在集合
中测试成员身份可能会快一点(但可能不会快很多,因为只有10个值)。@Blckknght:这里故意不从字符串
导入。我怀疑OP是否关心这里的速度。我会满足于先理解发生了什么。我认为您不需要[]
中的全部
。生成器表达式的工作原理与列表理解一样好,可能不会占用太多内存(在这种情况下可能不是问题,但总体上是个好主意)。@Blckknght:修复了,谢谢。pythonic解决方案是使用.isdigit()
:-P我省略了这个版本,因为我认为OP无法学习生成器表达式的工作原理。
def my_isdigit(str):
return all('0'<=c<='9' for c in str)