如何用Python3通过循环扩展单词?新手作业求助
问题分析与改进思路
原代码的核心问题是没有根据字符的位置重复对应次数,只是简单把每个字符拼接一次加'-',同时循环内的print会输出中间过程,而非最终结果。
改进方向:
- 给每个字符匹配它在单词中的位置序号(从1开始),让字符重复对应次数——比如第1个字符重复1次,第2个重复2次,以此类推
- 先把所有处理后的字符段存到列表里,最后用'-'连接,避免末尾多出一个'-'
- 用
enumerate直接获取字符的位置,替代冗余的index变量
修正后的代码:
inp = input("Give me a word to extend: ") segments = [] # enumerate的start参数设为1,让序号从1开始 for idx, letter in enumerate(inp, start=1): # 字符重复idx次,添加到列表 segments.append(letter * idx) # 用'-'连接所有段,得到最终结果 ext_inp = '-'.join(segments) print(ext_inp)
代码解释:
enumerate(inp, start=1):遍历输入单词时,同时拿到从1开始的位置序号idx和对应字符letterletter * idx:把字符重复idx次,比如第2个字符'o'就变成'oo''-'.join(segments):用'-'把所有处理好的字符段连接成字符串,自动避免末尾多余的'-'- 最后只打印最终结果,而非循环内的中间值
测试输入monkey时,会输出m-oo-nnn-kkkk-eeeee-yyyyyy,完全符合预期。
内容的提问来源于stack exchange,提问作者idaloof
相关产品推荐
相关产品推荐

