028 程式的控制結構小結
阿新 • • 發佈:2020-12-13
目錄
一、數字型別及操作
- 整數型別的無限範圍及4種進製表示
- 浮點數型別的近似無限範圍、小尾數及科學計數法
- +、-、*、/、//、%、**、二元增強賦值操作符
- abs()、divmod()、pow()、round()、max()、min()
- int()、float()、complex()
# DayDayUpQ3.py
dayup = 1.0
dayfactor = 0.01
for i in range(365):
if i % 7 in [6, 0]:
dayup = dayup * (1 - dayfactor)
else:
dayup = dayup * (1 + dayfactor)
print("工作日的力量:{:.2f} ".format(dayup)) # 工作日的力量:4.63
工作日的力量:4.63
def dayUP(df):
dayup = 1
for i in range(365):
if i % 7 in [6, 0]:
dayup = dayup * (1 - 0.01)
else:
dayup = dayup * (1 + df)
return dayup
dayfactor = 0.01
while dayUP(dayfactor) < 37.78:
dayfactor += 0.001
print("工作日的努力引數是:{:.3f} ".format(dayfactor)) # 工作日的努力引數是:0.019
工作日的努力引數是:0.019
二、字串型別及操作
- 正向遞增序號、反向遞減序號、<字串>[M:N:K]
- +、*、len()、str()、hex()、oct()、ord()、chr()
- .lower()、.upper()、.split()、.count()、.replace()
- .center()、.strip()、.join()、.format()格式化
# TextProBarV1.py
import time
scale = 10
print("執行開始".center(scale // 2, "-"))
start = time.perf_counter()
for i in range(scale + 1):
a = '*' * i
b = '.' * (scale - i)
c = (i / scale) * 100
dur = time.perf_counter() - start
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c, a, b, dur), end='')
time.sleep(0.1)
print("\n" + "執行結束".center(scale // 2, '-'))
-執行開始
100%[**********->]1.02s
-執行結束
三、程式的分支結構
- 單分支
if
二分支if-else
及緊湊形式 - 多分支
if-elif-else
及條件之間關係 not and or > >= == <= < !=
- 異常處理
try-except-else-finally
# 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 < 24:
who, nat = "正常", "正常"
elif 24 <= bmi < 25:
who, nat = "正常", "偏胖"
elif 25 <= bmi < 28:
who, nat = "偏胖", "偏胖"
elif 28 <= bmi < 30:
who, nat = "偏胖", "肥胖"
else:
who, nat = "肥胖", "肥胖"
print("BMI 指標為:國際'{0}', 國內'{1}'".format(who, nat))
請輸入身高(米)和體重\(公斤)[逗號隔開]: 1.8,70
BMI 數值為:21.60
BMI 指標為:國際'正常', 國內'正常'
四、程式的迴圈結構
for…in
遍歷迴圈:計數、字串、列表、檔案…while
無限迴圈continue
和break
保留字:退出當前迴圈層次- 迴圈else的高階用法:與
break
有關
# 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 = hits + 1
pi = 4 * (hits / DARTS)
print("圓周率值是: {}".format(pi))
print("執行時間是: {:.5f}s".format(perf_counter() - start))
圓周率值是: 3.141364
執行時間是: 0.71023s