使用循环反转python中的字符串

Reversing a string in Python using a loop?

本问题已经有最佳答案,请猛点这里访问。

我陷入了一个只使用循环(for loop还是while?)反转函数中随机字符串的练习中。.

我不能在这里使用".join(reversed(string))string[::-1]方法,所以有点棘手。

我的代码如下所示:

1
2
3
4
def reverse(text):
    while len(text) > 0:
        print text[(len(text)) - 1],
        del(text[(len(text)) - 1]

我用,在同一行中打印出每一个文本字母!

我在del(text[(len(text)) - 1]上得到无效语法

有什么建议吗?


python字符串是不可变的,因此不能使用del语句来就地删除字符。但是,您可以在循环遍历原始字符串时构建新字符串:

1
2
3
4
5
6
7
8
def reverse(text):
    rev_text =""
    for char in text:
        rev_text = char + rev_text
    return rev_text

reverse("hello")
# 'olleh'


问题是不能在python中的字符串上使用del。但是,此代码在没有del的情况下工作,并且有望实现以下功能:

1
2
3
4
5
6
7
def reverse(text):
    a =""
    for i in range(1, len(text) + 1):
        a += text[len(text) - i]
    return a

print(reverse("Hello World!")) # prints: !dlroW olleH


python字符串是不可变的。不能对字符串使用del。

1
2
3
4
5
6
7
8
text = 'abcde'
length = len(text)
text_rev =""
while length>0:
   text_rev += text[length-1]
   length = length-1

print text_rev

希望这有帮助。


这里是我使用一个装饰器和一个for循环的尝试。把所有东西放在一个文件里。

实施细节:

1
2
3
4
5
6
7
def reverse(func):
    def reverse_engine(items):
        partial_items = []
        for item in items:
            partial_items = [item] + partial_items
        return func(partial_items)
    return reverse_engine

用途:

例1:

1
2
3
4
5
6
@reverse
def echo_alphabets(word):
    return ''.join(word)

echo_alphabets('hello')
# olleh

例2:

1
2
3
4
5
6
@reverse
def echo_words(words):
    return words

echo_words([':)', '3.6.0', 'Python', 'Hello'])
# ['Hello', 'Python', '3.6.0', ':)']

例3:

1
2
3
4
5
6
7
8
@reverse
def reverse_and_square(numbers):
    return list(
        map(lambda number: number ** 2, numbers)
    )

reverse_and_square(range(1, 6))
# [25, 16, 9, 4, 1]