以下代码:
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)]作为输出。
答案 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)]
除了提供此输出之外没有其他目的 真正的问题是你想要输出什么?