为何这段Python字符串反转代码输出为'olleh'而非'hello'?
代码输出'olleh'而非'hello'的原因解释
先看这段代码:
startmsg = "hello" endmsg = "" for i in range(0,len(startmsg)): endmsg=startmsg[i] + endmsg print(endmsg)
这段代码的核心问题是字符串拼接顺序搞反了,最终输出的是原字符串的反转结果:
- 初始状态:
startmsg为"hello",endmsg是空字符串 - 循环会遍历
startmsg的每个字符,索引从0到4(对应字符'h'、'e'、'l'、'l'、'o') - 关键的拼接逻辑:每次循环都是把当前取到的字符放到现有
endmsg的前面,而非末尾:- 第1次循环:
endmsg = 'h' + ''→ 结果为'h' - 第2次循环:
endmsg = 'e' + 'h'→ 结果为'eh' - 第3次循环:
endmsg = 'l' + 'eh'→ 结果为'leh' - 第4次循环:
endmsg = 'l' + 'leh'→ 结果为'lleh' - 第5次循环:
endmsg = 'o' + 'lleh'→ 结果为'olleh'
- 第1次循环:
如果想得到预期的'hello',只需把拼接顺序改成endmsg = endmsg + startmsg[i],这样每次都把新字符追加到endmsg的末尾,实现正向累加。
内容的提问来源于stack exchange,提问作者Dinko Spahija
相关产品推荐
相关产品推荐

