程序的控制结构
程序的分支结构
- 单分支结构 根据判断条件结果而选择不同向前路径的运行方式,例如:if语句
- 二分支结构 例如 if <条件> else <表达式>
- 多分支结构 例如 if <条件1>: <表达式1> elif <条件2>: <表达式2> else: <表达式3>
- 条件判断及组合
条件判断 条件组合
- 程序的异常处理 try: <语句1> except: <语句2>
try:
<语句1>
except:
<语句2>
else:
<语句3>
finally:
<语句4>
身体质量指数BMI
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 = "偏胖", "肥胖"
print("BMI指标为:国际'{0}', 国内‘{1}’".format(who, nat))
程序的循环结构
- 遍历循环
for <循环变量> in <遍历结构> : <语句块>
# 循环N次
for i in range(N):
<语句块>
# 循环特定次数
for i in range(M,N,K):
<语句块>
# 字符串遍历
for i in "python"
print(i, end=",") # p,y,t,h,o,n,
# 列表遍历循环
for item in [123, 'ww', 456]:
print(item, end=",") # 123,ww,456
- 无限循环
反复执行语句块,直到条件不满足 while <条件>:<语句块>
a = 3
while a > 0:
a = a - 1
print(a) # 2 1 0
- 循环控制保留字
break跳出并结束当前整个循环,执行循环后的语句
continue结束当次循环,继续执行后续次数循环
break和continue可以与for和while循环搭配使用
random库的使用
- 基本随机数函数:
seed(),random()
- 扩展随机数函数:
randint(),getrandbits(),uniform(), randrange(),choice(),shuffle()
randint(a,b)
生成一个[a,b]之间的整数
random.randint(10,100)
=>
64
randrange(m,n[,k])
生成一个[m,n)
之间以k为步长的随机整数
random.randrange(10,100,10)
=>80
getrandbits(k)
生成一个k比特长的随机整数
random.getrandbits(16)
=>
37885
uniform(a,b)
生成一个[a,b]之间的随机小数
random.uniform(10,100)
=>
13.096321648808136
choice(seq)
从序列seq中随机选择一个元素
random.choice([1,2,3,4,5,6,7,8,9])
=>
8
shuffle(seq)
将序列seq中元素随机排列,返回打乱后的序列
s=[1,2,3,4,5,6,7,8,9];random.shuff.1e(s);print(s)
=>
[35,8,9,6,1,2,7,4]
圆周率的计算
圆周率的近似计算公式
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))
蒙特卡罗方法
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))