Могу ли я удалить некоторые значения, которые не являются десятичными? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытался сделать решатель обратного отсчета (правила здесь ). Проблема в том, что моя программа печатает решения только для некоторых целей, а для других она не дает всех возможных решений.

Вот где, я думаю, заключается проблема. Соль является результатом расчета. Мне не нужны решения, в которых мы делаем дроби, которые нельзя отменить, например, 4/3 и c.

def check_rules(Sol):   
    if Sol < 0:
        return False
    elif isinstance(Sol, float) == True and Sol.is_integer() == False:  #for eliminating such fractions.
        return False

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

def magic (List, targ):
    stack=[]
    for i in List:
        if i not in operators:
            stack.append(i)
        elif i in operators:
            num2=stack.pop()
            num1=stack.pop()
            exp=num1+i+num2
            if check_divZero(i, num2) == False:
                break
            sol=eval(exp)
            if check_rules(sol) == False:
                break
            stack.append(str(sol))
        if float(stack[-1]) == targ:
            return List
...