北理工嵩天Python语言程序设计笔记(5 程序的控制结构)

前言

本文是对《北理工 嵩天/黄天宇/礼欣 Python语言程序设计》的学习笔记,供自己查阅使用。

文章目录

  1. 北理工嵩天Python语言程序设计笔记(目录)
  2. 北理工嵩天Python语言程序设计笔记(2 Python基本语法元素)
  3. 北理工嵩天Python语言程序设计笔记(3 Python基本图形绘制)
  4. 北理工嵩天Python语言程序设计笔记(4 基本数据类型)
  5. 北理工嵩天Python语言程序设计笔记(5 程序的控制结构)
  6. 北理工嵩天Python语言程序设计笔记(6 函数和代码复用)
  7. 北理工嵩天Python语言程序设计笔记(7 组合数据类型)
  8. 北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)
  9. 北理工嵩天Python语言程序设计笔记(9 程序设计方法学)
  10. 北理工嵩天Python语言程序设计笔记(10 Python计算生态概览)


5 程序的控制结构

5.1 程序的分支结构

5.1.1 单二多分支结构

  • 单分支结构

    if <条件> :
    <语句块>

  • 二分支结构

    if <条件> :
    <语句块1>
    else:
    <语句块2>

  • 二分支结构紧凑形式:适用于简单表达式的二分支结构

    <表达式1> if <条件> else <表达式2>

    print("猜{}了".format("对" if guess==99 else "错"))
    
  • 多分支结构:

    if <条件1> :
    <语句块1>
    elif <条件2> :
    <语句块2>
    ……
    else:
    <语句块N>

5.1.2 条件判断及组合

  • 条件判断

<,<=,>=,>,==,!=

  • 条件组合

x and y,x or y,notx

5.1.3 程序的异常处理

  • 异常处理的基本使用:

try:
<语句块1>
except :
<语句块2>

try :
	num= eval(input("请输入一个整数: "))
	print(num**2)
except :
	print("输入不是整数")

try:
<语句块1>
except <异常类型> :
<语句块2>

try :
	num= eval(input("请输入一个整数: "))
	print(num**2)
except NameError:
	print("输入不是整数")

标注异常类型后,仅响应此类异常,异常类型名字等同于变量名。

  • 异常处理的高级使用

    try:
    <语句块1>
    except :
    <语句块2>
    else :
    <语句块3>
    finally :
    <语句块4>

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

5.2 实例5: 身体质量指数BMI

  • BMI:Body Mass Index
    国际上常用的衡量人体肥胖和健康程度的重要标准,主要用于统计分析

  • 定义:BMI = 体重(kg) / 身高2(m2)

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

5.3 程序的循环结构

5.3.1 遍历循环

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

for <循环变量> in <遍历结构> :
<语句块>

  • 计数循环(N次)

    for i in range(N):
    <语句块>

  • 计数循环(特定次)

    for i in range(M,N,K):
    <语句块>

  • 字符串遍历循环:s是字符串,遍历字符串每个字符,产生循环

    for c in s:
    <语句块>

  • 列表遍历循环:ls是一个列表,遍历其每个元素,产生循环

    for item in ls:
    <语句块>

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

    for line in fi:
    <语句块>

5.3.2 无限循环

反复执行语句块,直到条件不满足时结束

while <条件> :
<语句块>

CTRL + C 退出执行

5.3.3 循环控制保留字

  • break跳出并结束当前整个循环,执行循环后的语句
  • continue结束当次循环,继续执行后续次数循环
  • break仅跳出当前最内层循环

5.3.4 循环的高级用法

  • 循环与else

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

    while <条件> :
    <语句块1>
    else:
    <语句块2>

  • 当循环没有被break语句退出时,执行else语句块

  • 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

5.4 模块3: random库的使用

5.4.1 random库基本介绍

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

5.4.2 基本随机数函数

随机数种子,随机序列
在这里插入图片描述

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

设置种子,产生的随机数就不变了。

5.4.3 扩展随机数函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一行好几段代码,用分号

5.5 实例6: 圆周率的计算

  • 圆周率的近似计算公式

π = ∑ k = 0 ∞ [ 1 1 6 k ( 4 8 k + 1 − 2 8 k + 4 − 1 8 k + 5 − 1 8 k + 6 ) ] \pi=\sum\limits_{k=0}^{\infty}[\frac{1}{16^k}(\frac{4}{8k+1}-\frac{2}{8k+4}-\frac{1}{8k+5}-\frac{1}{8k+6})] π=k=0[16k1(8k+148k+428k+518k+61)]

#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))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值