Break似乎没有打破forloop

2024-04-19 01:34:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我的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])

下面是它的输出:

^{pr2}$

Tags: 代码inimportforifrangemathsqrt
1条回答
网友
1楼 · 发布于 2024-04-19 01:34:10

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

哪些输出:

^{pr2}$

顺便说一下,while循环也可以用for d in range(1, 10):来代替。在

相关问题 更多 >