需要帮助理解这个Python代码

时间:2016-05-09 19:10:37

标签: python

以下代码:

def increment(n):
    return n+1

def square(n):
    return n**2

def findSequence(initial,goal):
    candidates = [(str(initial), initial)]
    for i in range(1, goal - initial + 1):
        newCandidates = []
    for (action, result) in candidates:
        for (a,r) in [(' increment',increment),(' square',square)]:
            newCandidates.append((action+a,r(result)))
            print (newCandidates)


findSequence(1,2)

输出:

[('1 increment', 2)]
[('1 increment', 2), ('1 square', 1)]

我理解这一部分: [(' 1增量',2),(' 1平方',1)]

但是这个怎么样:  [(' 1增量',2)]部分?

或为什么[(' 1增量',2)]部分也是我写的两倍:

newCandidates[0]

我得到[(' 1增量',2)]但是当我写newCandidates [0]时,我越界出错并且永远不会得到[(' 1增量',2 ),(' 1平方',1)]作为输出。

2 个答案:

答案 0 :(得分:1)

您的代码似乎的目标是显示元组列表,增量和电源操作的结果,初始值直到目标值。 在我看来,代码不正确,因为它只输出初始值的结果。如果要打印初始值和目标值之间的所有范围的值,请输入以下代码:

def increment(n):
    return n+1


def square(n):
    return n**2


def find_sequence(initial,goal):
    candidates = []
    for i in range(initial,goal):
        candidates.append((str(i), i))
    newCandidates = []
    for (action, result) in candidates:
        for (a,r) in [(' increment',increment),(' square',square)]:
            newCandidates.append((action+a,r(result)))
            print (newCandidates)


find_sequence(1,3)

此外,它打印一个复制的元素,因为打印是在指定的操作列表上进行的。如果你打印出一级打印(如下所示),则不会重复:

def increment(n):
    return n+1


def square(n):
    return n**2


def find_sequence(initial,goal):
    candidates = []
    for i in range(initial,goal):
        candidates.append((str(i), i))
    newCandidates = []
    for (action, result) in candidates:
        for (a,r) in [(' increment',increment),(' square',square)]:
            newCandidates.append((action+a,r(result)))

        print (newCandidates)


find_sequence(1,3)

答案 1 :(得分:0)

当使用参数初始和目标

调用时,此代码打印以下行
 [(initial +" increment",intitail+1)]
 [(initial +" increment",intitail+1),(initial +" square",intitail**2)]

除了提供此输出之外没有其他目的 真正的问题是你想要输出什么?