Как я могу проверить, удовлетворен ли оператор if внутри цикла while? - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь создать программу, которая при задании членов последовательности выводит полиномиальное уравнение, которое может получить эти члены. Я добавил еще одну особенность, которая отражает первую часть в том смысле, что она дает вам условия последовательности после ввода уравнения.

Пока что все прошло в основном хорошо, но я пришелчерез проблему при попытке реализовать другую функцию. Если пользователь уже получил уравнение для последовательности, и он хотел бы проверить, возможно, еще несколько членов этой последовательности, я хочу, чтобы они могли копировать это уравнение, если захотят, не делая это вручную,если это имеет смысл.

Моя попытка заключается в следующем:

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:, что означает значение 0что я назначил ему в операторе if var == "solve":. Есть ли у кого-нибудь обходные пути или решения?

Редактировать: Я намерен, чтобы пользователь мог решить последовательность для ее уравнения или проверить уравнение для ее последовательности. Если они решат сначала решить последовательность, я хочу, чтобы они могли проверить уравнение, которое они только что получили в качестве ответа. Я думал, что указатели могут решить мою проблему, но быстрый поиск показал, что в Python нет указателей.

1 Ответ

0 голосов
/ 04 ноября 2019

Я думаю, вам следует пересмотреть логику вашей программы, она перейдет прямо к elif copyeq == 0, потому что вы устанавливаете эту переменную в это значение, поэтому каждый раз, когда пользователь выбирает check, программа переходит кelif.Может быть, вы могли бы объяснить немного лучше, как должна вести себя программа?

...