廢話不多說,老規矩直接上**
import re
# 處理字串中的符號
defsign_exp
(strvar)
: strvar = strvar.replace(
"+-"
,"-"
) strvar = strvar.replace(
"--"
,"+"
) strvar = strvar.replace(
"-+"
,"-"
) strvar = strvar.replace(
"++"
,"+"
)return strvar
# 計算表示式
defcalc_exp
(strvar):if
"*"in strvar:
a,b = strvar.split(
"*")
return
float
(a)*
float
(b)if
"/"in strvar:
a,b = strvar.split(
"/")
return
float
(a)/
float
(b)# 一次性把括號裡面所有內容全部計算完畢
defopreate_exp
(strvar)
:# 先計算乘除
while
true
: obj = re.search(
"\d+(\.\d+)?[*/][+-]?\d+(\.\d+)?"
,strvar)
if obj :
res1 = obj.group(
)print
(res1)
# 5*-2 3/2
# 用calc_exp進行計算最後的結果
res2 = calc_exp(res1)
print
(res2)
# -10.0 1.5
strvar = strvar.replace(res1,
str(res2)
)print
(strvar)
else
:break
# 處理表示式當中的符號
strvar = sign_exp(strvar)
print
(strvar)
# 在計算加減
lst = re.findall(
"[+-]?\d+(?:\.\d+)?"
,strvar)
print
(lst)
# 得到最後的值返回
total =
0for i in lst:
total +=
float
(i)print
(total)
# 30.0
return total
defremove_bracket
(strvar)
:while
true
: obj = re.search(r"\([^()]+\)"
,strvar)
print
(obj)
if obj:
res1 = obj.group(
)print
(res1)
# (40+5*-2+3/2)
# 計算表示式裡面的值
res2 = opreate_exp(res1)
print
(res2)
# 31.5
# 把原來的括號替換掉
strvar = strvar.replace(res1,
str(res2)
)# print(strvar) # -30+31.5*8 + (4-7)
else
:return strvar
defmain
(strvar)
:# 0.把所有的空格去掉
strvar = strvar.replace(
" ","")
# 1.去除小括號
strvar = remove_bracket(strvar)
# 2.計算表示式
# print(strvar) # -30+31.5*8+-3.0
return opreate_exp(strvar)
# strvar = "-30+(40+5*-2+3/2)*8 + (4-7)"
strvar =
'1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))'
res = main(strvar)
print
(res)
# 2776672.6952380957
print
(eval
(strvar)
)
轉貼 一次性安裝php的軟體
一次性安裝php的軟體 foxserv 開發商http www.foxserv.net apache2triad 開發商http apache2triad.sourceforge.net wamp 開發商http www.e novative.de mysql 3.23.49 phpmyadmin ...
全域性一次性引用寫好的元件
我們寫好了元件,接下去肯定還要引入和使用。但是你寫的元件一旦多起來,在每乙個個地方都需要去引用是一件很麻煩的事情,所以我們將一次性全域性引入 important componenta from componenta important componentb from componentb impor...
實現一次性驗證碼的校驗
建立乙個servlet隨機生成認證碼 輸出隨機認證碼 1.設定背景色 private void setbackground graphics graphics 2.設定邊框 private void setborder graphics graphics 3.畫干擾線 private void dr...