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

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

4

3 回答 3

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,因为 '-' 不是数字。

于 2013-10-13T23:05:58.663 回答
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
于 2013-10-13T23:11:55.893 回答
2

@Martijn Pieters 建议如何修复您的版本;为了完整起见,这里是解决问题的一种更“pythonic”(和有效)的方法。

def my_isdigit(str):
    return all('0'<=c<='9' for c in str)
于 2013-10-13T23:20:30.473 回答