2013-01-09 100 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]