繁体   English   中英

While 循环无法正常运行

[英]While Loop not functioning properly

我正在测试一个简单的线性丢番图方程代码。 这是代码:

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。

任何建议将被认真考虑。

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!")

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

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!")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM