程序的控制结构

Python控制结构与随机数生成

程序的控制结构

程序的分支结构

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

效果:
1739651-20190717185509188-1330912213.png

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

效果:
1739651-20190717185600734-1641538922.png

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

效果:
1739651-20190717185648110-1611105120.png

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

效果:
1739651-20190717185726893-376522680.png

  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)

效果:
1739651-20190717185810187-1448175113.png

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

效果:
1739651-20190717185903871-1066736293.png

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

效果:
1739651-20190717185955532-972317720.png

  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

效果:
1739651-20190717190101167-1162544055.png

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

效果:
1739651-20190717190143370-290204961.png

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

效果:
1739651-20190717190222860-1153729400.png

转载于:https://www.cnblogs.com/lvxiwei/p/11203045.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值