Python 計算器練手

2021-10-10 10:22:28 字數 2810 閱讀 5181

初學python,拿計算器練練手

版本python3.9

import re

""" 計算器demo

"""def

inp(s)

:""" 計算入口,傳入乙個字串,如:(((489-8)/9)+9-(985*(76-2)))*89 """

check(s)

# 校驗字串是否合法

strre = r'(?<=\()[^()]*(?=\))'

# 查詢括號內容

brackets = re.findall(strre, s)

# 如果有括號就計算括號內的

while

len(brackets)

>0:

for ss in brackets:

s = s.replace(

'(-)'

.replace(

'-', ss)

,str

(calcnobrackets(ss)))

brackets = re.findall(strre, s)

return calcnobrackets(s)

# 沒有括號之後,計算並返回最終結果

defcalcnobrackets

(s):

""" 傳入乙個字串,不包含括號,如:5-9+8*5+85*76/42-1*-8 """

restr = r'\d+([.]\d+)?[*/][-]*\d+([.]\d+)?'

res = re.search(restr, s)

while res is

notnone

: sr = s[res.regs[0]

[0]:res.regs[0]

[1]]

s = s.replace(sr,

str(calctwonum(sr)),

1)res = re.search(restr, s)

restr = r'-*\d+([.]\d+)?[+-][-]*\d+([.]\d+)?'

res = re.search(restr, s)

while res is

notnone

: sr = s[res.regs[0]

[0]:res.regs[0]

[1]]

s = s.replace(sr,

str(calctwonum(sr)),

1)res = re.search(restr, s)

return s

defcalctwonum

(s):

i = re.search(r'(?<=\d)[*\-/+]'

, s)

.regs[0]

[0] a = transtonum(s[

:i])

b = transtonum(s[i+1:

])operator = s[i]

if operator ==

'*':

return a * b

if operator ==

'/':

return a / b

if operator ==

'+':

return a + b

if operator ==

'-':

return a - b

deftranstonum

(s):

""" 字串轉數字 """

if s.isnumeric():

return

int(s)

# 處理負數

elif

len(s)

>

1and s[1:

].isnumeric(

)and s[0]

=='-'

:return

int(s)

# 處理小數

else

:return

float

(s)def

check

(s):

""" 校驗字串是否可用

"""res = re.findall(

'[-+/*0-9().]'

, s)

iflen

(res)

!=len

(s):

raise valueerror(

'unusable str:{}'

.format

(s))

res =

len(re.findall(

'[/*+-][/*+]'

, s)

) res +=

len(re.findall(

'[(][/*+]'

, s)

) res +=

len(re.findall(

'[/*+-][)]'

, s)

) res +=

len(re.findall(

'[)][0-9]'

, s)

) res +=

len(re.findall(

'[0-9][(]'

, s)

) res +=

len(re.findall(

'[(][)]'

, s)

)if res >0:

raise valueerror(

'unusable str:{}'

.format

(s))

return

true

練手 計算器 GUI AWT

兩百行左右,實現乙個可以 按鈕控制,鍵盤監聽控制,可檢視歷史記錄 的四則運算計算器。實現運算子字串的計算類 author gray xu class operator public object operation catch exception e 計算器視窗 author gray xu pub...

python 簡易計算器

主程式 usr bin python coding utf8 import add,multipy,minus,divisi if name main print 您想做的運算是什麼?flag true while flag step1 raw input jia,jian,chen,chu if ...

簡單計算器 Python

用python模擬簡單的計算器,實現python中的基本計算運算,具體方法為 分三行輸入,前兩行輸入數字,第三行輸入乙個運算子 包括 輸出運算結果。注意,如果除數為0,需要輸出 無法計算,請重新輸入運算子 並且重新輸入新的運算子。輸入樣例1 輸入樣例2 7 10 3 0 輸出樣例1 輸出樣例2 2....