功能是輸入一個運算式(加減乘除)出結果,不用eval,盡量不用正則運算式。數字包含浮點數,二進制八進制十六進制
以下是我寫的代碼,其他測驗都通過了,但是負數會報錯【輸出答案是正確的】
各種修改……還是沒有解決問題……
代碼:
formula=input("請輸入想要運算的式子:")
op=['+','-','*','/']
formula = formula[:].replace(' ','')
for i,opr in enumerate(formula):
if opr in op and i!=0:
if formula[0]=='-':
num1 = -float(formula[1:i])
elif formula[0:2]=='0x':
num1 = formula[2:i]
num1 = int(num1,16)
elif formula[0:2] == '0b':
num1 = formula[2:i]
num1 = int(num1, 2)
elif formula[0:2]=='0o':
num1 = formula[2:i]
num1 = int(num1,8)
else:
num1 = float(formula[0: i])
if formula[i+1]=='-':
num2 = -float(formula[i+2:])
elif formula[i + 1:i + 3] == '0x':
num2 = formula[i + 3:]
num2 = int(num2, 16)
elif formula[i + 1:i + 3] == '0b':
num2 = formula[i + 3:]
num2 = int(num2, 2)
elif formula[i + 1:i + 3] == '0o':
num2 = formula[i + 3:]
num2 = int(num2, 8)
else:
num2 = float(formula[i + 1:])
if opr==op[0]:
print('{:.2f}'.format(num1+num2))
elif opr==op[1]:
print('{:.2f}'.format(num1-num2))
elif opr==op[2]:
print('{:.2f}'.format(num1*num2))
elif opr==op[3]:
print('{:.2f}'.format(num1/num2))
除錯結果:

百度上搜索過,也能看見是符號不能轉化,但是不會改了。。。切片范圍如果調整的話出不了正確值,求問要怎么辦啊。。。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/172527.html
上一篇:excel vba拼接函式名
