[Python] Creating a calculator python

Discussão em 'Python' iniciado por Stack, Julho 17, 2025.

  1. Stack

    Stack Membro Participativo

    I am fairly new to python and programming in general, I wanted to build a calculator which could handle multiple operations in a equation. I implemented multiplication and division, however an index out of range error occurs ONLY when a division comes after a multiplication.

    Code

    def find(s, ch):
    return [i for i, ltr in enumerate(s) if ltr == ch]

    operatorList=["+","-","%","x","/"]
    userInput=input("Please enter an equation: ")
    newInput=("")
    operatorsUsedList=[]
    for char in userInput:
    if char in operatorList:
    userInput=userInput.replace(char,',')
    operatorsUsedList.append(char)
    print(userInput)
    print(operatorsUsedList)
    listOfNums=userInput.split(",")
    print(listOfNums)
    divIndex=find(operatorsUsedList,"/")
    multiIndex=find(operatorsUsedList,"x")
    print(divIndex)
    #Makes str into nums
    count=0
    listOfNums = [int(i) for i in listOfNums]
    while len(listOfNums)!=1:
    count=0
    for i in divIndex:
    inputA=listOfNums[i-count]
    inputB=listOfNums[i+1-count]
    print(inputA,"/",inputB)
    print("here")
    result=inputA/inputB
    try:
    del listOfNums[i+1-count]
    except:
    pass
    try:
    del listOfNums[i-count]
    except:
    pass
    listOfNums.insert(i,result)
    print(listOfNums)
    count=count+1
    for i in multiIndex:
    inputA=listOfNums[i-count]
    inputB=listOfNums[i+1-count]
    print(inputA,"x",inputB)
    print("here")
    result=inputA*inputB
    try:
    del listOfNums[i+1-count]
    except:
    pass
    try:

    del listOfNums[i-count]
    except:
    pass

    listOfNums.insert(i,result)
    print(listOfNums)
    count=count+1

    print("Answer = ",str(listOfNums))


    Results

    When i input 6/3/2x4 I am returned Answer = [4.0] which is correct.

    However when i input 4x2/3/6 its returning IndexError. Here is the traceback,

    Traceback (most recent call last):
    File "xxxxx.py", line 26, in <module>
    inputB=listOfNums[i+1-count]
    IndexError: list index out of range


    Any help is appreciated

    Continue reading...

Compartilhe esta Página