我想使用Loop&Function反转字符串。但是,当我使用以下代码时,它将再次输出完全相同的字符串。但是它假定反转字符串。我不知道为什么。
def reversed_word(word):
x=''
for i in range(len(word)):
x+=word[i-len(word)]
print(i-len(word))
return x
a=reversed_word('APPLE')
print(a)
问题来源:stackoverflow
如果查看调试语句的输出(函数中的print
),您会看到您正在使用索引-5至
-1`。
由于负索引指定到字符串末尾的距离,因此--5是A,-4是第一个P,依此类推。而且,由于您是将这些字符依次附加到原来为空的字符串中,因此您只需按字母在原始字符中出现的顺序添加它们即可。
要以其他顺序添加它们,您可以简单地使用len(word)-i-1
作为索引,并赋予序列(len-1).. 0
(而不是-len .. -1
,等于0 ..(len-1)
):
def reversed_word(word):
result = ""
for i in range(len(word)):
result += word[len(word) - i - 1]
return result
*另一个选择是意识到您根本不需要使用索引,因为遍历字符串一次可以给您一个字符。但是,由于它按顺序排列了这些字符,因此您需要通过为每个字符加上前缀而不是附加来调整构建反向字符串的方式: def reverse_string(word): result = "" for char in word: result = char + result return result
这将反向字符串(来自APPLE)构建为A,PA,PPA,LPPA和ELPPA。
*当然,您也可以完全使用 Pythonic: def reverse_string(word): return "".join([word[i] for i in range(len(word), -1, -1)])
这使用列表推导来创建原始字符串中的字符列表(以相反的顺序),然后仅将该列表连接到单个字符串中(使用空分隔符)。
也许不是我上课时要交的东西(除非我想让标记烦恼),但是您应该意识到,这就是专业的Pythonista通常解决问题的方式。
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。