第三章 程序控制結(jié)構(gòu)-1
1.程序基礎(chǔ)
2.順序結(jié)構(gòu)
3.分支結(jié)構(gòu)
4.循環(huán)結(jié)構(gòu)
5.嵌套程序
6.程序的異常處理(選講)
7.random庫
1.程序基礎(chǔ)
Python程序文件一般包括注釋、模塊導(dǎo)入、函數(shù)定義和程序主體等幾個(gè)部分
Python程序由三種基本結(jié)構(gòu)組成:順序結(jié)構(gòu)、分支結(jié)構(gòu)(選擇結(jié)構(gòu))、循環(huán)結(jié)構(gòu)
2.順序結(jié)構(gòu)
程序按照語句順序依次執(zhí)行的一種運(yùn)行方式
#E1-1.py
‘’’已知圓的半徑
輸出圓的周長(zhǎng)和面積’’’
r=2.5
c=2*3.14*r
s=3.14*r*r
print("c=",c,end=‘ ‘)
print("s=",s)
#E1-2.py
#繪制正方形
import turtle
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
3.分支結(jié)構(gòu)
分支結(jié)構(gòu)(選擇結(jié)構(gòu))是根據(jù)條件判斷的結(jié)果控制不同分支執(zhí)行的結(jié)構(gòu)
- 單分支結(jié)構(gòu)
- 雙分支結(jié)構(gòu)
- 多分支結(jié)構(gòu)
3.1單路分支結(jié)構(gòu)
單分支結(jié)構(gòu)是一種取舍結(jié)構(gòu),就是只有 一種選擇,要么選,要么不選,即符合某一條件就單獨(dú)處理,不符合就不做處理
if <條件表達(dá)式>:
<語句塊>
語法格式
- 當(dāng)<條件表達(dá)式>為True時(shí),執(zhí)行<語句塊>中若干語句,否則不執(zhí)行任何操作。
- <條件表達(dá)式>可以是關(guān)系表達(dá)式、邏輯表達(dá)式、算術(shù)表達(dá)式等。
- <語句塊>前有縮進(jìn),冒號(hào)“:”不能缺省。
【例3-1】輸入一個(gè)整數(shù),如果是偶數(shù)則輸出“這是個(gè)偶數(shù)”,否則什么也不輸出
#E3-1-1.py
N=int(input("請(qǐng)輸入一個(gè)整數(shù):"))
if N%2==0:
print("這是個(gè)偶數(shù)")
#E3-1-2.py
N=eval(input("請(qǐng)輸入一個(gè)整數(shù):"))
if N%2==0:
print("這是個(gè)偶數(shù)")
注意print()前要有縮進(jìn) 4個(gè)空格
【例3-2】任意輸入兩個(gè)數(shù)x、y,請(qǐng)將這兩個(gè)數(shù)由小到大輸出
分析:
(1)輸入x、y
(2)如果x>y,則交換x和y,否則不交換
(3)最后輸出x、y
#E3-2-1.py
x=int(input("請(qǐng)輸入x:"))
y=int(input("請(qǐng)輸入y:"))
if x>y:
x,y=y,x
print(x,y)
#E3-2-2.py
x,y=eval(input("請(qǐng)輸入x、y:"))
if x>y:
x,y=y,x
print(x,y)
【例3-3】任意輸入三個(gè)數(shù)x、y、z,請(qǐng)將這三個(gè)數(shù)由小到大輸出
分析:
(1)輸入x、y 、z
(2)如果x>y,則交換x和y,否則不交換
(3)如果x>z,則交換x和z,否則不交換
(4)如果y>z,則交換y和z,否則不交換。
(5)最后輸出x、y、z
#E3-3-1.py
x,y,z=eval(input("輸入3個(gè)數(shù)(用逗號(hào)分隔):"))
if x>y:
x,y=y,x
if x>z:
x,z=z,x
if y>z:
y,z=z,y
print(x,y,z)
#E3-3-2.py
x,y,z=eval(input("輸入3個(gè)數(shù)(用逗號(hào)分隔):"))
if x>y:
x,y=y,x
if y>z:
y,z=z,y
if x>y:
x,y=y,x
print(x,y,z)
程序運(yùn)行結(jié)果
輸入3個(gè)數(shù)(用逗號(hào)分隔):5,3,7
3 5 7
【例3-4】輸入腋下體溫值t,根據(jù)如下情況分別輸出:
t<36.1輸出:您的體溫偏低
36.1<=t<=37.2 輸出:您的體溫正常
37.3<t輸出:您的體溫偏高
#E3-4.py
t=eval(input("請(qǐng)輸入體溫值:"))
if t<36.1:
print("您的體溫偏低")
if 36.1<=t<=37.2:
print("您的體溫正常")
if 37.3<t:
print("您的體溫偏高")
程序運(yùn)行結(jié)果
請(qǐng)輸入體溫值:35
您的體溫偏低
請(qǐng)輸入體溫值:36.7
您的體溫正常
請(qǐng)輸入體溫值:38.5
您的體溫偏高
3.2 random庫
random庫
- 是Python的一個(gè)標(biāo)準(zhǔn)庫,包含多種生成偽隨機(jī)數(shù)的函數(shù)
- 該庫中的大部分函數(shù)都基于random.random( )函數(shù)
- prandom.random( )函數(shù)使用梅森旋轉(zhuǎn)算法(Mersenne twister)生成偽隨機(jī)數(shù)。
- 使用random庫的功能前,需要先導(dǎo)入random庫
為什么是偽隨機(jī)數(shù)?
隨機(jī)數(shù)隨機(jī)事件是不確定性的產(chǎn)物,其結(jié)果是不可預(yù)測(cè)、產(chǎn)生之前不可預(yù)見
無論計(jì)算機(jī)產(chǎn)生的隨機(jī)數(shù)看起來多么“隨機(jī)”,它們也不是真正意義上的隨機(jī)數(shù)
因?yàn)橛?jì)算機(jī)是按照一定算法產(chǎn)生隨機(jī)數(shù)的,其結(jié)果是確定的、可預(yù)見的、稱為“偽隨機(jī)數(shù)”。
random庫的常用函數(shù)
| 函數(shù) | 說明 |
|---|---|
| random() | 生成一個(gè)[0.0,1.0)之間的隨機(jī)小數(shù) |
| randint(a,b) | 生成一個(gè)[a,b]之間的整數(shù) |
| uniform(a,b) | 生成一個(gè)[a,b]之間的隨機(jī)小數(shù) |
| randrange(start,stop[,step]) | 生成一個(gè)[start,stop]之間以step為步數(shù)的隨機(jī)整數(shù) |
| seed(a=None) | 初始化隨機(jī)數(shù)種子,默認(rèn)值為當(dāng)前系統(tǒng)時(shí)間,一般用一個(gè)整數(shù)作為隨機(jī)數(shù)種子,如seed(125),seed(200)等 |
只要種子相同,每次生成的隨機(jī)數(shù)也相同,這樣便于測(cè)試和同步數(shù)據(jù)
>>> import random
>>> random.random()
0.5849568047225475
>>> random.uniform(10,20)
15.996127922390558
>>> random.randint(0,10)
8
>>> random.seed(100)
>>> random.randint(0,10)
2
>>> random.randint(0,10)
7
>>> from random import *
>>> random()
0.45492700451402135
>>> uniform(10,20)
17.70783805659022
>>> randint(0,10)
6
>>> seed(100)
>>> randint(0,10)
2
>>> randint(0,10)
7
【例3-5】游戲猜數(shù)字:隨機(jī)產(chǎn)生一個(gè)0-10間的整數(shù),玩家通過鍵盤輸入一個(gè)數(shù)競(jìng)猜,若猜中,則提示“恭喜你猜對(duì)啦”,否則什么也不提示
分析:
(1)隨機(jī)產(chǎn)生0-10間的整數(shù)賦給變量num
(2)通過鍵盤輸入一個(gè)數(shù)賦給變量x
(3)如果 x== num,輸出“恭喜你猜對(duì)啦”
#E3-5.py
from random import *
num=randint(0,10)
x=int(input("請(qǐng)輸入一個(gè)數(shù):"))
if num==x:
print("恭喜你猜對(duì)啦!")
#print("隨機(jī)數(shù)是:",num)
【例3-6】登錄程序:用戶通過鍵盤輸入用戶名和密碼,如果輸入的用戶名為空,輸出“用戶名不能為空”;如果輸入的密碼為空,輸出“密碼不能為空”;如果輸入的用戶名為“abc”,并且密碼為”123”,輸出“歡迎進(jìn)入本系統(tǒng)”,否則什么也提示
分析:
(1)通過鍵盤輸入用戶名賦給userName,輸入密碼賦給passWord
(2)如果輸入的用戶名為空,輸出“用戶名不能為空”
(3)如果輸入的密碼為空,輸出“密碼不能為空”
(4)如果輸入的用戶名為“abc”,并且密碼為“123”,輸出“歡迎進(jìn)入本 系統(tǒng)”
#E3-6.py
#登錄程序
userName=input("請(qǐng)輸入用戶名:")
passWord=input("請(qǐng)輸入密碼:")
if userName=="":
print("用戶名不能為空")
if passWord=="":
print("密碼不能為空")
if userName=="abc" and \
passWord=="123": # \ 為續(xù)行符
print("歡迎進(jìn)入本系統(tǒng)")