Python帮助,打印列表中的值

时间:2012-01-29 16:51:57

标签: python list variables printing primes

我有一个程序可以获取用户编号,查找到那一点的所有素数并将它们存储在列表中,现在我需要从该列表中查看它们中的两个是否一起添加到用户输入,这是我似乎无法正确的地方。我会把最后一点放在我需要帮助的地方。

    num = int(raw_input('enter a number: '))
    b = [2, 3, 5, 7, 11, #... etc up to the prime before the users number]
    for a in b:
        for c in b:
            if c + a = num
            print num, '=', a, '+', c
            break

但是,如果我的用户输入为8,则打印出来:

8 = 3 + 5

8 = 5 + 3

我怎样才能让它只打印一个值?

2 个答案:

答案 0 :(得分:4)

你只是打破内循环,而不是外循环。

num = int(raw_input('enter a number: '))
b = [2, 3, 5, 7, 11]
for a in b:
    for c in b:
        if c + a == num:
            print num, '=', a, '+', c
            break
    else:
        continue
    break

输出:

$ python ~/tmp/soprim.py
enter a number: 8
8 = 3 + 5

for-else在python中有点反直觉;否则只有在循环完成而没有破坏时才执行。所以在这种情况下,如果它从未到达第一个中断,则else子句运行并继续执行下一个外部循环。但是你击中了第一个突破,否则没有跑,所以你打第二个突破,然后你就没有了。

答案 1 :(得分:1)

或者,您可以将循环移动到函数并使用该函数内的return从两个循环中退出:

def print_first(b):
    for a in b:
        for c in b:
            if c + a == num:
                print num, '=', a, '+', c
                return

num = int(raw_input('enter a number: '))
b = [2, 3, 5, 7, 11, #... etc up to the prime before the users number]
print_first(b) # 8 = 3 + 5