四 程序控制結構

4.1 分支結構

4.1.1 單分支結構

基本構成:

if <條件>:

? <語句1>

基本實例:

guess=eval(input())

if guess==99:

? ? print("猜對了")

4.1.2 二分支結構

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

基本構成:

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("輸入的數字非整數")

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

實例:

try:

? ? num=eval(input())

? ? print(num**2)

expect NaneError:

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

高級異常處理:

try:

? ? <語句1>

except:

? ? <語句2>

else:

? ? <語句3>

finally:

? ? <語句4>

else為不發生異常時執行,

finally為一定執行。

4.2 BMI實例

4.2.1國際標準實例

#CalBMIV1.py

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

bmi=weight/pow(height,2)

print("BMI指數為:{:.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 國內標準實例

#CalBMIV2.py

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

bmi=weight/pow(height,2)

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

who=""

if bmi<18.5:

? ? ? who="偏瘦"

elif 18.5<=bmi<24:

? ? who="正常"

elif 24<=bmi<28:

? ? who="偏胖"

else:

? ? who="肥胖"

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

4.2.3 國際國內同時輸出

#CalBMIV3.py

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

bmi=weight/pow(height,2)

print("BMI指數為:{:.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}',國內'{0}'".format(who,nat))

4.3 程序的循環結構

4.3.1 遍歷循環

定義:遍歷某個結構形成的循環運行方式

for <循環變量> in <遍歷結構>:

? ? <語句塊>

①計數循環

基本:

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)

②字符串遍歷循環

for c in s:

? ? <語句塊>

for c in "PYTHON123":

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

③列表遍歷循環

for item in Is:

? ? <語句塊>

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

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

④文件遍歷循環

for line in fi:

? ? <語句塊>

4.3.2 無限循環

定義:由條件控制的循環運行方式

有限:

a=3

while a >0:

? ? a=a-1

? ? print(a)

無限:

a=3

while a >0:

? ? a=a+1

? ? print(a)

4.3.3 循環控制保留字

常用:break? continue

break:跳出并結束當前整個循環,執行循環后的內容

continue:結束檔次循環,繼續執行后續循環

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 循環的高級用法

可與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庫是使用隨機數的標準庫

分類:

隨機函數

用法

seed(a=None)

初始化給定的隨機數種子,默認為當前系統時間。<br />random.seed(10),產生種子10對應序列

random()

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

randint(a,b)

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

randrange(m,n,k)

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

getrandbits(k)

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

uniform(a,b)

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

choice(seq)

從數列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))

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,882評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,208評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,746評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,666評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,477評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,960評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,200評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,726評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,617評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,807評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,049評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,425評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,674評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,432評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,769評論 2 372

推薦閱讀更多精彩內容