2016-09-26 77 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