我有一个程序可以获取用户编号,找到该点之前的所有质数并将它们存储在列表中,现在我需要从该列表中查看它们中的两个是否加在一起添加到用户输入中,这个是我似乎无法正确处理的地方。我将把最后一点放在我需要帮助的地方。
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
我怎样才能让它只打印一个值?
最佳答案
您只是跳出内部循环,而不是外部循环。
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
python 中的 For-else 有点违反直觉; else 仅在循环完成且没有中断时执行。所以在这种情况下,如果它从未遇到第一个中断,则 else 子句运行并继续执行下一个外部循环。但是如果你打了第一个 break,else 不会运行,所以你打了第二个 break,然后你就退出了两个循环。
关于Python 帮助,打印列表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9054851/