Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当循环运行不正常时_Python_Python 3.x_While Loop - Fatal编程技术网

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

您只有一个中断,因此循环只能在打印该中断后结束。即使它首先使用第一个分支,它也会继续循环直到中断。将输出包含在问题中会很有帮助。感谢您的解释!我真傻,一点也想不到!