第四章 程序的控制结构
前情回顾
python基本语法元素
缩进、注释、命名、变量、保留字
数据类型、字符串、整数、浮点数、列表
赋值语句、分支语句、函数
input()、print()、eval()及print格式化
python基本图形绘制
turtle绘图体系、import用法
pen、circle、turtle的相关函数
循环语句、for in range
基本数据类型
数据类型:整数<
数据类型运算操作符、运算函数
字符串类型的表示、索引、切片
字符串操作符、处理函数、处理办法、format格式化
time库:time()、strftime()、strptime()、sleep()
第四章 程序的控制结构
4.1 程序的分支结构
4.1.1 单分支结构
if :
4.1.2 二分支结构
if :
else:
注意–紧凑形式: if else
紧凑形式中使用表达式,而非带赋值过程的语句
4.1.3 多分支结构
注意:①多条件间的包含关系
②变量取值范围的覆盖
4.1.4 条件判断与组合
and or not
< > <= >= == !=
4.1.5 程序的异常处理
解决办法:
try:
except:
异常处理的高级使用:(增加程序的鲁棒性)
try:
except:
# 语句块2在发生异常时执行
else:
# 语句块3在不发生异常时执行(奖励性)
finally:
# 对应语句块4一定执行
4.2 身体质量指数BMI
同时从用户获得两个输入
a,b=eval(input(“请输入A和B【使用逗号隔开】”))
注意:多分支的条件交叉覆盖
4.3 程序的循环结构
4.3.1 遍历循环
for in :
①计数循环(N次)
for i in range (N)
分别设 i = 0~N-1 时执行语句
注意:range (m,n,k) 即 m~n-1, 以k为步长
②字符串遍历循环
for c in s
#将s中的每个字符按照顺序赋值给c,然后执行语句
③列表遍历循环
for item in [‘ABC’,123,666]
④文件遍历循环
for line in fi
#fi 为文件标识符
#遍历整个文件的每一行
4.3.2 无限循环
即由条件控制的循环运行方式,满足条件则无限执行
while :
4.3.3 循环控制保留字
break:跳出结束当前整个循环,并执行后续语句
continue:跳出结束当前一次循环,继续执行后续次数的循环
#(一个break只能跳出一层循环)
s="PYTHON"
while s != "":
for c in s:
if c == T:
break
print(c,end="")
s=s[:-1]
最外循环为while s != “” 即字符串s不为空
字符串s每进行一次while循环,去掉s最末端的字符
while.1-for.1 :c=P,c!=P,print(c)=> P
while.1-for.2 :c=H,c!=P,print(c)=> Y
while.1-for.3 :c=T,c!=P,break,第一次while循环结束
s=s[:-1] => s=“PYTHO”
while.2-for.1 :c=P,c!=P,print(c)=> P
while.2-for.2 :c=H,c!=P,print(c)=> Y
while.2-for.3 :c=T,c!=P,break,第二次while循环结束
s=s[:-1] => s=“PYTH”
while.3-for.1 :c=P,c!=P,print(c)=> P
while.3-for.2 :c=H,c!=P,print(c)=> Y
while.3-for.3 :c=T,c!=P,break,第三次while循环结束
s=s[:-1] => s=“PYT”
while.4-for.1 :c=P,c!=P,print(c)=> P
while.4-for.2 :c=H,c!=P,print(c)=> Y
while.4-for.3 :c=T,c!=P,break,第四次while循环结束
s=s[:-1] => s=“PY”
while.5-for.1 :c=P,c!=P,print(c)=> P
while.5-for.2 :c=H,c!=P,print(c)=> Y
第五次while循环结束
s=s[:-1] => s=“P”
while.6-for.1 :c=P,c!=P,print(c)=> P
第六次while循环结束
s=s[:-1] => s=""
while循环条件不满足,程序结束
4.3.4 循环的高级用法
for/while ~:
else:
#当循环没有被break跳出时,执行完for/while循环后
#执行else语句,可以理解为正确循环的奖励
4.4 random库的使用
#random是使用随机数的python标准库
#伪随机数、梅森螺旋算法
4.4.1 基本随机数函数
#随机数种子,唯一确定了随机序列
random.seed(a) #选出a对应的随机序列
random.random() #产生一个0.0~1.0之间的随机数
#不给出种子,直接给出随机数,则程序无法复现
4.4.2 扩展随机数函数
①randint(a,b) >>> 产生一个[a,b]之间的随机整数
②randrange(m,n[,k]) >>> [m,n)之间步长为k的随机整数
③getrandbits(k) >>> 产生一个k比特长的随机整数
④uniform(a,b) >>> 产生一个[a,b]之间的随机小数
⑤choice(seq) >>> 序列seq中随机抽一个元素///seq可以为列表
⑥shuffle(seq) >>> 将序列seq中元素随机排列,返回打乱的序列
4.5 圆周率的计算
4.5.1 公式法
#CalPiV1.py
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))
4.5.2 蒙特卡罗法(撒点法)
#CalPiV2.py
from random import random
from time import perf_counter
DARTS = 1000*1000
hits = 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))
点赞
收藏
分享
文章举报
阿娇一定要好好学习
发布了5 篇原创文章 · 获赞 0 · 访问量 49
私信
关注