Python字符串切片编程问题:如何编写程序输出以首字符开头的所有子串(从短到长)
解决Python字符串切片生成首字符开头子串的问题
嘿,我来帮你修正代码啦!你当前的问题是硬编码了切片的结束位置,比如stg[0:5]、stg[0:10],这既不通用(输入字符串长度不确定),还会出现空串的情况,完全不符合需求。
我们需要动态生成从首字符开始,长度从1到整个字符串长度的所有子串,按从短到长的顺序输出。这里有两种简单的实现方式:
方式一:循环逐个打印
直接遍历子串的长度,从1到字符串的总长度,每次截取前length个字符并打印:
stg = input("Please type in a string: ") # 遍历1到字符串长度的所有数值(range左闭右开,所以要+1) for length in range(1, len(stg) + 1): # 截取从开头到第length个字符的子串 print(stg[:length])
比如输入test时,循环会依次取length=1(stg[:1]即t)、length=2(te)、length=3(tes)、length=4(test),完美匹配示例需求。
方式二:先收集子串再统一输出
如果需要把所有子串先存储起来再输出,可以用列表推导式生成所有子串,再用换行符连接打印:
stg = input("Please type in a string: ") # 生成所有符合要求的子串 substrings = [stg[:i] for i in range(1, len(stg)+1)] # 用换行符连接并打印 print('\n'.join(substrings))
这个方式的输出效果和第一种完全一致,适合需要后续处理子串的场景。
内容的提问来源于stack exchange,提问作者User216345




