python123英文字符的鲁棒_python语言程序设计(MOOC 嵩天)第四章 学习笔记(0211)...

第四章 程序的控制结构

前情回顾

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 程序的异常处理

c711cbb0ac1dba0f870ecce2dccfe453

解决办法:

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))

点赞

收藏

分享

文章举报

edcfa8349a8ece8f684224f2846c821d

de638df49f1d5a3342eecff86bcb011e.png

阿娇一定要好好学习

发布了5 篇原创文章 · 获赞 0 · 访问量 49

私信

关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值