创建一个函数来执行内置函数“isdigit”的功能

时间:2013-10-13 23:04:00

标签: python string function python-2.7 if-statement

def my_isdigit(str):
    if digit in str >0 and str is int:
        print "True"
    else:
        print "False"

我正在尝试创建一个执行isdigit所做功能的函数,即如果字符串中的所有字符都是数字并且至少有一个字符,则返回true,否则返回false。每次我尝试使用它时它告诉我“数字”没有定义。我很困惑,它要求我改变...帮助将不胜感激!

3 个答案:

答案 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)