四 程序控制結構

4.1 分支結構

4.1.1 單分支結構

基本構成:

if <條件>:

? <語句1>

基本實例:

guess=eval(input())

if guess==99:

? ? print("猜對了")

4.1.2 二分支結構

定義:可以根據(jù)條件結果而選擇不同路徑的語句

基本構成:

if <條件>:

? ? <語句1>

else:

? ? <語句2>

基本實例:

guess=eval(input())

if guess==99:

? ? print("猜對了")

else:

? ? print("猜錯了")

緊湊形式:適用于簡單表達的二分支結構

基本構成:

<表達式1>if<條件>else<表達式2>

基本實例:

guess=eval(input())

print("猜{}了".format("對"if guess==99 else"錯"))

4.1.3 多分支結構

基本構成:

if <條件>:

? ? <語句1>

elif:

? ? <語句2>

? ? ....

else:

? ? <語句塊3>

基本實例:

score=eval(input())

if score>=90:

? ? grade="A"

elif score>=80:

? ? grade="B"

elif score>=70:

? ? grade="C"

elif score>=60:

? ? grade="D"

print("該成績的等級為{}".format(grade))

4.1.4 條件判斷及組合

條件判斷操作符:

<

小于

>

大于

==

等于

>=

大于等于

<=

小于等于

!=

不等于

保留字:

X and Y

X與Y同時成立

X or Y

X或者Y成立一個

not X

不滿足X

基本實例:

guess=eval(input())

if guess>99 or guess<99:

? ? print("猜對了")

else:

? ? print("猜錯了")

4.1.4 程序的異常處理

基本異常處理:

try:

? ? <語句1>

except:

? ? <語句2>

實例:

try:

? ? num=eval(input())

? ? print(num**2)

expect:

? ? print("輸入的數(shù)字非整數(shù)")

也可以在expect,后面加入異常原因,只有在這種異常情況下才會輸出果录。

實例:

try:

? ? num=eval(input())

? ? print(num**2)

expect NaneError:

? ? print("輸入的數(shù)字非整數(shù)")

高級異常處理:

try:

? ? <語句1>

except:

? ? <語句2>

else:

? ? <語句3>

finally:

? ? <語句4>

else為不發(fā)生異常時執(zhí)行,

finally為一定執(zhí)行伟桅。

4.2 BMI實例

4.2.1國際標準實例

#CalBMIV1.py

height,weight=eval(input("請輸入身高(米)和體重(公斤)[逗號隔開]:"))

bmi=weight/pow(height,2)

print("BMI指數(shù)為:{:.2f}".format(bmi))

who=""

if bmi<18.5:

? ? ? who="偏瘦"

elif 18.5<=bmi<25:

? ? who="正常"

elif 25<=bmi<30:

? ? who="偏胖"

else:

? ? who="肥胖"

print("BMI指標為:國際'{0}'".format(who))

4.2.2 國內(nèi)標準實例

#CalBMIV2.py

height,weight=eval(input("請輸入身高(米)和體重(公斤)[逗號隔開]:"))

bmi=weight/pow(height,2)

print("BMI指數(shù)為:{:.2f}".format(bmi))

who=""

if bmi<18.5:

? ? ? who="偏瘦"

elif 18.5<=bmi<24:

? ? who="正常"

elif 24<=bmi<28:

? ? who="偏胖"

else:

? ? who="肥胖"

print("BMI指標為:國內(nèi)'{0}'".format(who))

4.2.3 國際國內(nèi)同時輸出

#CalBMIV3.py

height,weight=eval(input("請輸入身高(米)和體重(公斤)[逗號隔開]:"))

bmi=weight/pow(height,2)

print("BMI指數(shù)為:{:.2f}".format(bmi))

who,nat="",""

if bmi<18.5:

? ? ? who,nat="偏瘦","偏瘦"

elif 18.5<=bmi<25:

? ? who,nat="正常","偏胖"

elif 25<=bmi<30:

? ? who,nat="偏胖","肥胖"

else:

? ? who,nat="肥胖","肥胖"

print("BMI指標為:國際'{0}',國內(nèi)'{0}'".format(who,nat))

4.3 程序的循環(huán)結構

4.3.1 遍歷循環(huán)

定義:遍歷某個結構形成的循環(huán)運行方式

for <循環(huán)變量> in <遍歷結構>:

? ? <語句塊>

①計數(shù)循環(huán)

基本:

for i in range (N):

? ? print(i)

for i in range (5):

? ? print(i)

for i in range (5):

? ? print("hello",i)

變形:

for i in range (M,N,K):

? ? print(i)

for i in range (1,6):

? ? print(i)

for i in range (1,6,2):

? ? print("hello",i)

②字符串遍歷循環(huán)

for c in s:

? ? <語句塊>

for c in "PYTHON123":

? ? print(c,end=",")

③列表遍歷循環(huán)

for item in Is:

? ? <語句塊>

for item in [123,"PY",456]:

? ? print(item,end=",")

④文件遍歷循環(huán)

for line in fi:

? ? <語句塊>

4.3.2 無限循環(huán)

定義:由條件控制的循環(huán)運行方式

有限:

a=3

while a >0:

? ? a=a-1

? ? print(a)

無限:

a=3

while a >0:

? ? a=a+1

? ? print(a)

4.3.3 循環(huán)控制保留字

常用:break? continue

break:跳出并結束當前整個循環(huán),執(zhí)行循環(huán)后的內(nèi)容

continue:結束檔次循環(huán),繼續(xù)執(zhí)行后續(xù)循環(huán)

break實例:

for c in "PYTHON123":

? ? if c=="T":

? ? ? ? break

? ? print(c,end="")

continue實例:

for c in "PYTHON123":

? ? if c=="T":

? ? ? ? continue

? ? print(c,end="")

實例:

s="PYTHON"

while s!="":

? ? for c in s:

? ? ? ? print(c,end="")

? ? s=s[:-1]

s="PYTHON"

while s!="":

? ? for c in s:

? ? ? ? if c=="T":

? ? ? ? ? ? break

? ? ? ? print(c,end="")

? ? s=s[:-1]

4.3.4 循環(huán)的高級用法

可與else搭配

for c in "PYTHON123":

? ? if c=="T":

? ? ? ? coutinue

? ? print(c,end="")

else:

? ? print("正常退出")

for c in "PYTHON123":

? ? if c=="T":

? ? ? ? break

? ? print(c,end="")

else:

? ? print("正常退出")

4.4random庫的使用

定義:random庫是使用隨機數(shù)的標準庫

分類:

隨機函數(shù)

用法

seed(a=None)

初始化給定的隨機數(shù)種子省撑,默認為當前系統(tǒng)時間。<br />random.seed(10),產(chǎn)生種子10對應序列

random()

生成一個(0.0,1.0)之間的小數(shù)<br />random.random()

randint(a,b)

生成a,b之間的整數(shù)<br />random.randint(10,100)

randrange(m,n,k)

生成(M,N)之間以K為步長的整數(shù)<br />random.randrange(10,100,10)

getrandbits(k)

生成一個K比特長的隨機整數(shù)<br />random.getrandbits(16)

uniform(a,b)

生成一個(a,b)之間的隨機小數(shù)<br />random,uniform(10,100)

choice(seq)

從數(shù)列seq中隨機選取一個元素<br />random,choice([1,2,3,4,5,6,7,8])

shuffle(seq)

將seq中元素隨機排列 俯在,返回后打亂順序<br />s=[1,2,3,4,5,6,7,8,9];random;shuffle(s);print(s)

實例:

import random

random.seed(10)

random.random()

4.5 圓周率的計算

公式法:

#CalPiV1.py

pi=0

N=100

for k in range(N):

? ? pi+=1/pow(16,k)*(4/(8*k+1)-2/(8*k+4)-1/(8*k+5)-1/(8*k+6))

print("圓周率的值是:{}".format(pi))


蒙特卡羅法實例:

#CalPiV2.py

from random import random

from time import perf_counter

DARTS=1000*1000

hits=0.0

start=perf_counter()

for i in range(1,DARTS+1):

? ? x,y=random(),random()

? ? dist=pow(x**2+y**2,0.5)

? ? if dist<=1.0:

? ? ? ? hits=1+hits

pi=4*(hits/DARTS)

print("圓周率的值是:{}".format(pi))

print("運行時間為:{:.5f}s".format(perf_counter()-start))

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末竟秫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子朝巫,更是在濱河造成了極大的恐慌鸿摇,老刑警劉巖石景,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劈猿,死亡現(xiàn)場離奇詭異,居然都是意外死亡潮孽,警方通過查閱死者的電腦和手機揪荣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來往史,“玉大人仗颈,你說我怎么就攤上這事∽道” “怎么了挨决?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長订歪。 經(jīng)常有香客問我脖祈,道長,這世上最難降的妖魔是什么刷晋? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任盖高,我火速辦了婚禮,結果婚禮上眼虱,老公的妹妹穿的比我還像新娘喻奥。我一直安慰自己,他們只是感情好捏悬,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布撞蚕。 她就那樣靜靜地躺著,像睡著了一般过牙。 火紅的嫁衣襯著肌膚如雪诈豌。 梳的紋絲不亂的頭發(fā)上仆救,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機與錄音矫渔,去河邊找鬼彤蔽。 笑死,一個胖子當著我的面吹牛庙洼,可吹牛的內(nèi)容都是我干的顿痪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼油够,長吁一口氣:“原來是場噩夢啊……” “哼蚁袭!你這毒婦竟也來了?” 一聲冷哼從身側響起石咬,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤揩悄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鬼悠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體删性,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年焕窝,在試婚紗的時候發(fā)現(xiàn)自己被綠了蹬挺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡它掂,死狀恐怖巴帮,靈堂內(nèi)的尸體忽然破棺而出虐秋,到底是詐尸還是另有隱情榕茧,我是刑警寧澤客给,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站起愈,受9級特大地震影響只恨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抬虽,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望休涤。 院中可真熱鬧,春花似錦、人聲如沸功氨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捷凄。三九已至,卻和暖如春跺涤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桶错。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工院刁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留糯钙,地道東北人退腥。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像阅虫,于是被迫代替她去往敵國和親不跟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

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