字串輸入計算器

2021-09-26 12:06:20 字數 1127 閱讀 3765

一般會在喜歡考字串的筆試中遇到。

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