def my_isdigit(str):
if digit in str >0 and str is int:
print "True"
else:
print "False"
我正在尝试创建一个函数,isdigit
如果字符串中的所有字符都是数字并且至少有一个字符,则返回 true,否则返回 false。每次我尝试使用它时,它都会告诉我“数字”没有定义。我对它要求我改变什么感到困惑......我们将不胜感激!
def my_isdigit(str):
if digit in str >0 and str is int:
print "True"
else:
print "False"
我正在尝试创建一个函数,isdigit
如果字符串中的所有字符都是数字并且至少有一个字符,则返回 true,否则返回 false。每次我尝试使用它时,它都会告诉我“数字”没有定义。我对它要求我改变什么感到困惑......我们将不胜感激!
该函数查看每个字符,并且仅True
在所有字符都是数字时才返回:
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):
if not inputstring: return False
for char in inputstring:
if not '0' <= char <= '9':
return False
return True
不幸的是,你的功能很遥远。您没有定义digit
,也没有遍历str
. int
是一种类型;字符串(甚至单个字符)不是整数;并且类似的字符串-42
可以转换为整数,但会'-42'.isdigit()
返回False
,因为 '-' 不是数字。
您可以使用正则表达式
def my_isdigit(str):
return re.search("[^\d]", str) is None
由于这里有一些问题,这里是一些简单的测试:
print my_isdigit("02211")
> True
print my_isdigit("022x01")
> False
print my_isdigit("a02201")
> False
@Martijn Pieters 建议如何修复您的版本;为了完整起见,这里是解决问题的一种更“pythonic”(和有效)的方法。
def my_isdigit(str):
return all('0'<=c<='9' for c in str)