1. 程式人生 > >字串反轉(按單詞正序輸出),保留並列印所有空格。

字串反轉(按單詞正序輸出),保留並列印所有空格。

這是一個作業,用了好久寫出來的,寫完後,感覺我的思維方式不適合學程式設計。。。

#字串按單詞反轉(必須保留所有空格)
a='Jane love China!'#把字串存入列表
#a=input('請輸入字串(用引號引起來,,,):')
li=list()#用來存放空格所在位置的列表
n=-1
for i in a:#遍歷字串
   # print i
    b=i.isspace()#判斷i是不是空格
    if b==True:
        n=a.index(' ',n+1)#從上一次搜尋結果開始
        #print n
        li.append(n)#將空格位置索引加入列表
li.append(len(a))#將總的字元數加入列表
print li#列印空格位置
le_li=len(li)
n=0
while n<le_li:
    print a[li[le_li-n-2]+1:li[le_li-n-1]],#打印出每個單詞(有一個問題,就是標點符號算在單詞內了)
    if n<le_li-1:
        print a[li[n]],     #(列印空格,位置是除li最後一個元素的元素)
    n+=1
if n==le_li:
        print a[0:li[le_li-n]]#列印最前面的單詞

老師寫的:

def resverse(str_list,start,end):
    while start<end:
        str_list[start],str_list[end]=str_list[end],str_list[start]
        start=start+1
        end=end-1


setence='I love China!'
str_list=list(setence)
i=0
while i<len(str_list):
    if str_list[i]!=' ':
        start=i
        end=start+1
        while (end<len(str_list)) and (str_list[end]!=' '):
            end+=1
        resverse(str_list,start,end-1)
        i=end
    else:
        i+=1
str_list.reverse()
print(' '.join(str_list))