首页 > 解决方案 > 如何检查 while 循环中的 if 语句是否已满足?

问题描述

我正在尝试制作一个程序,当给定一个序列的项时,打印一个可以得到这些项的多项式方程。我向它添加了另一个功能,它反映了第一部分,因为它在输入等式后为您提供了序列的项。

到目前为止,一切进展顺利,但我在尝试实现另一个功能时遇到了一个问题。如果用户已经得到了一个序列的方程,并且他们可能想检查该序列的更多项,我希望他们能够复制该方程,如果他们愿意,而无需手动进行,如果这是有道理的。

我的尝试如下:

def func(var):
    if str(var) == "solve":
        terms = input("terms: ").split()

        ...
        coefs = []
        # code that defines the list coefs
        ...

        coefs = [a,b,c...]

        print(", ".join(coefs))

        copyeq = 1

    elif str(var) == "check":

        try:
            if copyeq == 1:
                if input("use coefficients as above?: ") == "yes":
                    checklist = coefs

                else:
                    return

            elif copyeq == 0:
                checklist = input("input coefficients: ").split()

            ...
            terms = []
            # code that defines the list terms
            ...

            terms = [p, q, r...]
            print(", ".join(term))

copyeq = 0

while 1:
    var = input("solve or check: ")
    func(var)

当我尝试对此进行测试时,它会立即跳转到elif copyeq == 0:语句,这意味着我在if var == "solve":语句中分配给它的值 0。有没有人有任何解决方法或解决方案?

编辑:我打算让用户能够为它的方程求解一个序列,或者检查一个方程的序列。如果他们选择先解决一个序列,我希望他们能够检查他们刚刚得到的方程式作为答案。我认为指针可能会解决我的问题,但快速搜索告诉我 Python 没有指针。

标签: pythonpython-3.xif-statementwhile-loop

解决方案


我认为您应该检查程序的逻辑,它将直接进入 elif copyeq==0,因为您将此变量设置为该值,因此,每次用户选择检查时,程序都会进入 elif。也许你可以更好地解释一下程序应该如何表现?


推荐阅读