while循环结合字符串切片计算字符串长度的运行原理是什么?
代码逻辑解释
前置基础规则
- Python 字符串切片语法
str[start:]表示取从start索引位置开始,一直到字符串末尾的所有字符;如果start的值大于等于字符串的总长度,会返回空字符串 - Python 中进行条件判断时,空字符串会被判定为
False,非空字符串会被判定为True
你提供的代码完整内容如下:
str='xyz' counter=0 while str[counter:]: counter+=1 print(counter)
完整执行流程
以示例中的字符串xyz为例,它的字符对应索引为:0→x、1→y、2→z,总长度为3,循环逐轮执行逻辑如下:
- 初始状态:
counter = 0 - 第一轮判断:
str[0:]返回xyz,非空为True,进入循环,counter自增为1 - 第二轮判断:
str[1:]返回yz,非空为True,进入循环,counter自增为2 - 第三轮判断:
str[2:]返回z,非空为True,进入循环,counter自增为3 - 第四轮判断:
str[3:]的起始索引3已经超过字符串最大索引2,返回空字符串,判定为False,循环终止 - 最终打印counter的值3,正好就是该字符串的长度
额外说明
这种写法本质是利用Python的隐式布尔转换简化了代码,和显式写while len(str[counter:]) > 0:的逻辑完全一致,不需要额外调用len做长度判断就可以实现循环终止的效果。
内容的提问来源于stack exchange,提问作者Yash Wani
相关产品推荐
相关产品推荐

