首页 > 解决方案 > for 循环中的范围为 1?

问题描述

我正在阅读使用 python 自动化无聊的东西的书,并遇到了他编写的用于在文档中查找电话号码的代码。

电话号码格式为(12个字符):123-456-7890

为什么代码检查文本长度是否为 12?但是python不是从0开始计数的,所以它会寻找13的长度吗?

同样,他想检查前三个数字是否为数字,但他使用了一个范围(0, 3)。这不检查前 4 位数字,包括不是数字的连字符吗?

谢谢您的帮助。

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

标签: pythonloopsfor-loop

解决方案


len()返回字符串的实际长度。想想看,长度为 0 ( "") 的字符串也是存在的。

range(start, end)的最后一个值为end-1。数字 2 在 的范围内,1-3数字 3 在 的范围内3-5。包含底部和独占上界。


推荐阅读