开发者社区> 问答> 正文

无法使用“ for”循环功能反转文本

我想使用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

展开
收起
is大龙 2020-03-24 20:33:38 439 0
1 条回答
写回答
取消 提交回答
  • 如果查看调试语句的输出(函数中的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

    2020-03-24 20:33:45
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载