2017-05-03 78 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