Python学习笔记(四)程序的控制

一、分支结构

(1)单分支结构

  • 根据判断条件结果而选择不同向前路径的运行方式
if <条件><语句块>

如:
guess = eval(input())
if guess == 99:
	printf("猜对了")

(2)二分支结构

  • 根据判断条件结果二选择不同向前路径的运行方式
if <条件><语句块1>
else:
	<语句块2>

如:
guess = eval(input())
if guess == 99:
	printf("猜对了")
else:
	print("猜错了")
  • 紧凑形式:适用于简单表达式的二分支结构
    • <表达式1> if <条件> else <表达式2>
guess = eval(input())
print("猜{}了".format("对" if guess==99 else "错"))

(3)多分支结构

  • 典型结构:
if <条件>:
	<语句块1>
elif:
	<语句块2>
....
else:
	<语句块3>

(4)条件判断及组合

1、条件判断

  • 操作符
操作符数学符号描述
<<小于
<=<=小于等于
>>大于
>=>=大于等于
====等于
!=!=不等于

2、条件组合

- 用于条件组合的三个保留字
操作符及使用描述
x and y两个条件x和y 的逻辑与
x or y两个条件x与y 的逻辑或
not x条件x 的逻辑非

(5)异常处理

  • 异常处理的基本使用
//当发生异常则执行except后面的语句
try :
	<语句块1>
except:
	<语句块2>

//注明了异常类型,仅响应该异常
//异常名字等同于变量
try :
	<语句块1>
except <异常类型>:
	<语句块2>
  • 异常处理的高级使用
//finally对应语句块4一定执行
//else对应语句块3在不发生异常时执行
try :
	<语句块1>
except:
	<语句块2>
else:
	<语句块3>
finally:
	<语句块4>

二、程序的循环结构

(1)遍历循环

  • 遍历某个结构形成的循环运行方式
  • 由保留字for和in组成,完整遍历所有元素后结束
  • 每次循环,所获得的元素放入循环变量,并执行一次语句块
//基本形式
for <循环变量> in <遍历结构>:
	<语句块>

//计数循环:遍历由range()函数产生的数字序列,产生循环
for i in range(N):
	<语句块>
如:
for i in range(5):
	print(i)
//计数循环(N次)
//遍历M到N的整数(不包括N),以K为步长
for i in range(M,N,K):
	<语句块>

//字符串遍历循环
//s是字符串,遍历字符串每个字符,产生循环
for c in s:
	<语句块>
如:
for c in "python":
	print(c)

//列表遍历循环
//ls是一个列表,遍历其每个元素,产生循环
for item in ls:
	<语句块>

//文件遍历循环
//fi是一个文件标识符,遍历其每行,产生循环
for line in fi:
	<语句块>

(2)无限循环

1、基本概念

  • 由条件控制的循环运行方式
  • 反复执行语句块,知道条件不满足时结束
while <条件>
	<语句块>
如:
while a>0 :
	a = a-1
	print(a)

2、循环控制保留字

  • break 和 continue
  • break跳出并结束当前整个循环,执行循环后的
    语句
  • continue结束当次循环,继续执行后续次数循环
  • break 和 continue都可以在for、while使用
for c in "python":
	if c == "t":
		continue
	print(c,end="")

3、循环的扩展

  • 循环与else
  • 当循环没有被break语句退出时,执行else语句块
  • else语句块作为"正常"完成循环的奖励

三、random库的使用

(1)random库概述

  • random库是使用随机数的Python标准库
  • 伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素
  • random库主要用于生成随机数
  • random库包含两类函数,常用共8个
    • 基本随机数函数:seed(),random()
    • 扩展随机数函数:randint(),getrandibits(),uniform(),randrange(),choice(),shuffle()

(2)基本随机数函数

函数描述
seed(a=None)初始化给定的随机数种子,默认为当前系统时间
random()生成一个[0.0,1.0]之间的随机小数

(3)扩展随机数函数

函数描述
randint(a,b)生成一个[a,b] 之间的整数
randrange(m,n[,k])生成一个[m,n]之间以k为步长的随机整数
getrandbits(k)生成一个k比特长的随机整数
uniform(a,b)生成一个[a,b] 之间的随机小数
choice(seq)从序列seq中随机选择一个元素
shufle(seq)将序列seq中元素随机排列,返回打乱后的序列

(4)需要掌握的能力

  • 能够利用随机数种子产生"确定"伪随机数
  • 能够产生随机整数
  • 能够对序列类型进行随机操作

四、圆周率的计算

(1)蒙特卡罗方法

  • 蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。

(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/DATAS)
print("圆周率值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start)) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值