Python: kesalahan tipe

Jadi, inilah situasi saya. Saya telah mencoba membuat kalkulator tingkat lanjut dengan python 3.4, di mana Anda cukup mengetikkan sesuatu seperti ini. '1 + 1', dan itu akan memberi Anda jawaban '2'. Sekarang saya akan menjelaskan cara kerja kalkulator saya. Jadi Anda mulai dengan memasukkan persamaan matematika, lalu menghitung kata yang Anda masukkan berdasarkan spasi. Ia melakukan ini sehingga ia mengetahui berapa lama beberapa loop di masa depan perlu dilakukan. Kemudian itu membagi semua yang Anda masukkan. Itu membaginya menjadi str dan int tetapi semuanya masih dalam variabel yang sama dan semuanya masih teratur. Hal yang menjadi masalah bagi saya adalah ketika itu dimaksudkan untuk benar-benar melakukan perhitungan.

ini semua kode saya-

    # 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)

tetapi selama perhitungan itu kacau dan memberi saya kesalahan

kesalahan-

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

adakah yang bisa melihat kesalahan saya di sini? Terima kasih


person Jonty Morris    schedule 11.11.2014    source sumber
comment
#Kode di bawah ini memeriksa apakah itu angka, kecuali bukan.   -  person Ignacio Vazquez-Abrams    schedule 11.11.2014
comment
Benar-benar? Oke, jika tidak, apakah Anda tahu cara memperbaikinya?   -  person Jonty Morris    schedule 11.11.2014


Jawaban (1)


Saat Anda membandingkan string dan bilangan bulat, masalah ini muncul. Python tidak menebak, ia menimbulkan kesalahan. Untuk memperbaikinya, cukup panggil int() untuk mengonversi string Anda menjadi bilangan bulat:

int(input(...))

Jadi, pernyataan yang dikoreksi seharusnya:

if int(data[n1]) < 0 or int(data[n1]) > 0:
person Dr. Debasish Jana    schedule 11.11.2014
comment
Tidak, bukan ini. Baca loop di atas. - person Ignacio Vazquez-Abrams; 11.11.2014