2013-01-09 85 views
3

這是一個簡單的程序來反轉字符串: 當我輸入一個字符串時,說'你好',我得到的輸出爲'olle'。 最後一個字符未顯示。Python'字符串反轉'程序

word=raw_input('Enter any word:') 
    l=len(word) 
    n=l-1 
    reverse="" 
    while True: 
      n-=1 
      if n>=1 or n==0: 
      get=word[n] 
      reverse=str(reverse) 
      reverse=reverse+get 
      continue 
      elif n!=0: 
      print('\n The word:',reverse) 
      break 

回答

5

簡單程序反轉字符串:

print word[::-1] 
+1

不是技術上的答案,但它提供的笑了給予好評。 – glenatron

+0

我不會說這不是一個答案.. :) – 88dax

1
>>> ''.join(reversed('hello')) 
'olleh' 
+0

如果你要離開OP的方法(因此他提出的實際問題),@ eumiro的'str [:: - 1]'是效率更高。 – OJFord

5

在我看來,就好像你的問題是,你正在做這件事:

n=l-1 
reverse="" 
while True: 
     n-=1 

這意味着你正在從減去在你做任何事情之前兩次,這意味着你的單詞的第一個字母在你撤銷之前被刪除。

嘗試刪除這些行中的第一行。

+0

'n = l-1'是從字符串的長度中減去1。 因爲'hello','o'會在第四個位置,而字符串的長度是5. 因此,它會導致'超出範圍的異常' – 88dax

+0

是的,但是你在循環內再次執行相同的操作_在你首先從單詞中取出任何字母之前,這就是爲什麼你的反轉字符串的第一個字母是該單詞的第二個字母。 – glenatron

0

你的問題是你在你的循環開始時遞減n而不是結束。也就是說,要做到這一點,有更多更短的Pythonic方法。也許嘗試

word[::-1]