您的位置:首页 > 编程语言 > Python开发

python语言程序设计(MOOC 嵩天)第四章 学习笔记(0211)

2020-02-29 18:36 821 查看

第四章 程序的控制结构

前情回顾

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 <条件>:
<语句1>
else:
<语句2>

注意–紧凑形式:<表达式1> if <条件> else <表达式2>
紧凑形式中使用表达式,而非带赋值过程的语句

4.1.3 多分支结构

注意:①多条件间的包含关系
②变量取值范围的覆盖

4.1.4 条件判断与组合

and or not
< > <= >= == !=

4.1.5 程序的异常处理


解决办法:
try:
<语句块1>
except<异常类型>:
<语句块2>

异常处理的高级使用:(增加程序的鲁棒性)
try:
<语句块1>
except:
<语句块2> # 语句块2在发生异常时执行
else:
<语句块3> # 语句块3在不发生异常时执行(奖励性)
finally:
<语句块4> # 对应语句块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 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: