2017-05-03 74 views
1

我不明白爲什麼我的代碼不起作用。瞭解For循環語句中的錯誤Python 3

的代碼是:

def trans(old): 
    length = len(old) 
    new = [] 
    new = old 
    for i in range(0,length): 
     print(old[length-i-1]) 
    for i in range(0,length): 
     new[i] = old[length-i-1] 
     print("new:",new[i]," [i]:",i," old:",old[length-i-1]," length- 
     i-1:",length-i-1) 
    ihavenoideawhatimdoing = " ".join(new) 
    return new 

指令:
1. DEF反式(舊):輸入句子(old)
2.長度(LEN):取在句子元素的數目
new = old是爲相同尺寸的容器製作新詞
4.第一個for loop =我想看原文句子中的詞倒退
5.我的問題是在第二個for循環中。看到輸出
6.隨之而來的便是與我解決,但問題不是解決問題我有

Output

輸入一句:「請幫我解決這個」

我沒有任何標籤爲下一批單詞,但它應該是:
舊(長度0-1) - >舊(5-0-1) - >舊(4):此
舊(3):解答
old(2):me
old(1):help
老(0):請現在

,有什麼玄乎的是,在未來for聲明的長度-I-1 = 1,其中的而不是「幫助」,這是「解決」。

這兩個代碼都很熟悉,所以我被困在還有什麼可能是錯誤的。

+0

'新= old'使得名字'new'指向同一個對象'old'。所以如果你改變一個的內容,另一個也會改變。 – RemcoGerlich

+0

它不只是將'old'的內容分配給'new'?所以*任何*變成'新'適用於'舊'? 編輯:剛剛看到重複的問題。感謝您的幫助〜 – Monxstar

+0

@Monxstar:'='永遠不會複製任何東西,它只是讓左邊的名稱指向右邊的值。因爲它們都指向相同的東西,所以兩者都可以看到更改(但它仍然只有一個對象正在更改)。 'new = list(old)',因爲AChampion表示會用'old'的內容創建一個新列表。 – RemcoGerlich

回答

0

使用此:

def trans(old): 

    new = old.split(" ") 
    new_str = "" 
    for i in reversed(new): 
     new_str = new_str + " " + i 
    print new_str