python 模擬casio複數計算器 施工中

2022-09-03 20:42:12 字數 1217 閱讀 7086

——只有(可以多於)的個數,此時在行尾補) 。

——取模|...|不能巢狀。(在casio中沒有這個問題,因為每按一次取模鍵,你會得到兩個|,所以可以定義他們的大小)

——無論是圓括號還是取模號,後面不能直接跟數字: )23 -> wrong

——基本的加減乘除:1+2,  3/4

——冪次: 3^2  (我懶得支援sqrt()和1x102的功能了)

——取模:|-2|

——虛數i:2i

——取共軛、幅角:cjg(), arg()

——三角函式sin cos tan

——多表示式分隔:2+3:

——變數與存值:a+3, 2+3>a

——答案自動存值:3+2:ans-4 (==1)

除此之外,計算器還有以下的robust功能:

——對於數字前的正負號,可以判斷多個正負號結合的結果:++++--+---+ -> -

——對於括號前的數字和字母,可以判斷是一種優先的乘法:8 / 2 (5) -> 8 / (2 (5))

——對於多個因子,視為它們的積:ii -> -1

我們可以將乙個數分為四個部分:

——正負號部分:[++--+-++-]

——數字部分:[215.2145]

——變數與虛數單位部分:[ansansabaiiianscjg(...)arg(...)],這裡都是相乘的。對於乙個「數」,第二或第三部分必須出現一次,否則就報錯。

——運算子部分:+, *, ^, :...在處理時將:視為表示式終止符,人為新增方便判斷;但是使用者自己不能以:作為結尾。

這樣處理有乙個好處:通過這種歸類,你只需要考慮四種字元(其實還有括號,原因是空字串)後面應該跟隨什麼型別的字元——如果字尾字元無效,就可以返回乙個錯誤。

逐字元,排程場,這些就不贅述了。

關於報錯,肯定要指出錯誤位置。這個準備採用乙個變數來記數。

這幾天想了一下,發現不能侷限在casio的函式之內,應該要做到模組化。或者做成乙個parser。

首先,把運算元件分為以下幾部分:

——數字:string.digit+'.'

——左右的雙目運算子:+-*/^

——單目運算子:>

——函式:func(expa, expb,...)

——變數:abcd ans

——括號:() || (有可能的話,可能會在內部處理的時候把取模號作為單目運算子使用)

python 肆 模組,cmath複數

上一節,乙個人的年齡是22。9,她年齡還沒到23,只是取22,則需要floor函式 模組 匯入到python以增強其功能的擴充套件,暫時這麼理解 需要 import命令 來匯入math 模組,利用math模組中的 floor函式 用import匯入模組,按照 模組。函式 的格式用這個模組的函式 im...

B1051 複數乘法(python)

1051 複數乘法 15分 複數可以寫成 a bi 的常規形式,其中 a 是實部,b 是虛部,i 是虛數單位,滿足 i 2 1 也可以寫成極座標下的指數形式 r e pi 其中 r 是複數模,p 是輻角,i 是虛數單位,其等價於三角形式 r cos isin 現給定兩個複數的 r 和 p,要求輸出兩...

python模擬登入

使用python模擬登入的乙個思路 一,獲取data,獲取headers 二,構造cookie 需要使用urllib,urllib2,cookielib 這三個模組 使用瀏覽器獲取 的data,headers 構造data,headers字典 作為引數 使用urllib2的request方法傳遞引數...