Python 当循环运行不正常时
我正在测试一个简单的线性丢番图方程代码。代码如下:Python 当循环运行不正常时,python,python-3.x,while-loop,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
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
如有任何建议,将不胜感激。打印无可能的解决方案!位于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!")
您只有一个中断,因此循环只能在打印该中断后结束。即使它首先使用第一个分支,它也会继续循环直到中断。将输出包含在问题中会很有帮助。感谢您的解释!我真傻,一点也想不到!