Python学记(七)程序控制结构(下)

程序结构控制

程序的循环结构

遍历循环

遍历某个结构形成的循环运行方式

for <循环变量> in <遍历结构> :
	<语句块>
  • 计数循环(遍历的一种)
    遍历由range()函数产生的数字序列,产生循环
for i in range(N) :
	<语句块> 

for i in range(M,N,K) :  #(M到N(不包括),步长为K)
	<语句块>

## 遍历由range()函数产生的数字序列,产生循环
  • 字符串遍历循环
for c in s :
	<语句块>
## s是字符串,遍历字符串每个字符,产生循环 

for c in "python123" :
    print(c,end=",")
>>> p,y,t,h,o,n,1,2,3,
  • 列表遍历
for item in [123, "PY", 456] :
	print(item, end=",")
>>> 123,PY,456,
  • 文件遍历
for line in fi :
	<...>
## fi是一个文件标识符,遍历其每一行,产生循环

无限循环

由条件控制的循环运行方式

while <conditon> :
	<...>
## 反复执行语句,直到条件不再满足时结束

>>> a = 3
>>> while a > 0
	a = a - 1
	print(a)
2
1
0
## (ctrl + C 退出循环)

循环控制保留字

  • break和continue
    break跳出并结束当前整个循环,执行循环后的语句
    continue结束当次循环,继续执行后续次数循环
for c in "PYTHON"
	if c == "T":
	continue
	print(c, end="")
>>> PYHON
## c遇到T字符的时候被结束,print不再执行
for c in "PYTHON"
	if c == "T" :
	print(c, end="")
>>> PY
s = "PYTHON"
while s != "":
	for c in s :
		print(c, end="")
	s = s[:-1]
>>> PYTHONPYTHOPYTHPYTPYP

s = "PYTHON"
while s != "":
	for c in s :
		if c == "T" :
			break
		print(c, end="")
	s = s[:-1]
>>> PYPYPYPYP
## break只能跳出一层循环
  • 循环的扩展
    当循环没有被break语句退出时,执行else语句块。else语句块作为正常完成循环的奖励
for c in "PYTHON"
	if c == "T" :
		contiune
	print(c, end="")
else:
	print("正常退出")
>>> PYTHON正常退出

for c in "PYTHON"
	if c == "T" :
		break
	print(c, end="")
else:
	print("正常退出")
>>> PY

random库

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

基本随机数函数

  • 随机数种子
    在这里插入图片描述
    在这里插入图片描述
import random
random.seed(10)
random.random()
>>> 0.5714025946899135

扩展随机数函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

圆周率的计算问题

在这里插入图片描述

蒙特卡洛法

在这里插入图片描述

## 公式法
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))
## 蒙特卡洛模拟法
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()  ##返回(0,1)的小数
    dist = pow(x ** 2 + y ** 2, 0.5)  ##计算x,y到圆心的距离从而判断是否落入圆内
    if dist <= 1.0:
        hits = hits + 1
pi = 4 * (hits/DARTS)
print("圆周率是:{}".format(pi))
print("运行时间是:{}".format(perf_counter() - start))

>>> 圆周率是:3.142968
>>> 运行时间是:0.5618330459983554
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Infinity343

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值