Python:文の中の単語を全部逆さまに並べますが、単語のアルファベット順は変わりません


朝、親友の未央のブログ「googleのテストエンジニアの筆記試験問題」を見て、内容は以下の通りです.
      google         ,    :

      ,      ,      :

    ,             ,          。  ,This is a real world,     world real a is this.
  彼はC++で1つの関数をよくカプセル化してこの機能を実現しました.以下のように、詳細はアクセスしてください.http://www.itsbug.com/?p=208
C++バージョン:
#include 

#include 

using namespace std;

const char *Reverse(char *src);

char *pDst=NULL;

int main(int argc,char **argv)

{

    cout << "please input your sentense:" << endl;

    char pSrc[100];

    memset(pSrc,0,100);

    cin.getline(pSrc,100);

    cout << Reverse(pSrc) << endl;

    if (pDst != NULL)delete pDst;

    return 0;

}

const char *Reverse(char *pSrc)

{

    char *pPos = pSrc;

    int iLen=strlen(pSrc);

    pDst = new char[iLen + 1];

    memset(pDst,0,iLen+1);

    int iCurrentPos = 0;

    int iPrePos = 0;

    while (pPos)

    {

        if (pSrc[iCurrentPos] <= 'z' && pSrc[iCurrentPos] >= 'A')

        {

            iCurrentPos++;

            pPos ++;

            continue;

        }

        else

        {

            int iDistance =iCurrentPos-iPrePos;

            for (int i=0;i < iDistance;i++)

            {

            pDst[iLen - iCurrentPos+i] = pSrc[iPrePos+i];

            }

            pDst[iLen-iCurrentPos-1]=pSrc[iCurrentPos];

            iCurrentPos ++;

        }

        iPrePos = iCurrentPos;

        if (*pPos == '\0')

        {

            break;

        }

        else

        {

            pPos ++;

        }

    }

    return pDst;

}

    memset(pDst,0,iLen+1);

    int iCurrentPos = 0;

    int iPrePos = 0;

    while (pPos)

    {

        if (pSrc[iCurrentPos] <= 'z' && pSrc[iCurrentPos] >= 'A')

        {

            iCurrentPos++;

            pPos ++;

            continue;

        }

        else

        {

            int iDistance =iCurrentPos-iPrePos;

            for (int i=0;i < iDistance;i++)

            {

            pDst[iLen - iCurrentPos+i] = pSrc[iPrePos+i];

            }

            pDst[iLen-iCurrentPos-1]=pSrc[iCurrentPos];

            iCurrentPos ++;

        }

        iPrePos = iCurrentPos;

        if (*pPos == '\0')

        {

            break;

        }

        else

        {

            pPos ++;

        }

    }

    return pDst;

}

  考えてみると、この機能をpythonで実現すると便利かもしれませんが、大まかな考え方は以下の通りです.
  1.文中の単語を抽出してリストに入れる.
  2.listを反転する.
  3.反転したリストを出力します.
 次のようになります.
pythonバージョン:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
   
def str_reverse(str_src):
    '''
    Function:    ,    TAB     
    Input:NONE
    Output: NONE
    author: socrates
    blog:http://blog.csdn.net/dyx1024
    date:2012-02-18
    ''' 
    #       ,          list      
    str_dst = str_src.split()
    
    #  list
    str_dst.reverse()
    
    #      list  
    return str_dst

if __name__ == '__main__': 
    
     #  list,    
     for str_out in str_reverse(raw_input("please input your sentense:")):
         print str_out,

テスト:
[root@kevin python_test]# ./str_test.py
please input your sentense:This is a real world
world real a is This
[root@kevin python_test]# ./str_test.py
please input your sentense:        
        
[root@kevin python_test]#