Python函数中substr在短字符串场景的作用及循环逻辑疑问
字符串拷贝函数的substr作用解析
问题描述
该函数的功能为:获取给定字符串前2个字符的n(非负整数)份拷贝;若字符串长度小于2,则返回整个字符串的n份拷贝。
请问有人能解释第12行的substr起到什么作用吗?我理解当字符串长度大于2时第8行substr的工作原理,但不清楚当字符串长度小于2时它的作用。
另外,当输入字符串为长度1的'p'时,是否substr无关紧要,仅for循环会执行3次(因最后一行传入参数为3)?
代码示例
def substring_copy(str, n): """ Method 2 """ f_lenght = 2 if f_lenght > len(str): # 如果字符串长度小于2 f_lenght = len(str) # 将目标长度设为字符串本身的长度 substr = str[:f_lenght] # 截取目标长度的子串 result = "" for i in range(n): result = result + substr return result print ("\nMethod 2:") print(substring_copy('abcdef', 2)) print(substring_copy('p', 3))
解答
第12行
substr的核心作用
第12行的substr是循环拼接的基础重复单元:不管原字符串长度如何,它都提前存储了我们需要重复n次的目标片段。- 当原字符串长度≥2时,
substr是字符串的前2个字符(比如输入'abcdef'时,substr为'ab'); - 当原字符串长度<2时,
substr就是整个字符串(比如输入'p'时,substr为'p')。
循环中每次将这个单元拼接到result,最终就能得到重复n次的结果。
- 当原字符串长度≥2时,
输入
'p'时substr的必要性substr完全不是无关紧要的,它是循环拼接的核心内容:
当输入'p'时,代码会先把f_lenght修改为1(因为2 > len('p')),接着substr = 'p'[:1]得到'p'。循环执行3次时,每次都会把'p'拼到result中,最终得到'ppp'。如果没有substr,循环里就没有可拼接的内容,最终只会返回空字符串。
内容的提问来源于stack exchange,提问作者from stackoverflow import all
相关产品推荐
相关产品推荐

