2016-09-26 97 views
-5

有人可以帮我理解为什么下面的函数不打印出字符串的反转?我究竟做错了什么?使用反向索引的字符串反转函数

def myReverse(data): 
    for index in range(len(data)-1, -1, -1): 
     return data[index] 
     print(data[index]) 

myReverse('blahblah') 
+5

'return' **退出函数**那里,然后外面;你只是返回当时的最后一个元素。 'print()'永远不会到达。 –

+3

您正在返回第一个循环。它永远不会达到打印功能。 –

+1

可能重复[在Python中反转字符串](http://stackoverflow.com/questions/931092/reverse-a-string-in-python) – ElmoVanKielmo

回答

2

当你的函数内的return呼叫时,控制又回到了父母(其执行的功能)return后忽略的功能范围内的代码。在你的情况下,这就是你的代码没有执行print的原因。

return之前移动包含print的行并将return移动到for循环的外部。你的代码应该可以工作。

建议: 有扭转使用::-1串简单的方法。例如:

>>> my_string = 'HELLO' 
>>> my_string[::-1] 
'OLLEH' 
+0

非常感谢。我明白现在发生了什么......解决了。 – Joshua

1

您在打印前正在返回。所以行print(data[index])永远不会被执行。

下面的代码将工作得很好。

def myReverse(data): 
    for index in range(len(data)-1, -1, -1): 
     print(data[index] , end = '') 

请注意,这是一个python3解决方案。 Python2中的print不能像那样工作。

所以,在python2中得到相同的效果,首先从__future__导入print

from __future__ import print_function 

然后,与上面相同。

+0

非常丰富,谢谢。 – Joshua

1

简介:一个for循环的执行将停止一旦遇到return陈述或break陈述或者有一个例外。

你有一个return声明这使得for循环停止(返回控制给调用者)只要声明在第一次迭代中遇到。

移动return语句for循环

+0

明白了。干杯! – Joshua