一般来说,我对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
感谢您的帮助
如果不介意,请尝试使用If else:
等等。当然,不要忘了将输入转换成
int
并禁止用户输入字符/字母,希望这对您有所帮助。你知道吗相关问题 更多 >
编程相关推荐