第五天

程序的分支结构

概述

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

二、单分支结构

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

1740924-20190717165054147-1284641297.jpg

2.1 单分支示例

if True:
    print("条件正确")
guess = eval(input("请输入你猜测的年龄:"))
if guess == 99:
    print("猜对了")
请输入你猜测的年龄:99
猜对了

三、二分支结构

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

1740924-20190717165034153-1055654855.jpg

3.1 二分支示例

if True:
    print("语句块1")
else:
    print("语句块2")
guess = eval(input())
if guess == 99:
    print("猜对了")
else:
    print("猜错了")
26
猜错了

3.2 紧凑形式

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

<表达式1> if <条件> else <表达式2>
guess = eval(input())

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

四、多分支结构

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

1740924-20190717164948443-390784024.jpg

  • 的包含关系
  • 注意变量取值范围的覆盖
score = eval(input())
if score >= 60:
    grade = 'D'
elif score >= 70:
    grade = 'C'
elif score >= 80:
    grade = 'B'
elif score >= 90:
    grade = 'A'

print("输入成绩属于级别{}".format(grade))

五、条件判断及组合

5.1 条件判断

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

5.2 条件组合

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

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

5.3 条件判断及组合

guess = eval(input())
if guess > 99 or guess < 99:
    print("猜错了")
else:
    print("猜对了")
23
猜错了

六、程序的异常处理

6.1 异常处理

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

# 当用户没有输入整数时,会产生异常,怎么处理?

1740924-20190717164900142-1151582631.jpg

6.2 异常处理的基本使用

6.2.1 示例1

try:
    <语句块1>
except:
    <语句块2>
try:
    num = eval(input("请输入一个整数: "))
    print(num**2)
except:
    print("输入不是整数")
请输入一个整数: 234sdfr
输入不是整数

6.2.2 示例2

try:
    <语句块1>
except <异常类型>:
    <语句块2>
try:
    num = eval(input("请输入一个整数: "))
    print(num**2)
# 标注异常类型后,仅响应该异常
# 异常类型名字等同于变量
except NameError:
    print("输入不是整数")
请输入一个整数: sdf2
输入不是整数

6.3 异常处理的高级使用

try:
    <语句块1> 
except:
    <语句块2> 
else:
    <语句块3> 
finally:
    <语句块4>
  • finally对应语句块4一定执行
  • else对应语句块3在不发生异常时执行

程序的循环结构

概述

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

二、遍历循环

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

for <循环变量> in <遍历结构>:
    <语句块>
  • 从遍历结构中逐一提取元素,放在循环变量中
  • 由保留字forin组成,完整遍历所有元素后结束
  • 每次循环,所获得元素放入循环变量,并执行

025-程序的循环结构-01.jpg?x-oss-process=style/watermark

三、遍历循环的应用

3.1 计数循环(N次)

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

3.2 计数循环(特定次)

fro 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.3 字符串遍历循环

for c  in  s: 
    <语句块>
  • s是字符串,遍历字符串每个字符,产生循环
for c in 'python':
    print(c, end=',')
p,y,t,h,o,n,

3.4 列表遍历循环

for item  in  ls:
    <语句块>
  • ls是一个列表,遍历其每个元素,产生循环
for item in [123, "PY", 456]:
    print(item, end=",")
123,PY,456,

3.5 文件遍历循环

for line in  fi:
    <语句块>
  • fi是一个文件标识符,遍历其每行,产生循环
# fi.txt
优美胜于丑陋
明了胜于隐晦
简洁胜于复杂
for line in fi:
    print(line)
优美胜于丑陋
明了胜于隐晦
简洁胜于复杂

四、无限循环

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

025-程序的循环结构-02.jpg?x-oss-process=style/watermark

  • 反复执行语句块,直到条件不满足时结束
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)

五、循环控制保留字

5.1 break 和 continue

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

5.1.1 for

for c in "PYTHON":
    if c == 'T':
        continue
    print(c, end=',')
P,Y,H,O,N,
for c in "PYTHON":
    if c == 'T':
        break
    print(c, end=',')
P,Y,

5.1.2 while

  • break仅跳出当前最内层循环
s = "PYTHON"
while s != "":
    for c in s:
        print(c, end=',')
    s = s[:-1]
P,Y,T,H,O,N,P,Y,T,H,O,P,Y,T,H,P,Y,T,P,Y,P,
s = "PYTHON"
while s != "":
    for c in s:
        if c == 'T':
            break
        print(c, end=',')
    s = s[:-1]
P,Y,P,Y,P,Y,P,Y,P,Y,P,

六、循环的高级用法

6.1 循环的扩展

循环与else

6.1.1 for

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

6.1.2 while

while <条件>:
    <语句块1>
else:
    <语句块2>
  • 当循环没有被break语句退出时,执行else语句块
  • else语句块作为"正常"完成循环的奖励
  • 这里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

rangdom库的使用

一丶 random库的基本介绍

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

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

1.1 random库概述

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

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

二、基本随机数函数

2.1 随机数种子

1740924-20190717170037608-658863130.jpg

函数描述
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

三、扩展随机数函数

1740924-20190717165915822-1444862976.jpg

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

3.1 随机数函数的使用

需要掌握的能力

  • 能够利用随机数种子产生"确定"伪随机数
  • 能够产生随机整数
  • 能够对序列类型进行随机操作

圆周率的计算实例

一,公式法

圆周率的近似计算公式:

π=∑k=0∞[116k(48k+1−28k+4−18k+5−18k+6)]

pi = 0
N = 10
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))

二,蒙特卡罗方法

rom random import random

DARTS = 1000 * 1000
hits = 0.0

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

作业

1. 使用while循环输出1 2 3 4 5 6 8 9 10

i = 0
while i<10 :
    i +=1
    if i==7:
        continue
    print(i)

2. 求1-100的所有数的和

s = 0
for i in range(101):
    s=s+i
    print(s)

3. 输出 1-100 内的所有奇数

for i in range(100):
  if i%2==1:
    print(i)

4 输出 1-100 内的所有偶数

for i in range(100):
  if i%2==0:
    print(i)

5. 求1-2+3-4+5 ... 99的所有数的和

x = 0
for i in range(100):
    if i%2==0 :
        x=x-i
    else:
        x=x+i
print(x)

6. 用户登陆(三次机会重试)

for i in range(3):
  s=input('请输入密码:')
  if s=='123':
        print('密码正确!')
        break
  else:
      print('密码错误!请重新输入')

7:猜年龄游戏
要求:
允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出

import random

mb = random.randint(0,100)
age= 0
for i in range(3):
 age = eval(input('请输入年龄:'))
 if age > mb:
    print('猜大了')
 elif age == mb:
    print('猜对了')
    break
 elif age < mb:
    print('猜小了')    

8:猜年龄游戏升级版(选做)
要求:
允许用户最多尝试3次
每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序
如何猜对了,就直接退出

import random   
mb = random.randint(0,100)
s = 'y'
while s=='y':
    for i in range(3):
        s = 'n'
        age = eval(input('请输入年龄:'))
        if age > mb:
            print('猜大了')
        elif age == mb:
            print('猜对了')
            break
        elif age < mb:
            print('猜小了')
    else:
        s = input('是否继续(y/n):') 

9.for循环打印99乘法表

for i in range(1,10) :
  for s in range(1,i+1):
       print(f'{i}*{s}={s*i}',end=" ")
  else:print('\n')

10.for循环打印金字塔:如下

    *   
   ***
  *****
 *******
*********
for i in range(5):
    s=(i+1)*2-1
    print(f"{'*'*s: ^9}")

转载于:https://www.cnblogs.com/xm-lucky/p/11202271.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值