Python循环中字符未拼接到空字符串问题及修复求助
问题与修复方案
原代码与问题
inp='peter piper picked a peck of pickled peppers.' mod_str="" for char in range(-1,-(len(inp)+1)): mod_str+=inp[char] print(mod_str)
这段代码运行后输出为空字符串,循环内的字符未拼接到空字符串变量中,如何修复该问题?
预期输出
.sreppep delkcip fo kcep a dekcip repip retep
思路说明
尝试从最右侧的第一个负索引开始,遍历至对应字符串长度的负索引以得到目标输出。由于range函数不包含终止值,因此将长度值加1作为range的终止值(字符串的负索引范围为-1到-(字符串长度))。
问题原因与修复
问题出在range(-1, -(len(inp)+1))的参数上:range默认步长为正1,而起始值-1比终止值-(len(inp)+1)大(例如原字符串长度为41时,终止值是-42,-1 > -42),导致range生成的序列为空,循环根本没执行,所以mod_str始终是空字符串。
修复后的代码
给range添加步长参数-1,让索引从-1开始向左遍历:
inp='peter piper picked a peck of pickled peppers.' mod_str="" # 新增步长-1,实现从右到左遍历负索引 for char_idx in range(-1, -(len(inp)+1), -1): mod_str += inp[char_idx] print(mod_str)
更简洁的写法
Python中反转字符串可以直接用切片语法[::-1],无需手动循环,高效又简洁:
inp='peter piper picked a peck of pickled peppers.' print(inp[::-1])
内容的提问来源于stack exchange,提问作者Taniya Pal
相关产品推荐
相关产品推荐

