def my_isdigit(str):
if digit in str >0 and str is int:
print "True"
else:
print "False"
我正在尝试创建一个执行isdigit
所做功能的函数,即如果字符串中的所有字符都是数字并且至少有一个字符,则返回true,否则返回false。每次我尝试使用它时它告诉我“数字”没有定义。我很困惑,它要求我改变...帮助将不胜感激!
答案 0 :(得分:4)
该函数查看每个字符,如果全部都是数字,则只返回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
,因为' - '不是数字。
答案 1 :(得分:2)
您可以使用正则表达式
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
答案 2 :(得分:2)
@Martijn Pieters建议如何修复你的版本;这里的完整性是一种更加“pythonic”(和有效)的方法解决问题。
def my_isdigit(str):
return all('0'<=c<='9' for c in str)