4.2簡(jiǎn)單分支

一、簡(jiǎn)單分支

計(jì)算機(jī)程序可以被理解為一條順序執(zhí)行的代碼,順序結(jié)構(gòu)是程序設(shè)計(jì)的基礎(chǔ)越锈,但單一的順序結(jié)構(gòu)不可能解決所有的問(wèn)題仗嗦。因此,需要引入控制結(jié)構(gòu)來(lái)改變程序的執(zhí)行順序甘凭,以滿足復(fù)雜的功能需求稀拐。

如何允許程序在不同情況下,以不同的順序執(zhí)行指令丹弱。以及如何有效的選擇程序的執(zhí)行路徑德撬。

二、PM2.5空氣質(zhì)量程序


PM2.5對(duì)應(yīng)于空氣質(zhì)量等級(jí)

1躲胳、PM2.5指數(shù)分級(jí)程序功能IPO模式描述

①蜓洪、輸入:接受外部輸入PM2.5值

②、處理:空氣質(zhì)量分級(jí)算法

③坯苹、輸出:打印空氣質(zhì)量提醒

2隆檀、PM2.5指數(shù)分級(jí)偽代碼

if PM2.5值>75

? ? ? ? ? ? 打印空氣污染警告

if PM2.5值<35

? ? ? ? ? ? 打印空氣質(zhì)量?jī)?yōu),建議戶外運(yùn)動(dòng)

流程圖

菱形框給出決策條件粹湃,如果條件不成立恐仑,控制傳遞給隊(duì)列中下一個(gè)語(yǔ)句。條件成立为鳄,控制傳遞給右邊的方框中裳仆。完成這些指令后,控制傳遞到下一個(gè)語(yǔ)句济赎。

三鉴逞、空氣質(zhì)量提醒py程序

#pm25.py

#空氣質(zhì)量提醒

def main():

? ? ? ?PM = eval ( input?("What is today's PM2.5" ) )

? ? ? ?#打印相應(yīng)提醒

? ? ? ?if PM > 75 :

? ? ? ? ????print ( "Unhealthy. Be careful ! " )

? ? ? ?if PM < 35 :

????????????print?( "Good. Go running ! " )

main()

1、if語(yǔ)句格式

if <condition>:

? ? ????<body>

①<condition>是條件表達(dá)式

②<body>是一個(gè)或多個(gè)語(yǔ)句序列

2司训、先判斷<condition>條件

①true构捡,則執(zhí)行<body>,再轉(zhuǎn)向下一條語(yǔ)句

②false壳猜,則直接跳過(guò)<body>勾徽,轉(zhuǎn)向下一條語(yǔ)句

if語(yǔ)句體的執(zhí)行與否,依賴于條件判斷统扳。但無(wú)論什么情況喘帚,控制都會(huì)轉(zhuǎn)向if后面的下一條語(yǔ)句。這就是簡(jiǎn)單分支結(jié)構(gòu)咒钟。

3吹由、簡(jiǎn)單條件構(gòu)造

①簡(jiǎn)單條件基本形式<expr> <relop> <expr>

②<relop>是關(guān)系操作符<,<=朱嘴,==倾鲫,>=粗合,>,!=

③使用“=”表示賦值語(yǔ)句乌昔,使用“==”表示等于

④除數(shù)字外隙疚,字符或字符串也可以按照字典順序用于條件比較

⑤<condition>是布爾表達(dá)式,為bool類型磕道,布爾值的真和假以字符True和False表示


關(guān)系操作符

四供屉、求解二次方程的實(shí)數(shù)根程序

#quadratic.py

#計(jì)算二次方程的實(shí)數(shù)根程序

#此方程在方程沒(méi)有實(shí)根的情況下報(bào)錯(cuò)

import math

def main () :

????????print("This program finds the real solutions to a quadratic\n")

? ? ? ? a , b , c = eval( input ("Please enter the coefficients(a , b , c ):") )

? ? ? ? discRoot = math.sqrt( b * b - 4 * a * c)

? ? ? ? root1 =?(-b + discRoot ) /?(2 * a )

? ? ? ? root2 =?(-b - discRoot ) /?(2 * a )

????????print( " \nThe solutions are:" , root1, root2)

main()

1、二次方程求解的IPO模式

①輸入二次方程參數(shù)

②處理為二次方程求解算法

③輸出為打印二次方程的根

2溺蕉、執(zhí)行程序伶丐,輸入1,2,3時(shí)報(bào)錯(cuò)

程序報(bào)錯(cuò)

3、改進(jìn)程序

#quadratic2.py

import math

def main() :

print("This program finds the real solutions to a quadratic\n")

a , b , c = eval( input("Please enter the coefficients(a , b , c ):"))

delta = ?b * b - 4 * a * c

if delta >= 0:

? ? ? ? discRoot = math.sqrt(delta)

????????root1 =?(-b + discRoot ) /?(2 * a )

????????root2 =?(-b - discRoot ) /?(2 * a )

????????print( " \nThe solutions are:" , root1, root2)

main()

當(dāng)delta為負(fù)時(shí)焙贷,這個(gè)程序則不會(huì)調(diào)用math庫(kù)中的sqrt函數(shù)

執(zhí)行結(jié)果

delta小于0時(shí)會(huì)簡(jiǎn)單跳過(guò)if語(yǔ)句撵割,直接退出程序,沒(méi)有給出用戶任何的出錯(cuò)反饋辙芍。好的程序應(yīng)該打印一條消息啡彬,告訴用戶這個(gè)方程沒(méi)有實(shí)根。

所以在程序尾部添加另一個(gè)決策判斷來(lái)實(shí)現(xiàn)消息打印故硅。

if delta < 0 :

? ? ? ? print("The equation has no real roots !")

以上改進(jìn)解決了出錯(cuò)的問(wèn)題庶灿,但仍然不夠完美。根據(jù)delta的值吃衅,程序應(yīng)該打印無(wú)實(shí)根往踢,或計(jì)算并顯示實(shí)根。

四徘层、二分支決策

這正是一個(gè)上面編寫(xiě)的雙決策序列峻呕,兩個(gè)結(jié)果互相排斥。如果delta>=0是真的趣效,那么delta<0就一定是假的瘦癌,反之亦然。這看起來(lái)是兩個(gè)條件跷敬,但實(shí)際上他們只是一種決策讯私。我們可以通過(guò)使用python中的if……else語(yǔ)句來(lái)實(shí)現(xiàn)這個(gè)二分支決策。

部分流程圖

二分支語(yǔ)法結(jié)構(gòu)

if <condition> :

? ? ? ? <statements>

else :

? ? ? ? <statements>

當(dāng)python解釋器遇到這個(gè)結(jié)構(gòu)時(shí)西傀,首先評(píng)估condition斤寇,如果condition是真的,if下面的語(yǔ)句被執(zhí)行拥褂。如果condition是假的娘锁,轉(zhuǎn)而執(zhí)行else下面的語(yǔ)句。無(wú)論哪種情況饺鹃,之后的控制都會(huì)傳給if……else后面的語(yǔ)句莫秆。

下面給出了二次方程求解中碎税,使用一個(gè)二次分支決策的求解二次方程的程序代碼。

#quadratic3.py

import math

def main() :

????????print("This program finds the real solutions to a quadratic\n")

????????a , b , c = eval( input("Please enter the coefficients(a , b , c ):"))

????????delta = ?b * b - 4 * a * c

????????if?delta < 0:

? ? ? ? ? ? ????print("\nThe equation has no real roots ! ")

? ? ? ? else :

????????????????discRoot = math.sqrt(delta)

????????????????root1 =?(-b + discRoot ) /?(2 * a )

????????????????root2 =?(-b - discRoot ) /?(2 * a )

????????????????print( " \nThe solutions are:" , root1, root2)

main()

程序運(yùn)行結(jié)果
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末馏锡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子伟端,更是在濱河造成了極大的恐慌杯道,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件责蝠,死亡現(xiàn)場(chǎng)離奇詭異党巾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)霜医,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門齿拂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人肴敛,你說(shuō)我怎么就攤上這事署海。” “怎么了医男?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵砸狞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我镀梭,道長(zhǎng)刀森,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任报账,我火速辦了婚禮研底,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘透罢。我一直安慰自己榜晦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布琐凭。 她就那樣靜靜地躺著芽隆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪统屈。 梳的紋絲不亂的頭發(fā)上胚吁,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音愁憔,去河邊找鬼腕扶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吨掌,可吹牛的內(nèi)容都是我干的半抱。 我是一名探鬼主播脓恕,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼窿侈!你這毒婦竟也來(lái)了炼幔?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤史简,失蹤者是張志新(化名)和其女友劉穎乃秀,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體圆兵,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡跺讯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了殉农。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刀脏。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖超凳,靈堂內(nèi)的尸體忽然破棺而出愈污,到底是詐尸還是另有隱情,我是刑警寧澤聪建,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布钙畔,位于F島的核電站,受9級(jí)特大地震影響金麸,放射性物質(zhì)發(fā)生泄漏擎析。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一挥下、第九天 我趴在偏房一處隱蔽的房頂上張望揍魂。 院中可真熱鬧,春花似錦棚瘟、人聲如沸现斋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)庄蹋。三九已至,卻和暖如春迷雪,著一層夾襖步出監(jiān)牢的瞬間限书,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工章咧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留倦西,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓赁严,卻偏偏與公主長(zhǎng)得像扰柠,于是被迫代替她去往敵國(guó)和親粉铐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)卤档。 張土汪:刷leetcod...
    土汪閱讀 12,724評(píng)論 0 33
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,776評(píng)論 1 10
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程蝙泼,因...
    小菜c閱讀 6,358評(píng)論 0 17
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法劝枣,內(nèi)部類的語(yǔ)法踱承,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法哨免,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,587評(píng)論 18 399
  • 《和秋葉一起學(xué)PPT》 做PPT的三個(gè)要點(diǎn): 1、極致的美感2昙沦、有效的信息3琢唾、完美的邏輯 做PPT的過(guò)程應(yīng)該是: ...
    乾誠(chéng)的字閱讀 601評(píng)論 0 10