Python: ошибка типа

Итак, вот моя ситуация. Я пытался сделать расширенный калькулятор на python 3.4, где вы можете просто ввести что-то вроде этого. «1 + 1», и тогда вы получите ответ «2». Теперь я объясню, как должен работать мой калькулятор. Итак, вы начинаете с ввода математического уравнения, затем оно подсчитывает введенные вами слова на основе пробелов. Он делает это, чтобы знать, какой длины должны быть некоторые будущие циклы. Затем он разделяет все, что вы ввели. Он разбивает его на str и int, но все по-прежнему находится в одной переменной, и все по-прежнему в порядке. У меня проблемы с тем, когда он предназначен для фактических вычислений.

вот весь мой код-

    # This is the part were they enter the maths equation
    print("-------------------------")
    print("Enter the maths equation")
    user_input = input("Equation: ")
    # This is were it counts all of the words
    data_count = user_input.split(" ")
    count = data_count.__len__()
    # Here is were is splits it into str's and int's
    n1 = 0
    data = []
    if n1 <= count:
        for x in user_input.split():
            try:
                data.append(int(x))
            except ValueError:
                data.append(x)
            n1 += 1
    # And this is were it actually calculates everything
    number1 = 0
    number2 = 0
    n1 = 0
    x = 0
    answer = 0
    while n1 <= count:
        #The code below checks if it is a number
        if data[n1] < 0 or data[n1] > 0:
            if x == 0:
                number1 = data[n1]
            elif x == 1:
                number2 = data[n1]
        elif data[n1] is "+":
            if x == 0:
                answer += number1
            elif x == 1:
                answer += number2
        n1 += 1
        x += 1
        if x > 1:
            x = 0
    print("Answer =", answer)

но при расчете сбивается и выдает мне и ошибку

ошибка-

    if data[n1] < 0 or data[n1] > 0:
    TypeError: unorderable types: str() < int()

может кто-нибудь увидеть, что я делаю неправильно здесь? Спасибо


person Jonty Morris    schedule 11.11.2014    source источник
comment
#Приведенный ниже код проверяет, является ли это числом. За исключением того, что это не так.   -  person Ignacio Vazquez-Abrams    schedule 11.11.2014
comment
Действительно? Хорошо, если это не так, у вас есть идеи, как это исправить?   -  person Jonty Morris    schedule 11.11.2014


Ответы (1)


Эта проблема возникает, когда вы сравниваете строку и целое число. Python не угадывает, он выдает ошибку. Чтобы исправить это, просто вызовите int(), чтобы преобразовать вашу строку в целое число:

int(input(...))

Итак, исправленное утверждение должно быть:

if int(data[n1]) < 0 or int(data[n1]) > 0:
person Dr. Debasish Jana    schedule 11.11.2014
comment
Нет, не это. Прочитайте цикл выше. - person Ignacio Vazquez-Abrams; 11.11.2014