【Python程序设计(四)】程序的控制结构

1 程序的分支结构

程序有三种控制结构,顺序结构,分支结构和循环结构

在这里插入图片描述

1.1 分支结构

有单分支结构,二分支结构和多分支结构
在这里插入图片描述
二分支结构有一种紧凑形式:

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

example:

  • 单分支示例:
guess = eval(input())
if guess == 99:
    print("猜对了")
  • 二分支结构:
guess = eval(input())
if guess == 99:
    print("猜对了")
else :
    print("猜错了")

紧凑结构:

guess = eval(input())
print("猜{}了".format("对" if guess == 99 else "错"))
  • 多分支结构
score = eval(input())
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
print("输入成绩属于级别{}".format(grade))

1.2 条件判断及组合

操作符描述
<小于
<=小于等于
>=大于等于
>大于
==等于
!=不等于

条件组合

操作符及使用描述
x and y两个条件 x 和 y 的逻辑与
x or y两个条件 x 和 y 的逻辑或
not x条件 x 的逻辑非

1.3 程序的异常处理

异常处理的基本使用
在这里插入图片描述
example:

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

异常处理的高级使用
在这里插入图片描述

2 实例: 身体质量指数 BMI

BMI = 体重 (kg) / 身高2 (m2)

分类国际BMI值 (kg/m2 )国内BMI值 (kg/m2 )
偏瘦<18.5<18.5
正常18.5 ~ 2518.5 ~ 24
偏胖25 ~ 3024 ~ 28
肥胖≥30≥28
height, weight = eval(input("请输入身高(米)和体重(公斤)[逗号隔开]:"))
bmi = weight / pow(height, 2)
print("BMI数值为:{:.2f}".format(bmi))
who, net = "", ""
if bmi < 18.5:
    who, net = "偏瘦", "偏瘦"
elif 18.5 <= bmi < 24:
    who, net = "正常", "正常"
elif 24 <= bmi < 25:
    who, net = "偏胖", "正常"
elif 25 <= bmi < 28:
    who, net = "偏胖", "偏胖"
elif 28 <= bmi < 30:
    who, net = "肥胖", "偏胖"
else:
    who, net = "肥胖", "肥胖"
print("BMI指标为:国际'{}',国内'{}'".format(who, net))

3 程序的循环结构

3.1 遍历循环

for <循环变量> in <遍历结构> :
  <语句块>
在这里插入图片描述

example:

  • 计数循环(N次)
>>> 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 "python":
	print(c, end = ",")

p,y,t,h,o,n,
  • 列表遍历循环
>>> for item in [123, 'python', 456]:
	print(item, end = ",")

123,python,456,
  • 文件遍历循环
>>> for line in fi :
	print(line)

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

3.2 无限循环

while <条件> :
  <语句块>

example:

>>> a = 3
>>> while a > 0:
	a = a - 1
	print(a)

2
1
0

3.3 循环控制保留字

break 和 continue

  • break 跳出并结束当前整个循环,只影当前循环,外层循环不影响
  • continue 结束本次循环,循环继续
  • break 和 continue 可以与 for 和 while 循环搭配使用

example:

>>> for c in "python":
	if c == "t":
		continue
	print(c, end = "")

pyhon
>>> for c in "python":
	if c == "t":
		break
	print(c, end = "")

py

3.4 循环的高级用法

在这里插入图片描述

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

example:

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

4 random 库的使用

random库主要用于生成随机数,使用 random 库: import random

random库包括两类函数,常用共8个

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

4.1 基本随机数函数

函数描述
seed(a=None)初始化给定的随机数种子,默认为当前系统时间
>>>random.seed(10) #产生种子10对应的序列
random()生成一个[0.0, 1.0)之间的随机小数
>>>random.random()
0.5714025946899135

example:

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

4.2 扩展随机数函数

函数描述
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)
30315
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])
8
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]

5 实例: 圆周率的计算

蒙特卡罗方法
在这里插入图片描述
生成两个 0-1 之间的随机数,该点落在坐标系的右上区域,计算落在圆中的点与右上区域正方形区域点的比值就可以计算出圆周率。

from random import random
from time import perf_counter
DATAS = 1000*1000
hits = 0.0
start = perf_counter()
for i in range(1, DATAS + 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("运行时间是:{:.2f}s".format(perf_counter() - start))

6 小结

程序的分支结构

  • 单分支 if,二分支 if-else 及紧凑形式
  • 多分支 if-elif-else 及条件之间关系
  • not,and,or,>,>=,==,<=,<,!=
  • 异常处理 try-except-else-finally

程序的循环结构

  • for…in 遍历循环: 计数、字符串、列表、文件…
  • while 无限循环
  • continue 和 break
  • 循环 else 的高级用法: 与 break 有关
  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值