创建计算器python

2024-09-29 19:30:25 发布

您现在位置:Python中文网/ 问答频道 /正文

一般来说,我对python和编程相当陌生,我想构建一个计算器,它可以处理一个等式中的多个运算。我实现了乘法和除法,但是只有在乘法之后加除法时才会出现索引超出范围的错误。你知道吗

代码

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

结果

当我输入6/3/2x4时,返回Answer = [4.0],这是正确的。你知道吗

但是,当我输入4x2/3/6时,它返回的索引器。这是回溯

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

感谢您的帮助


Tags: inforcountpassresultprinttrydel
1条回答
网友
1楼 · 发布于 2024-09-29 19:30:25

如果不介意,请尝试使用If else:

first_num = input("Enter first number: ")
second_num = input("Enter Second number: ")
operator = input("Enter Operator (+, -, *, /): ")

if operator == "+":
    print(first_num + second_num)

等等。当然,不要忘了将输入转换成int并禁止用户输入字符/字母,希望这对您有所帮助。你知道吗

相关问题 更多 >

    热门问题