python的程序控制结构-循环结构与random库使用和圆周率案例--python-7-days

本文详细介绍了Python的循环结构,包括遍历循环的应用,如计数循环、字符串遍历、列表遍历和文件遍历,以及无限循环、break和continue的使用。此外,还探讨了random库的运用,重点讲解了如何利用蒙特卡洛算法估算圆周率,以及其在计算思维和程序性能分析中的价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

循环结构

- forin 遍历循环: 计数、字符串、列表、文件…
- while无限循环
- continuebreak保留字: 退出当前循环层次
- 循环else的高级用法:break有关

遍历循环

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

遍历循环的应用:计数循环(N次)

  • 遍历由range()函数产生的数字序列,产生循环
for i in range(N) :
	<语句块>
>>> for i in range(5):
		print(i)
0
1
2
3
4

遍历循环的应用:计数循环(特定次)

for i in range(M,N,K) :
	<语句块>
>>> for i in range(1,6,2):
print("Hello:",i)
Hello: 1
Hello: 3
Hello: 5

遍历循环的应用:字符串遍历循环

  • s是字符串,遍历字符串每个字符,产生循环
for c in s :
	<语句块>

>>> for c in "Python123":
		print(c, end=",")
P,y,t,h,o,n,1,2,3,

遍历循环的应用:列表遍历循环

  • ls是一个列表,遍历其每个元素,产生循环
>>> for item in [123,"PY", 456] :
		print(item, end=",")
123,PY,456,

遍历循环的应用:文件遍历循环

  • fi是一个文件标识符,遍历其每行,产生循环

优美胜于丑陋
明了胜于隐晦
简洁胜于复杂

>>> for line in fi :
		print(line)
优美胜于丑陋
明了胜于隐晦
简洁胜于复杂

无限循环

由条件控制的循环运行方式
反复执行语句块,直到条件不满足时结束

>>> a = 3
>>> while a > 0 :
		a = a - 1
		print(a)
2
1
0
>>> a = 3
>>> while a > 0 :
		a = a + 1
		print(a)
4
5(CTRL + C 退出执行) 

循环控制保留字:break 和 continue

  • break跳出并结束当前整个循环,执行循环后的语句
  • continue结束当次循环,继续执行后续次数循环
  • break和continue可以与for和while循环搭配使用
>>> for c in "PYTHON" :
if c == "T" :
	continue
print(c, end="")
>>> PYHON
  • break仅跳出当前最内层循环
>>> s = "PYTHON"
>>> while s != "" :
		for c in s :
			if c == "T" :
				break
			print(c, end="")
		s = s[:-1]
>>> PYPYPYPYPYP

循环的高级用法:循环与else

  • 当循环没有被break语句退出时,执行else语句块
  • else语句块作为**"正常"完成循环的奖励**
  • 这里else的用法与异常处理中else用法相似
    在这里插入图片描述
  • for ……else……
>>> for c in "PYTHON" :
		if c == "T" :
			continue
		print(c, end="")
	else:
			print("正常退出")
>>> PYHON正常退出
>>> for c in "PYTHON" :
		if c == "T" :
			break
		print(c, end="")
	else:
		print("正常退出")
>>> PY

random库

random库是使用随机数的Python标准库

  • 伪随机数: 采用梅森旋转算法生成的(伪)随机序列中元素
  • random库主要用于生成随机数
  • 使用random库: import random

1、 基本随机数函数: seed(), random()
在这里插入图片描述

>>> import random
>>> random.seed(10)
>>> random.random()
0.5714025946899135
>>> random.random()
0.4288890546751146
>>> random.seed(10)
>>> random.random()
0.5714025946899135
>>> random.seed(10)
>>> random.random()
0.5714025946899135

2、 扩展随机数函数: randint(), getrandbits(), uniform(),
randrange(), choice(), shuffle()
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

需要掌握的能力

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

圆周率案例

数学思维

使用圆周率的近似计算公式

在这里插入图片描述

#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("pi = {0},k = {1}".format(pi,k))
print("圆周率值是:{}".format(pi))
圆周率值是: 3.141592653589793

计算思维

蒙特卡洛算法

在这里插入图片描述

#CalPiV2.py
from random import random
from time import perf_counter
DARTS = 1000*1000*10
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/DARTS)
print("y圆周率值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start))

举一反三

理解方法思维

  • 数学思维:找到公式,利用公式求解
  • 计算思维:抽象一种过程,用计算机自动化求解
  • 谁更准确? (不好说…)

程序运行时间分析

  • 使用time库的计时方法获得程序运行时间
  • 改变撒点数量,理解程序运行时间的分布
  • 初步掌握简单的程序性能分析方法

计算问题的扩展

  • 不求解圆周率,而是某个特定图形的面积
  • 在工程计算中寻找蒙特卡罗方法的应用场景
    在这里插入图片描述

蒙特卡洛算法非常厉害的算法

记得曾经好像学过蒙特卡洛算法的推导,当时觉得又复杂又难懂,没想到现在看来还挺有意思的,有空再去推一遍~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值