程序的控制结构

时间:2022-01-03 06:11:57

程序的控制结构

程序的分支结构

1、概述

  • 单分支结构
  • 二分支结构
  • 多分枝结构
  • 条件判断及组合
  • 程序的异常处理

2、单分支结构

根据判断条件结果而选择不同向前路径的运行方式

a = input("请输入成绩:")
if eval(a) > 90:
    print('优秀')

2、二分支结构

根据判断条件结果而选择不同向前路径的运行方式

a = input("请输入成绩:")
if eval(a) > 90:
    print('优秀')
else:
    print('良好')

2.2紧凑形式

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

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

guess = eval(input())

print("猜{}了".format("对" if guess == 99 else "错"))

3、多分支结构

a = input("请输入成绩:")
if eval(a) > 90:
    print('优秀')
elif eval(a) > 70:
    print('良好')
elif eval(a) >=60:
    print('及格')
else:
    print('不及格')

4、条件判断及组合

4.1 条件判断

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

4.2 条件组合

用于条件组合的三个保留字

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

5、程序的异常处理

x = 10
try:
    y = input('请输入数字:')
    y += 10
except Exception as e:
    print(e)
finally:   # 无论报不报错,都会执行finally下面的代码
    print(1)

print(x+10)

程序的循环结构

1、概述

  • 遍历循环
  • 无限循环
  • 循环控制保留字
  • 循环的高级用法

2、遍历循环的应用

2.1、计数循环(N次)

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

0
1
2
3
4

2.2、计数循环(特定次)

for i in range(M,N,K):
    <语句块>
  • 遍历由range()函数产生的数字序列,产生循环
for i in range(1, 6):
    print(i)

1
2
3
4
5

for i in range(1, 6, 2):
    print('hello:', i)

hello: 1
hello: 3
hello: 5

3、无限循环

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

  • 反复执行语句块,直到条件不满足时结束
a = 3
while a > 0:
    a = a - 1
    print(a)

2
1
0

# 死循环, (CTRL + C 退出执行) 
a = 3
while a > 0:
    a = a + 1
    print(a)

4、循环控制保留字

break和continue

  • break跳出并结束当前整个循环,执行循环后的语句
  • continue结束当次循环,继续执行后续次数循环
  • break和continue可以与for和while循环搭配使用

random库的使用

1、random库基本介绍

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

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

1.1 random库概述

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

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

2、基本随机数函数

2.1随机数种子

函数 描述
seed(a=None) 初始化给定的随机数种子,默认为当前系统时间
random() 生成一个[0.0, 1.0)之间的随机小数
import random

random.seed(10)  # 产生种子10对应的序列
random.random()

0.5714025946899135

random.random()

0.4288890546751146

random.seed(10)
random.random()

0.5714025946899135

3、扩展随机数函数

函数 描述
randint(a,b) 生成一个[a, b]之间的整数
randrange(m, n[, k]) 生成一个[m, n)之间以k为步长的随机整数
getrandbits(k) getrandbits(k)
uniform(a, b) 生成一个[a, b]之间的随机小数
choice(seq) 从序列seq中随机选择一个元素
shuffle(seq) 将序列seq中元素随机排列,返回打乱后的序列
import random

random.randint(10, 100)

64

random.randrange(10, 100, 10)

80

random.getrandbits(16)

37885

random.uniform(10, 100)

11.334920142209832

random.choice([1, 2, 3, 4, 5, 6, 7])

6

s = [1, 2, 3, 4, 5, 6, 7, 8, 9]
random.shuffle(s)
print(s)

[3, 9, 7, 4, 1, 2, 6, 5, 8]

练习

  1. 使用while循环输出1 2 3 4 5 6 8 9 10
i = 0
while i < 10:
    i += 1
    print(f'{i}',end=' ')
    if i == 6:
        i += 1

效果:
程序的控制结构

  1. 求1-100的所有数的和
i = 0
for a in range(1,101):
    i += a
print(i)

效果:
程序的控制结构

  1. 输出 1-100 内的所有奇数
i = 1
while i <= 100:
    print(i)
    i += 2

效果:
程序的控制结构

  1. 输出 1-100 内的所有偶数
i = 2
while i <= 100:
    print(i)
    i += 2

效果:
程序的控制结构

  1. 求1-2+3-4+5 ... 99的所有数的和
i = 1
s = 0
while i < 100:
    s = i - (i+1)
    i += 1
    s = i + (i+1)
print(s)

效果:
程序的控制结构

  1. 用户登陆(三次机会重试)
b = '123'
for i in range(3):
    a = input('请输入密码:')
    if a == b:
        print('密码正确!')
        break
    else:
        print('密码不正确!')

效果:
程序的控制结构

  1. 猜年龄游戏
    要求:允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出
b = '23'
for i in range(3):
    a = input('请输入年龄:')
    if a == b:
        print('恭喜正确!')
        break
    else:
        print('不正确!')

效果:
程序的控制结构

  1. 猜年龄游戏升级版
    要求:允许用户最多尝试3次
    每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往 复,如果回答N或n,就退出程序
    如果猜对了,就直接退出
b = '23'
c = 0
while c < 3:
    a = input('请输入年龄:')
    c += 1
    if a == b:
        print('恭喜正确!')
        break
    else:
        print('不正确!')
    if c == 3:
        d = input('是否继续:')
        if d == 'y' or d == 'y':
            c = 0
            continue
        elif d == 'n' or d == 'N':
            break

效果:
程序的控制结构

  1. for循环打印99乘法表
for i in range(1,10):
    for j in range(1,10):
        if i >= j:
            print(str(j) + "*" + str(i) + "=" + str(i*j), end=" ")
    print()

效果:
程序的控制结构

  1. for循环打印金字塔:如下
     *
    ***
   *****
  *******
 *********
for i in range(1,5+1):
    print(' '*(5-i)+'*'*(2*i-1))

效果:
程序的控制结构