我遇到了一个练习,我需要在一个函数中使用一个循环(for循环或while?)来反转一个随机字符串。
我不能在这里使用".join(reversed(string))
或string[::-1]
方法,所以这有点棘手。
我的代码看起来像这样:
def reverse(text):
while len(text) > 0:
print text[(len(text)) - 1],
del(text[(len(text)) - 1]
我使用,
打印同一行文本中的每个字母!
我在del(text[(len(text)) - 1]
有什么建议吗?
答案 0 :(得分:5)
Python字符串不可变,因此您无法使用del
语句删除字符。但是,您可以在循环原始字符串时构建新字符串:
def reverse(text):
rev_text = ""
for char in text:
rev_text = char + rev_text
return rev_text
reverse("hello")
# 'olleh'
答案 1 :(得分:2)
问题是你不能在python中的字符串上使用del
。
但是这段代码在没有del的情况下工作,希望能够解决这个问题:
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
答案 2 :(得分:1)
Python字符串是不可变的。你不能在字符串上使用del。
text = 'abcde'
length = len(text)
text_rev = ""
while length>0:
text_rev += text[length-1]
length = length-1
print text_rev
希望这有帮助。
答案 3 :(得分:0)
这是我尝试使用装饰器和for循环。将所有内容放在一个文件中。
实施细节:
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:
@reverse
def echo_alphabets(word):
return ''.join(word)
echo_alphabets('hello')
# olleh
示例2:
@reverse
def echo_words(words):
return words
echo_words([':)', '3.6.0', 'Python', 'Hello'])
# ['Hello', 'Python', '3.6.0', ':)']
示例3:
@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]