0007 編程入門python語言之四則運(yùn)算器

這節(jié)課我們來做一個(gè)四則運(yùn)算器搓扯,輸入2個(gè)數(shù)字和1個(gè)運(yùn)算符,讓程序計(jì)算出結(jié)果。

上節(jié)課我們做了加法計(jì)算器和減法計(jì)算器争群,課后練習(xí)做了乘法計(jì)算器和除法計(jì)算器

再來復(fù)習(xí)一下,加法計(jì)算器:

num1=input("num1:")

num2=input("num2:")

num3=num1+num2

print num1,"+",num2,"=",num3

減法計(jì)算器:

num1=input("num1:")

num2=input("num2:")

num3=num1-num2

print num1,"-",num2,"=",num3

乘法計(jì)算器:

num1=input("num1:")

num2=input("num2:")

num3=num1*num2

print num1,"*",num2,"=",num3

除法計(jì)算器:

num1=input("num1:")

num2=input("num2:")

num3=num1/num2

print num1,"/",num2,"=",num3

大家發(fā)現(xiàn)沒有大年,代碼非常類似换薄,有沒有辦法可以將4個(gè)程序合并起來,做成一個(gè)四則運(yùn)算器呢

如果程序在輸入第一個(gè)數(shù)字之后翔试,要求用戶輸入一個(gè)運(yùn)算符號(hào)轻要,然后輸入第二個(gè)數(shù)字之后,程序判斷運(yùn)算符號(hào)是哪一個(gè)從而計(jì)算出正確的結(jié)果垦缅,這樣就可以實(shí)現(xiàn)了

問題來了冲泥,如何實(shí)現(xiàn)判斷運(yùn)算符號(hào)的程序呢

0和1的世界

計(jì)算機(jī)的世界是一個(gè)精確的世界,在計(jì)算機(jī)的世界里面,只有0和1

因?yàn)橛?jì)算機(jī)是由電驅(qū)動(dòng)的凡恍,是由邏輯電路組成的志秃,而邏輯電路只有2個(gè)狀態(tài),開關(guān)的接通和斷開嚼酝,這兩種狀態(tài)正好用1和0來表示

通過逢二進(jìn)一規(guī)則浮还,也就是二進(jìn)制,進(jìn)行計(jì)算的時(shí)候闽巩,運(yùn)算規(guī)則簡(jiǎn)單碑定,有利于簡(jiǎn)化計(jì)算機(jī)內(nèi)部結(jié)構(gòu),提高運(yùn)算速度

那么什么是二進(jìn)制又官,通常我們熟悉的阿拉伯?dāng)?shù)字都是十進(jìn)制延刘,也就是低位逢十向高位進(jìn)一,而二進(jìn)制只有0和1六敬,所以變成逢2向高位進(jìn)1碘赖,我們來看下面最簡(jiǎn)單的一個(gè)計(jì)算,求1011+11的和

十進(jìn)制的1=二進(jìn)制的1

十進(jìn)制的2=二進(jìn)制的10

十進(jìn)制的3=二進(jìn)制的11

十進(jìn)制的4=二進(jìn)制的100

十進(jìn)制的5=二進(jìn)制的101

十進(jìn)制的6=二進(jìn)制的110

十進(jìn)制的7=二進(jìn)制的111

十進(jìn)制的8=二進(jìn)制的1000

十進(jìn)制的9=二進(jìn)制的1001

十進(jìn)制的10=二進(jìn)制的1010

十進(jìn)制的11=二進(jìn)制的1011

十進(jìn)制的12=二進(jìn)制的1100

十進(jìn)制的13=二進(jìn)制的1101

十進(jìn)制的14=二進(jìn)制的1110

根據(jù)二進(jìn)制計(jì)算規(guī)則外构,1011(11)+11(3)=1110(14)

大家再做一個(gè)二進(jìn)制計(jì)算題普泡,101+11,看看等于多少审编,然后轉(zhuǎn)換為十進(jìn)制看看

布爾類型Ture和False

真實(shí)世界中有一對(duì)概念撼班,真和假

體現(xiàn)在計(jì)算機(jī)世界,就是布爾數(shù)據(jù)類型垒酬,True和False

主要的作用就是用來做邏輯判斷砰嘁,判斷條件是否成立

例如:如果某某為真,則這樣處理勘究,否則矮湘,那樣處理

例如:如果今天下雨,則去圖書館看書口糕,否則去操場(chǎng)踢足球

這里的“今天下雨”就是一個(gè)邏輯判斷缅阳,結(jié)果可能為True,也可能為False

如果為True景描,則去圖書館看書十办,如果為False,則去操場(chǎng)踢足球

例如:如果考試分?jǐn)?shù)>=60超棺,則及格向族,否則不及格

這里的“考試分?jǐn)?shù)>=60”就是一個(gè)邏輯判斷,結(jié)果可能為True说搅,也可能為False

如果為True炸枣,則及格虏等,如果為False弄唧,則不及格

邏輯運(yùn)算符and和or和not

針對(duì)邏輯判斷适肠,有3種邏輯運(yùn)算,從而可以組合形成更復(fù)雜的判斷

例如:如果今天下雨并且?guī)愫蛞瑒t去圖書館看書侯养,否則如果今天下雨并且沒打傘,則在家看書澄干,否則去操場(chǎng)踢足球

not? 邏輯非? 不是

and 邏輯與? 并且

or? ? 邏輯或? 或者

not 相反的判斷逛揩,針對(duì)1個(gè)邏輯值計(jì)算

計(jì)算公式:not True = False ,? not False = True

and 兩者都為True則結(jié)果為True否則為False,針對(duì)2個(gè)邏輯值計(jì)算

計(jì)算公式:True and True = True,? True and False = False,? False and True = False, False and False = False

or 兩者任一為True則結(jié)果為True麸俘,兩者都是False才為False辩稽,針對(duì)2個(gè)邏輯值計(jì)算

計(jì)算公式:True or True = True,? True or False = True,? False or True = True,? False or False = False

計(jì)算一下:not True and not False = ?

如果一個(gè)邏輯運(yùn)算里面包含了多個(gè)邏輯運(yùn)算符,則存在優(yōu)先級(jí)从媚,就是誰先計(jì)算逞泄,誰后計(jì)算

優(yōu)先級(jí)按如下排:not? and? or? 同級(jí)運(yùn)算從左至右

因此上面的計(jì)算結(jié)果應(yīng)該是:not True先運(yùn)算,結(jié)果為False拜效,然后因?yàn)閮?yōu)先級(jí)not優(yōu)先于and喷众,先計(jì)算后面的not False

,結(jié)果為True紧憾,最后計(jì)算False and True到千,最后結(jié)果為False

再計(jì)算一個(gè):False or not True and not False = ?

if判斷語句

在python程序里面,判斷語句的格式是這樣的:

if 邏輯運(yùn)算結(jié)果1=True :

? ? 執(zhí)行A

elif 邏輯運(yùn)算結(jié)果2=True :

? ? 執(zhí)行B

else :

? ? 執(zhí)行C

執(zhí)行的邏輯是:如果邏輯運(yùn)算結(jié)果1為True赴穗,則執(zhí)行A憔四,否則的話,再判斷邏輯運(yùn)算結(jié)果2為True般眉,則執(zhí)行B加矛,前面2個(gè)不滿足則執(zhí)行C

其中的執(zhí)行A,執(zhí)行B煤篙,執(zhí)行C 斟览,都是指一段代碼,可以是0行或1行或多行代碼辑奈,不是僅僅限定1行代碼的意思

其中elif可以允許出現(xiàn)0個(gè)或1個(gè)或多個(gè)苛茂,else可以允許出現(xiàn)0個(gè)或1個(gè)

冒號(hào)表示下面的代碼行是一個(gè)新的段落,每個(gè)新的段落鸠窗,通過在行首輸入相同的空格來進(jìn)行區(qū)分妓羊,簡(jiǎn)稱縮進(jìn)

python最重要的規(guī)則:縮進(jìn)的空格數(shù)整個(gè)程序必須一致。

如果你用了2個(gè)空格作為縮進(jìn)規(guī)則稍计,則程序中所有的行的縮進(jìn)規(guī)則都是2個(gè)空格

一般我們都習(xí)慣用4個(gè)空格

例如執(zhí)行A假如是3行代碼躁绸,執(zhí)行B假如是4行代碼,執(zhí)行C假如是1行代碼

那么加起來的8行代碼每一行的前面都應(yīng)該是4個(gè)空格,表示這些代碼都是相同的縮進(jìn)格式

如果執(zhí)行A的3行代碼每一行用了4個(gè)空格净刮,而執(zhí)行B的4行代碼每一行用了8個(gè)空格剥哑,程序執(zhí)行的時(shí)候就會(huì)報(bào)錯(cuò)

后面我們?cè)诰唧w做實(shí)驗(yàn)的時(shí)候可以體會(huì)

if判斷語句舉例:

例子1,單個(gè)分支:

if score>=60 :

? ? print "及格"

例子2,2個(gè)分支:

if score>=60 :

? ? print "及格"

else :

? ? print "不及格"

例子3淹父,3個(gè)分支

if score>=80 :

? ? print "良好"

elif score>=60 :

? ? print "及格"

else :

? ? print "不及格"

例子4株婴,4個(gè)分支

if score>=90 :

? ? print "優(yōu)秀"

elif score>=80 :

? ? print "良好"

elif score>=60 :

? ? print "及格"

else :

? ? print "不及格"

例子5,5個(gè)分支

if score==100 :

? ? print "滿分"

elif score>=90 :

? ? print "優(yōu)秀"

elif score>=80 :

? ? print "良好"

elif score>=60 :

? ? print "及格"

else :

? ? print "不及格"

if判斷輸入的操作符號(hào)

回到最初的目標(biāo)上來:四則運(yùn)算器

首先暑认,打開原來的add.py程序困介,另存為cala.py程序

然后在第1行結(jié)尾處打回車,增加1個(gè)空行蘸际,然后增加下面一行代碼:

operate=input("your operate:")

然后在num3=num1+num2這一行前面增加一行

if operate=="+" :

然后把num3=num1+num2這一行前面增加4個(gè)空格

然后座哩,把print 這一行里面的"+"修改為operate,保存代碼

這樣粮彤,加法已經(jīng)可以運(yùn)行了八回,我們先測(cè)試一下加法是否正確

注意,輸入運(yùn)算符的時(shí)候驾诈,一定要前后輸入雙引號(hào)缠诅,表示這是一個(gè)字符串

這樣,程序里面判斷語句 operate=="+" 才能正確進(jìn)行判斷乍迄,這里的==表示是邏輯判斷管引,而num1=的這個(gè)=表示賦值操作符

接下,增加elif分支闯两,判斷減法乘法和除法褥伴,在print這行前面增加下列代碼

elif operate=="-" :

? ? num3=num1-num2

elif operate=="*" :

? ? num3=num1*num2

elif operate=="/" :

? ? num3=num1/num2

else :

? ? num3="error operate"

程序測(cè)試的重要性

代碼寫好之后,需要通過反復(fù)的測(cè)試來確保程序是正確的按照預(yù)期的邏輯進(jìn)行處理漾狼,這就是測(cè)試

測(cè)試在軟件工程中是非常重要的一環(huán)

測(cè)試的目的:

1.確保程序本身正確執(zhí)行重慢,不會(huì)崩潰或死循環(huán),或者無法執(zhí)行

2.確保程序是按照設(shè)計(jì)和預(yù)期進(jìn)行執(zhí)行逊躁,得到的結(jié)果是正確和符合預(yù)期的

3.確保程序在不同環(huán)境或者不同條件情況下似踱,仍然能夠正常工作,當(dāng)然這些條件都是在設(shè)計(jì)之中稽煤。

下面核芽,我們就來測(cè)試剛剛做好的四則運(yùn)算器,注意讓程序的每一種情況每一個(gè)分支都運(yùn)行測(cè)試過



課后作業(yè)1:

輸入一個(gè)分?jǐn)?shù)酵熙,根據(jù)分?jǐn)?shù)進(jìn)行判斷轧简,大于等于90分屏幕輸出best,大于等于80分屏幕輸出good匾二,大于等于60分屏幕輸出pass哮独,其他屏幕輸出fail

課后作業(yè)2:

輸入月份和日期拳芙,根據(jù)月份日期判斷是屬于哪個(gè)星座的


往期教程

0001 零基礎(chǔ)的小白能學(xué)會(huì)編程嗎?

0002 真的嗎皮璧,700元的電腦可以學(xué)會(huì)編程舟扎?

0003 十分鐘組裝一臺(tái)電腦開始編程

0004 如何編寫人生的第一行代碼helloworld

0005 鍵盤打字如何練成像黑客一樣的飛速

0006 編程入門python語言之加法計(jì)算器

因?yàn)榻坛淌窍盗薪坛蹋昂箨P(guān)聯(lián)性非常強(qiáng)恶导,請(qǐng)大家按照微信公眾號(hào)的發(fā)布時(shí)間先后次序進(jìn)行閱讀。

微信公眾號(hào)里面直接輸入序號(hào)可以查看該序號(hào)課程浸须,例如輸入0001可以查看【0001 零基礎(chǔ)的小白能學(xué)會(huì)編程嗎惨寿?】

作者簡(jiǎn)介

學(xué)哥,二十年編程經(jīng)驗(yàn)删窒,歷任程序員裂垦,資深程序員,技術(shù)經(jīng)理肌索,項(xiàng)目經(jīng)理蕉拢,產(chǎn)品經(jīng)理,系統(tǒng)架構(gòu)師诚亚,IT總監(jiān)晕换。愛好篆刻,閱讀站宗,美食闸准。

微信號(hào)簡(jiǎn)介

每天半小時(shí)零基礎(chǔ)學(xué)編程。大人可以學(xué)梢灭,小孩也可以學(xué)夷家。練打字,用軟件敏释,寫文檔库快,做網(wǎng)站,做App钥顽,編游戲义屏,數(shù)據(jù)庫,玩硬件蜂大,寫程序湿蛔,3D打印,無人機(jī)县爬,機(jī)器人阳啥。

html,css,javascript,python,php,java,swift,mysql,android,ios,raspberry pi,scratch. 微信公眾號(hào)搜索:零基礎(chǔ)學(xué)編程。

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末财喳,一起剝皮案震驚了整個(gè)濱河市察迟,隨后出現(xiàn)的幾起案子斩狱,更是在濱河造成了極大的恐慌,老刑警劉巖扎瓶,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件所踊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡概荷,警方通過查閱死者的電腦和手機(jī)秕岛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來误证,“玉大人继薛,你說我怎么就攤上這事∮保” “怎么了遏考?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蓝谨。 經(jīng)常有香客問我灌具,道長(zhǎng),這世上最難降的妖魔是什么譬巫? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任咖楣,我火速辦了婚禮,結(jié)果婚禮上芦昔,老公的妹妹穿的比我還像新娘截歉。我一直安慰自己,他們只是感情好烟零,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布瘪松。 她就那樣靜靜地躺著,像睡著了一般锨阿。 火紅的嫁衣襯著肌膚如雪宵睦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天墅诡,我揣著相機(jī)與錄音壳嚎,去河邊找鬼。 笑死末早,一個(gè)胖子當(dāng)著我的面吹牛烟馅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播然磷,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼郑趁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了姿搜?” 一聲冷哼從身側(cè)響起寡润,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤捆憎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后梭纹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躲惰,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年变抽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了础拨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绍载,死狀恐怖诡宗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情逛钻,我是刑警寧澤僚焦,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布锰提,位于F島的核電站曙痘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏立肘。R本人自食惡果不足惜边坤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谅年。 院中可真熱鬧茧痒,春花似錦、人聲如沸融蹂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽超燃。三九已至区拳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間意乓,已是汗流浹背樱调。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留届良,地道東北人笆凌。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像士葫,于是被迫代替她去往敵國(guó)和親乞而。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容