虽然循环无法正常运行

时间:2020-01-12 06:51:48

标签: python python-3.x while-loop

我正在测试一个简单的线性双色子方程方程代码。这是代码:

a = 3
b = 4
n = 67

i = 0
while True:
    if i * a <= n:
        if (n - (i * a)) % b == 0:
                yy = int((n - (i * a)) / b)
                print("{0} x {1} + {2} x {3} = {4}".format(a, i, b, yy, n))
        i = i + 1
    else:
        print("No possible solution!")
        break

运行代码时,可以在此等式中找到可能的x和y(很好)。但是,我不知道是为什么打印出“没有可能的解决方案!”与答案一起打印。假设else块仅在无法解决时出现,例如a = 3,b = 4和n = 2。

任何建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

print("No possible solution!")在else情况下,因此无论是否找到任何解决方案,它都会执行。

这是修复它的一种方法,其中布尔变量会跟踪是否找到了解决方案,并根据该变量的状态显示消息:

a = 3
b = 4
n = 2

i = 0
solution_found = False
while True:
    if i * a <= n:
        if (n - (i * a)) % b == 0:
            yy = int((n - (i * a)) / b)
            print("{0} x {1} + {2} x {3} = {4}".format(a, i, b, yy, n))
            solution_found = True
        i = i + 1
    else:
        break

if not solution_found:
    print("No possible solution!")

答案 1 :(得分:0)

使用标志来标识解决方案是否可用。

a = 3
b = 4
n = 67

i = 0
isSolutionAvailable=False
while True:
    if i * a <= n:
        if (n - (i * a)) % b == 0:
                yy = int((n - (i * a)) / b)
                print("{0} x {1} + {2} x {3} = {4}".format(a, i, b, yy, n))
                isSolutionAvailable=True
        i = i + 1
    else:
        break
if(not(isSolutionAvailable)):
    print("No possible solution!")