这是来自Python书,代码抛出错误,应该这样做

时间:2017-10-08 21:48:00

标签: python function

我觉得我疯了 - 我正在学习Python,并从Al Sweigart的Automate the Boring Stuff中获取此代码。

def isPhoneNumber(text):
    if len(text) !=12:
        return False
    for i in range(0, 3):
        if not text[i].isdecimal():
            return False
    if text[3] != '-':
        return False
    for i in range(4, 7):
        if not text[i].isdecimal():
            return False
    if text[7] != '-':
        return False
    for i in range(8, 12):
        if not text[i].isdecimal():
            return False
    return True

print(isPhoneNumber("192-343-2345"))

结果应该并且确实返回错误,因为String对象没有isDecimal函数。我已经尝试在必要时将输入转换为int和String,但它没有解决任何问题。我没有把代码复制错误,所以我不确定发生了什么?

1 个答案:

答案 0 :(得分:2)

此代码在Python 3上运行良好。

你说Python 2中的字符串对象没有isdecimal函数是正确的。

如果在Python 2中使用isdigit,它将起作用。

def isPhoneNumber(text):
    if len(text) !=12:
        return False
    for i in range(0, 3):
        if not text[i].isdigit():
            return False
    if text[3] != '-':
        return False
    for i in range(4, 7):
        if not text[i].isdigit():
            return False
    if text[7] != '-':
        return False
    for i in range(8, 12):
        if not text[i].isdigit():
            return False
    return True

print(isPhoneNumber("192-343-2345"))