我正在挑战 Project Euler 以更好地掌握 Python(我是初学者)并且我正在尝试做 Problem 9 .
vara = lista[-1]
varb = listb[-1]
varc = listc[-1]
while not(vara < varb < varc):
listb.pop(-1)
lista.pop(-1)
lista.pop(-1)
if ((vara * vara) + (varb * varb) == varc * varc):
print vara, varb, varc
else:
listc.pop(-1)
if ((vara * vara) + (varb * varb) == varc * varc):
print vara, varb, varc
else:
listb.pop(-1)
if ((vara * vara) + (varb * varb) == varc * varc):
print vara, varb, varc
else:
lista.pop(-1)
我尝试了很多方法来让 lista/listb/listc 的值从 1 到 1000,但它们似乎都不起作用
lista = range(1, 1000)
lista = range[1, 1000]
等等
请您参考如下方法:
要生成从 1 到 1000 的值,您需要将结束值指定为 1000 + 1,即 1001。所以
Python 2.x
# python 2.x
liasta = range(1, 1001)
Python 3.x
# python 3.x
liasta = list(range(1, 1001))
将为您提供从 1 到 1000 的值列表。
range()使用半闭区间,这意味着它包括它生成的值列表中的第一个值,但排除 最后一个。请注意,如果您未指定起始值,range() 将默认为 0。您还可以指定一个增量值,除非另有说明,否则默认为 1。
来自 doc page 的三个示例:
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5)
[0, 5, 10, 15, 20, 25]
