一般會在喜歡考字串的筆試中遇到。
1. 無括號,簡單計算器設定
首先給出python**實現:
class solution:
def calculate(self, s: str) -> int:
d = 0
sign = '+'
res = [0]
for i in range(len(s)):
if s[i] >= '0':
d = d * 10 + int(s[i])
if s[i] < '0' and s[i] != ' ' or i == len(s) - 1:
if sign == '+':
if sign == '-':
if sign == '*':
if sign == '/':
temp=res.pop()
abs_val=abs(temp)//d
end_val=abs_val*(-1)
if temp<0:
else:
sign = s[i]
d = 0
return sum(res)
if __name__ =='__main__':
s=input()
s=solution()
#s='14-3/2'
print(s.calculate(s))
**原理分析:從頭到尾逐個字元遍歷字串,如果是『0』~『9』指間的字元,則直接轉換為數字。重點是對運算子的間隔,遇到運算子時,並不在當前時刻計算結果,因為運算子的右邊部分缺失,無法計算。而是在遍歷到當前運算子時,進行上乙個運算子的運算。舉例如下;
5*6+9
在遍歷到『+』號時,計算5*6的結果,同時將當前的符號標誌'sign'更新為『+』。
python 寫**時有乙個致命問題,必須注意。
做整除運算時,python全部向下取整。
例如:-7//3=3
而在c++中,-7/3=2!
故而必須在除法運算處做相關 處理,不然,不能全ac.
字串應用(計算器)
給定乙個包含正整數 加 減 乘 除 的算數表示式 括號除外 計算其結果。表示式僅包含非負整數,四種運算子和空格。整數除法僅保留整數部分。示例 輸入 3 2 2 輸出 7 答案 思路 1.碰到數字直接入棧 2.碰到空格,直接下一步 3.碰到 碰到 下乙個數字直接入棧 碰到 num入棧 num num ...
py字串的計算器,
參照乙個demo import re def symbol processing string string re.sub string string re.sub r string string re.sub r string string re.sub r string string re.su...
Python之字串計算(計算器)
import re expression 1 2 60 2 3 40.0 42425 5 9 2 5 3 357 553 3 99 4 2998 10 568 14 4 3 16 3 2 56 56 45 question eval expression print question def ari...