【发布时间】:2017-05-10 09:23:34
【问题描述】:
我被困在一个练习中,我需要在一个函数中反转一个随机字符串,只使用一个循环(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] 的语法无效
有什么建议吗?
【问题讨论】:
-
您是要反转字符串还是以相反的顺序打印字符?您的标题暗示前者,但您的代码似乎正在尝试执行后者。如果你想反转字符串 - 建立它然后 return 反转的字符串。如果需要,让调用代码打印它。大多数函数中不应包含
print。 -
您可以使用临时变量来构建反向字符串,而不是操作原始字符串
-
del修改对象,但不能修改字符串,必须创建一个新字符串。尝试创建一个少一个字符的新字符串:text = text[:-1] -
@Duncan 是真的——但毫无意义。 OP 没有充分的理由在构建反向的过程中尝试使字符串更小。
-
@Duncan 我不会说用于反转字符串的二次算法完全有效,尽管它当然是有效的。在每个阶段创建字符串的副本是昂贵的。
标签: python string function loops reverse