4.1 程序的分支结构
单分支结构
if :
guess = eval(input())
if guess == 99:
print("bingo!")
二分支结构
if :
else :
guess = eval(input())
if guess == 99:
print("bingo!")
else :
print("Wrong!")
多分支结构
if :
elif :
……
else :
条件判断及组合
条件判断
image-20201120191012479.png
条件组合
image-20201120191028745.png
实例:
guess = eval(input())
if guess > 99 or guess < 99:
print("猜错了")
else :
print("猜对了")
程序的异常处理
num = eval(input("请输入一个整数: "))
print(num**2)
当用户没有输入整数时,会产生异常,怎么处理?
image-20201120191317968.png
image-20201120191342580.png
实例:
try :
num = eval(input("请输入一个整数: "))
print(num**2)
except :
print("输入不是整数")
实例2:
try :
num = eval(input("请输入一个整数: "))
print(num**2)
except NameError: #标注异常类型后,仅响应此类异常,异常类型名字等同于变量名
print("输入不是整数")
image-20201120203153341.png
4.2 实例5: 身体质量指数BMI
BMI = 体重 (kg) / 身高2 (m2)
image-20201120203408643.png
# cal BMI v1
height,weight = eval(input("请输入身高(m)和体重(kg),逗号隔开:"))
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.3 程序的循环结构
遍历循环
for in :
计数循环(N次)
for i in range(N):
计数循环(特定次)
for i in range(M,N,K):
字符串遍历循环
for c in s :
for c in "python123":
print(c,end="\n")
列表遍历循环
for item in ls:
for item in [123,"py",456]:
print(item,end="\n")
文件遍历循环
for line in fi:
无限循环
while :
a = 3
while a > 0 :
a = a - 1
print(a)
循环控制保留字
break:跳出并结束当前整个循环,执行循环后的语句
continue:结束当次循环,继续执行后续次数循环
for c in "PYTHON" :
if c == "T" :
continue
print(c, end="")
for c in "PYTHON" :
if c == "T" :
break
print(c, end="")
循环的高级用法
image-20201120212649075.png
image-20201120212711682.png
image-20201120212743481.png
番外:
image-20201120213220905.png
4.4 模块3: random库的使用
image-20201120213312408.png
基本随机数函数: seed(), random()
扩展随机数函数: randint(), getrandbits(), uniform(), randrange(), choice(), shuffle()
基本随机函数
image-20201120221430915.png
image-20201120221656401.png
扩展随机函数
image-20201120221807587.png
image-20201120221821464.png
image-20201120221955103.png
image-20201120222019586.png
4.5 实例6: 圆周率的计算
圆周率的近似计算公式
image-20201120222247530.png
image-20201120222309644.png
# 计算圆周率
pi = 0
N = 100000
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(k)
print("圆周率是:{}".format(pi))
蒙特卡罗方法
# cal pi v2
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))
image-20201120225011959.png