Break 似乎并没有打破 for 循环
Break doesn't seem to break the for-loop
我的 for 循环似乎没有中断 for 循环并转到下一个 d 值。范围为 10000 时需要 0.5 秒,而范围为 100000 时需要 0.8 秒?但是,在超过 100 之前,该范围何时应该突破并不重要。
这是我的代码:
import math
d = 1
l = {}
while d < 10:
for y in range(0, 10000):
x = y * math.sqrt(d)
x = round(x)
if x**2 - (d * y**2) == 1:
l[d] = x
print("x: " + str(x) + " d: " + str(d) + " y: " + str(y))
break
d += 1
m = max(l, key=l.get)
print("d", m, " :-: x", l[m])
这是它的输出:
x: 3 d: 2 y: 2
x: 2 d: 3 y: 1
x: 9 d: 5 y: 4
x: 5 d: 6 y: 2
x: 8 d: 7 y: 3
x: 3 d: 8 y: 1
d 5 :-: x 9
>[Finished in 0.8s]
break
工作正常。但是,您没有为 d
.
的所有值找到解决方案
将 else:
套件添加到 for
循环以显示何时没有为该循环执行 break
:
while d < 10:
for y in range(0, 10000):
x = y * math.sqrt(d)
x = round(x)
if x**2 - (d * y**2) == 1:
l[d] = x
print("x: " + str(x) + " d: " + str(d) + " y: " + str(y))
break
else:
print('No solution for d:', d)
d += 1
输出:
No solution for d: 1
x: 3 d: 2 y: 2
x: 2 d: 3 y: 1
No solution for d: 4
x: 9 d: 5 y: 4
x: 5 d: 6 y: 2
x: 8 d: 7 y: 3
x: 3 d: 8 y: 1
No solution for d: 9
顺便说一下,while
循环也可以用 for d in range(1, 10):
代替。
我的 for 循环似乎没有中断 for 循环并转到下一个 d 值。范围为 10000 时需要 0.5 秒,而范围为 100000 时需要 0.8 秒?但是,在超过 100 之前,该范围何时应该突破并不重要。 这是我的代码:
import math
d = 1
l = {}
while d < 10:
for y in range(0, 10000):
x = y * math.sqrt(d)
x = round(x)
if x**2 - (d * y**2) == 1:
l[d] = x
print("x: " + str(x) + " d: " + str(d) + " y: " + str(y))
break
d += 1
m = max(l, key=l.get)
print("d", m, " :-: x", l[m])
这是它的输出:
x: 3 d: 2 y: 2
x: 2 d: 3 y: 1
x: 9 d: 5 y: 4
x: 5 d: 6 y: 2
x: 8 d: 7 y: 3
x: 3 d: 8 y: 1
d 5 :-: x 9
>[Finished in 0.8s]
break
工作正常。但是,您没有为 d
.
将 else:
套件添加到 for
循环以显示何时没有为该循环执行 break
:
while d < 10:
for y in range(0, 10000):
x = y * math.sqrt(d)
x = round(x)
if x**2 - (d * y**2) == 1:
l[d] = x
print("x: " + str(x) + " d: " + str(d) + " y: " + str(y))
break
else:
print('No solution for d:', d)
d += 1
输出:
No solution for d: 1
x: 3 d: 2 y: 2
x: 2 d: 3 y: 1
No solution for d: 4
x: 9 d: 5 y: 4
x: 5 d: 6 y: 2
x: 8 d: 7 y: 3
x: 3 d: 8 y: 1
No solution for d: 9
顺便说一下,while
循环也可以用 for d in range(1, 10):
代替。