看完大大的解答才知道原來我寫的計算器太“死”了,只能實現(xiàn)固定的程序,如果需要改數(shù)據(jù),得重新編程,這是一件非常麻煩的事情。所以大大的高配版計算器是能手動輸入算式的,甚至可以不用每次點執(zhí)行,實現(xiàn)循環(huán)輸入。
python大大的圖


我的圖

這么寫雖然能實現(xiàn)自定義輸入,但是每一次輸入前都要點執(zhí)行。這里出了兩個比較生的函數(shù)raw_input()和eval()
關(guān)于input()和raw_input()的區(qū)別可以參考http://www.cnblogs.com/way_testlife/archive/2011/03/29/1999283.html
自己輸一下代碼就能理解它們的差別了


input() 本質(zhì)上還是使用 raw_input() 來實現(xiàn)的,除非對 input() 有特別需要,否則一般情況下我們都是推薦使用 raw_input() 來與用戶交互。
eval()是一個很神奇的函數(shù),它可以把字符串str當成有效的表達式來求值并返回計算結(jié)果。而且它可以把字符串轉(zhuǎn)化為列表、字典或者元組。網(wǎng)上有很多解析都寫得非常詳細。在這里的用法就相當于做加減乘除那些運算。
https://www.cnblogs.com/liu-shuai/
http://blog.csdn.net/qq_29883591/article/details/53443062
這么寫是很麻煩的,每一個算式都要點執(zhí)行。于是大大又給出了一種更高端的寫法

這里的邏輯在這里。用一個無限的循環(huán)把接收輸入的語句“困”起來,然后就可以不停的來接收我們輸入,然后輸出計算結(jié)果了。以while 1打頭的循環(huán)將不斷運行,直到遇到break語句,這個程序中的循環(huán)不斷輸入算式,直到用戶輸入0為止。用戶輸入0后將執(zhí)行break語句,導致python跳出循環(huán)。