Python之程序的控制结构

程序的分支结构

根据判断条件结果而选择不同向前路径的运行方式
单分支机构
单个if语句
if <条件> :
	<语句块>
二分支结构
if <条件> :
	<语句块1>
else:
	<语句块2>
二分支结构的紧凑形式
适用简单表达式的二分支结构
<表达式1> if <条件> else <表达式2>
guess = eval(input())
print("猜{}了".format("对" if guess==99 else "错"))
多分支结构
if <条件1> :
	<语句块1>
elif <条件2> :
	<语句块2>
……
else :
	<语句块N>
条件判断及组合
<   	小于
<=  	小于等于
>=  	大于等于
> 		大于
==  	等于
!=  	不等于
x and y    #两个条件x和y的逻辑与
x or y 		#逻辑或
not x  		#逻辑非
guess = eval(input())
if guess > 99 or guess < 99:
	print("猜错了")
else :
	print("猜对了")
异常处理的基本使用
第一种
try :
	<语句块1>
except :
	<语句块2>
	
第二种
try :
	<语句块1>
except <异常类型> :
	<语句块2>
try :
	num = eval(input("请输入一个整数: "))
	print(num**2)
except :
	print("输入不是整数")

try :
	num = eval(input("请输入一个整数: "))
	print(num**2)
except NameError:
	print("输入不是整数")
异常处理的高级使用
			try-except-else-finally
try : 
	<语句块1>
except :
	<语句块2>
else :
	<语句块3>
finally :
	<语句块4>

# else对应语句块3在不发生异常时执行
# finally对应语句块4一定执行

关于try except的详细介绍:https://blog.csdn.net/brucewong0516/article/details/80799493

身体质量指数BMI

 BMI:Body Mass Index
国际上常用的衡量人体肥胖和健康程度的重要标准,主要用于统计分析
BMI = 体重 (kg) / 身高2 (m2)

分类		 国际BMI值 (kg/m2) 		国内BMI值 (kg/m2)
偏瘦 		<18.5 					<18.5
正常		 18.5 ~ 25 				    18.5 ~ 24
偏胖 	 25 ~ 30 					24 ~ 28
肥胖 		≥30 					≥28

输入:给定体重和身高值
输出:BMI指标分类信息(国际和国内)
#CalBMIv3.py
height, weight = eval(input("请输入身高(米)和体重(公斤)[逗号隔开]: "))
bmi = weight / pow(height, 2)
print("BMI 数值为:{:.2f}".format(bmi))
who, nat = "", ""
if bmi < 18.5:
	who, nat = "偏瘦", "偏瘦"
elif 18.5 <= bmi < 24:
	who, nat = "正常", "正常"
elif 24 <= bmi < 25:
	who, nat = "正常", "偏胖"
elif 25 <= bmi < 28:
	who, nat = "偏胖", "偏胖"
elif 28 <= bmi < 30:
	who, nat = "偏胖", "肥胖"
else:
	who, nat = "肥胖", "肥胖"
print("BMI 指标为:国际'{0}', 国内'{1}'".format(who, nat))

程序的循环结构

遍历某个结构形成的循环遍历方式
for <循环遍量> in <遍历结构>:
	<语句块>
	
--从遍历结构中逐一提取元素,放在循环变量中
--由保留字for和in组成,完整遍历所有元素后结束
--每次循环,所获得元素放入循环变量,并执行一次语句块
循环遍历的应用
计数循环(N次)
for i in range(N) :
	<语句块>
--遍历由range()函数产生的数字序列,产生循环

计数循环(特定次)
for i in range(M,N,K) :
	<语句块>
--遍历由range()函数产生的数字序列,产生循环

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

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

文件遍历循环
for line in fi :
	<语句块>
--- fi是一个文件标识符,遍历其每行,产生循环
for i in range(5):
	print("Hello:",i)
#结果
Hello: 0
Hello: 1
Hello: 2
Hello: 3
Hello: 4

for i in range(1,6,2):
print("Hello:",i)
#结果
Hello: 1
Hello: 3
Hello: 5

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,
无限循环
由条件控制的循环运行方式
while <条件> :
	<语句块>
--反复执行语句块,直到条件不满足时结束
a = 3
while a > 0
	a = a -1
	print(a)
死循环要ctrl + c
循环控制保留字
break和continue
- break跳出并结束当前整个循环,执行循环后的语句
- 嵌套循环的化,break在内循环的化,break是跳出整个内层循环,会继续执行外层直到外层循环结束
- continue结束当次循环,继续执行后续次数循环
- break和continue可以与for和while循环搭配使用
for c in "PYTHON" :
if c == "T" :
	continue
print(c, end="")
#结果 PYHON

for c in "PYTHON" :
if c == "T" :
	break
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]
#结果  PYPYPYPYPYP

--break仅跳出当前最内层循环
循环的扩展(循环与else)
循环else的高级用法: 与break有关
--当循环没有被break语句退出时,执行else语句块
--else语句块作为"正常"完成循环的奖励
--这里else的用法与异常处理中else用法相似

for <变量> in <遍历结构> :
	<语句块1>
else :
	<语句块2>

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

模块3: random库的使用

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

基本随机数函数: seed(), random()
扩展随机数函数: randint(), getrandbits(), uniform(),randrange(), choice(),shuffle()

要求
能够利用随机数种子产生"确定"伪随机数
能够产生随机整数
能够对序列类型进行随机操作
基本随机函数
--seed(a=None)		#初始化给定的随机数种子,默认为当前系统时间
	random.seed(10) #产生种子10对应的序列
--random() 			#生成一个[0.0,1.0)之间的随机小数
	random.random()	0.5714025946899135
扩展随机数函数
--randint(a,b)  	#生成一个[a,b]之间的整数
	random.randint(10, 100)  64
--randrange(m,n[,k])		#生成一个[m,n)之间以k为步长的随机整数
	random.randrange(10, 100, 10)	 80
--getrandbits(k)		#生成一个k比特长的随机整数
	random.getrandbits(16)     37885
--uniform(a,b)		#生成[a,b]之间的随机小数
	random.uniform(10, 100)	13.096321648808136
--choice(seq)		#从序列seq中随机选择一个元素
	random.choice([1,2,3,4,5,6,7,8,9])		6
--shuffle(seq)		#将序列seq中元素随机排列,返回打乱后的序列
	s=[1,2,3,4,5,6,7,8,9];
	random.shuffle(s);
	print(s)
	#结果  [3, 5, 8, 9, 6, 1, 2, 7, 4]

圆周率的计算

圆周率的近似计算公式(数学计算公式)
和蒙特卡罗方法(在一个正方形中撒点,根据在1/4圆内点的数量占总撒点数的比例计算圆周率值)
#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))
#CalPiV2.py
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/DARTS)
print("圆周率值是: {}".format(pi))
print("运行时间是: {:.5f}s".format(perf_counter()-start))
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值