4.1 程序的分支结构
4.1.1 单分支结构
-
if <条件> :
<语句块>if True:
print(“条件正确”)
4.1.2 二分支结构
-
if <条件> :
<语句块1>
else :
<语句块2>if True:
print(“语句块1”)
else :
print(“语句块2”) -
<表达式1> if <条件> else <表达式2>
guess = eval(input())
print(“猜{}了”.format(“对” if guess==99 else “错”))
4.1.3 多分支语句
- if <条件1> :
<语句块1>
elif <条件2> :
<语句块2>
……
else :
<语句块N>
4.1.4 程序的异常处理
- try :
<语句块1>
except :
<语句块2> - try :
<语句块1>
except <异常类型> :
<语句块2>
异常处理示例1
try :
num = eval(input("请输入一个整数: "))
print(num**2)
except :
print(“输入不是整数”)
示例2
try :
num = eval(input("请输入一个整数: "))
print(num**2)
except NameError:
print(“输入不是整数”)
注:标注异常类型后,仅响应该异常, 异常类型名字等同于变量
异常处理的高级使用
try :
<语句块1>
except :
<语句块2>
else :
<语句块3>
finally :
<语句块4>
注: finally对应语句块4一定执行
else对应语句块3在不发生异常时执行
4.2 "身体质量指数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 = "偏胖", "肥胖"
else:
who, nat = "肥胖", "肥胖"
print("BMI 指标为:国际'{0}', 国内'{1}'".format(who, nat))
重点在于同时输出国际和国内对应的分类
4.3 程序的循环结构
4.3.1 遍历循环
遍历某个结构形成的循环运行方式
for <循环变量> in <遍历结构> :
<语句块>
由保留字for和in组成,完整遍历所有元素后结束
每次循环,所获得元素放入循环变量,并执行一次语句块
-
计数循环(N次)
从0开始for i in range(N) :
<语句块> -
计数循环(特定次)
遍历由range()函数产生的数字序列,产生循环
从M开始到N结束,步长为K,大于N则不执行for i in range(M,N,K) :
<语句块> -
字符串遍历循环
s是字符串,遍历字符串每个字符,产生循环for c in s :
<语句块>
例:
>>> for c in "Python123":
print(c, end=",")
P,y,t,h,o,n,1,2,3,
- 列表遍历循环
ls是一个列表,遍历其每个元素,产生循环
for item in ls :
<语句块>
例:
>>> for item in [123, "PY", 456] :
print(item, end=",")
123,PY,456,
4.3.2 无限循环
while <条件> :
<语句块>
反复执行语句块,直到条件不满足时结束
4.3.3 循环控制保留字
- break 和 continue
break跳出并结束当前整个循环,执行循环后的语句
break仅跳出当前最内层循环
continue结束当次循环,继续执行后续次数循环
break和continue可以与for和while循环搭配使用
例1:
>>> for c in "PYTHON" :
if c == "T" :
break
print(c, end="")
输出结果:PY
例2:
>>> s = "PYTHON"
>>> while s != "" :
for c in s :
if c == "T" :
break
print(c, end="")
s = s[:-1]
输出结果:PYPYPYPYPYP
4.3.4 循环的高级用法
- 循环与else
for <变量> in <遍历结构> :
<语句块1>
else :
<语句块2>
while <条件> :
<语句块1>
else :
<语句块2>
当循环没有被break语句退出时,执行else语句块
else语句块作为"正常"完成循环的奖励
这里else的用法与异常处理中else用法相似
例1:
>>> for c in "PYTHON" :
if c == "T" :
continue
print(c, end="")
else:
print("正常退出")
PYHON正常退出
例2:
>>> for c in "PYTHON" :
if c == "T" :
break
print(c, end="")
else:
print("正常退出")
PY
4.4 random库基本介绍
- random库是使用随机数的Python标准库
- random库包括两类函数,常用共8个
基本随机数函数: seed(), random()
扩展随机数函数: randint(), getrandbits(), uniform(), randrange(), choice(), shuffle()
4.4.1 随机数函数
函数 | 描述 |
---|---|
基本随机数函数 | |
seed(a=None) | 初始化给定的随机数种子,默认为当前系统时间 >>>random.seed(10) #产生种子10对应的序列 |
random() | 生成一个[0.0, 1.0)之间的随机小数 |
扩展随机数函数 | |
getrandbits(k) | 生成一个k比特长的随机整数 |
uniform(a, b) | 生成一个[a, b]之间的随机小数 |
choice(seq) | 从序列seq中随机选择一个元素 |
shuffle(seq) | 将序列seq中元素随机排列,返回打乱后的序列 |
4.5 "圆周率的计算"实例讲解
- 1、近似公式法
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))
- 2、蒙特卡罗方法
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))
—————本文整理自《Python语言程序设计》
嵩天
北京理工大学