我正在测试一个简单的线性双色子方程方程代码。这是代码:
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。
任何建议将不胜感激。
答案 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!")