python入门篇-day02流程控制语句

python中的流程控制语句

一 顺序结构

概述

程序按照顺序执行

特点

从上向下, 从左向右, 依次逐行执行(程序默认顺序执行)

二 分支结构

概述/作用

满足条件才执行 (一次) 的代码

单分支if...

格式:

if 条件表达式:

​ 语句体

执行流程:

    1. 先执行条件表达式, 看是否成立.
    2. 如果成立, 则执行相应的语句题
    3. 如果不成立, 则什么都不执行

案例:

需求:

键盘录入年龄, 并接收, 判断是否 不小于18岁, 如果满足则输出: 已成年

代码:

print('start')
​
# 定义变量接受用户输入信息
age = eval(input('请输入你的年龄:'))
​
# 判断年龄是否符合要求
if age >= 18:
    
    # 条件成立执行的语句
    print('看清楚,成年了')
​
print('end')

比较和逻辑运算符

比较运算符

相等: == 不等: != 大于等于: >= 小于等于: <=

连续赋值: a = b = c => a = c , b = c

逻辑运算符

或: or 非: not 与: and(并且)

双分支if...else...用法

格式:

if 条件表达式:

​ 语句体

else:

​ 语句体(条件不成立时执行else内的语句)

执行流程:

  1. 先执行条件表达式, 看是否成立.

  2. 如果成立, 则执行相应的语句题

  3. 如果不成立, 则什么都不执行

案例:

需求:

键盘录入身高, 如果没有超过150cm, 则输出: 进入动物园不需要买票, 否则提示: 进入动物园需要买票.

代码:

# 定义变量接收用户输入的身高信息
height = eval(input('请输入身高信息(cm):'))
​
# 判断升高是否低于150cm
if height <= 150:
    
    # 低于则打印免费进入
    print('免费进入')
​
# 否则打印要买票
else:
    print('要买票')

多分支if...elif...else...

格式:

if 条件表达式1:

​ 语句体1

elif 条件表达式2:

​ 语句体2

elif 条件表达式3:

​ 语句体3

......

else:

​ 语句体n

执行流程:

  1. 先执行条件表达式1 , 成立则执行语句体1

  2. 条件1表达式不成立, 判断条件表达式2 ,成立则执行语句体2

  3. 条件2表达式不成立, 判断条件表达式3 ,成立则执行语句体3

  4. ..........(重复执行上述内容)

  5. 都不成立执行else内的语句体

案例:

需求:

代码:

充分利用if-else中else默认的反条件

# 最终版: 推荐写法, 比普通版效率高, 充分运用else反条件
grade = eval(input('请输入成绩:'))
if grade < 0 or grade > 100:
    print('成绩不合法')
elif grade >= 90:                   # 在区间(0, 100)中判断大于90的
    print('奖励: 游乐场通票一张')
elif grade >= 80:                   # 在区间(0, 90)中判断大于80的
    print('奖励: 自助餐一次')
elif grade >= 70:                   # 在区间(0, 80)中判断大于70的
    print('奖励: 玩具一个')
elif grade >= 60:                   # 在区间(0, 70)中判断大于60的
    print('奖励: 练习册一本')
else:                               # 在区间(0, 60)
    print('奖励: 男女混双')

if嵌套

格式:

if 语句嵌套是指: if语句的语句体 还是if 语句.

无论何时嵌套不要超过三层

案例:

需求:

公交车刷卡上车就坐, 卡内余额大于等于2元可以上车, 否则无法上车; 上车后座位大于0可以就坐, 否则无法就坐.

代码:

m = eval(input('请输入卡内余额:'))
if m >= 2:
    print('上车成功')
    sit = eval(input('请输入车内作为数量:'))
    if sit > 0:
        print('可以坐下')
    else:
        print('没有座位')
else:
    print('上车失败')

三元表达式

格式:

值1 if 条件 else 值2

将三元表达式结果赋值给变量

变量名 = 值1 if 条件 else 值2

案例:

需求:

比较两个数的大小

代码:

a = 10
b = 3
# 方式1:if...else...写法
if a > b:
    max_num = a
else:
    max_num = b
​
a1 = 10
b1 = 45
# 方式2:三元表达式
max_num1 = a1 if a1 > b1 else b1
​
print(max_num)
print(max_num1)
​

if综合案例-剪刀石头布

需求:

键盘录入玩家出的手势, 且和 电脑人的手势(随机生成), 进行比较, 打印结果.

代码:

老师代码:

# 铺垫知识, 如何获取一个指定范围内的随机数.
# 1. 导包, 即: 通过第三方的包来实现.
import random
​
# 2. 通过 random.randint(a, b) 函数实现 获取随机数.
print(random.randint(1, 3))     # 包左包右, 生成 1 ~ 3之间的随机数.
print('-' * 28)
​
# 具体的完成 猜拳游戏案例, 规则: 石头 -> 1, 剪刀 -> 2, 布 -> 3.
# 1. 键盘录入玩家的手势编号, 并接收. 记得转成数值.
player = int(input('请输入您的手势编号, 规则: 石头(1), 剪刀(2), 布(3)  => '))
​
# 2. 随机生成 电脑人的 手势编号.
pc = random.randint(1, 3)
# print(f'电脑人的手势编号为: {pc}')
​
# 3. 比较 玩家 和 电脑人的手势编号, 并打印结果.
# 情况1: 玩家胜利.   玩家:石头, 电脑: 剪刀,    玩家:剪刀, 电脑:布,    玩家: 布, 电脑: 石头
if (player == 1 and pc == 2) or (player == 2 and pc == 3) or (player==3 and pc == 1):
    print('玩家 获得胜利')
elif pc == player:
    # 情况2: 平局.
    print('哎呀, 平局了!')
elif (player == 1 and pc == 3) or (player == 2 and pc == 1) or (player==3 and pc == 2):
    # 情况3: 电脑人 胜利
    print('电脑人 获得胜利!')
else:
    print('手势编号有误, 该轮无成绩!')

自己代码:

# 引入随机函数用来生成电脑玩家的出拳数字代码
import random
computer = random.randint(0, 2)
​
# 定义变量接受玩家出拳数字代码
player = int(input('请输入出拳结果(剪刀:0|石头:1|布:2):'))
​
# 判断玩家和电脑的出拳数字, 决定输赢
if player != 0 and player != 1 and player != 2:
    print('输入不合法')
elif computer == player:
    print('平局')
elif (computer == 0 and player == 1) or (computer == 1 and player == 2) or (computer == 2 and player == 0):
    print('玩家获胜')
else:
    print('电脑获胜')

三 循环结构

概述

满足特定条件 , 才会循环执行的语句

语法:

while 循环: 更适用于 循环次数不固定的情况

for 循环: 更适用于循环次数固定的情况

循环语法的四个核心部分

1.初始化条件:

表示循环从哪里开始, 一般写成 i = 0 , 或者 i = 1

2.判断条件:

表示循环什么时候结束, 即: 判断条件成立, 则循环执行, 不成立则循环结束

3.循环体:

表示条件满足的时候, 重复执行的语句

4.控制条件:

用于控制初始条件变化的, 例如: i += 1

while循环

格式

初始条件1 i = 0

while 判断条件2: while i < 5:

​ 循环体3 循环执行的语句

​ 控制条件4 i += 1

执行流程

执行流程: 第1次循环: 1, 2, 3, 4 假设: 判断条件成立. 重复循环: 2, 3, 4 假设: 判断条件成立. 最后1次循环: 2 判断条件不成立, 循环结束.

案例-计算数字和

需求:

计算1-100的数字和

计算1-100的偶数和

计算1-100的质数和

代码:

# 计算1-100之间的数字和
# 方式1:
i = 1
cnt = 0
while i <= 100:
    cnt += i
    i += 1
print(cnt)
​
# 方式2:
j = 1
k = 100
cnt2 = 0
while j <= 50 <= k:
    cnt2 += j + k
    j += 1
    k -= 1
print(cnt2)
​
​
# 计算1-100间所有偶数和
# 方式1:
# 初始条件
i = 1
# 定义数字和变量
sum_dau = 0
# 定义循环
while i <= 100:
    # 判断是否为偶数
    if i % 2 == 0:
        # 是则和变量加该数字
        sum_dau += i
    # 定义循环控制条件
    i += 1
# 输出结果
print(sum_dau)
​
# 方式2:
i = 2
sum_dau2 = 0
while i <= 100:
    sum_dau2 += i
    i += 2
print(sum_dau2)
​
​
# 计算1-100间所有奇数和
# 方式1:
# 初始条件
i = 1
# 定义数字和变量
sum_dau3 = 0
# 定义循环
while i <= 100:
    # 判断是否为偶数
    if i % 2 != 0:
        # 是则和变量加该数字
        sum_dau3 += i
    # 定义循环控制条件
    i += 1
# 输出结果
print(sum_dau3)
​
# 方式2:
i = 1
sum_dau4 = 0
while i <= 100:
    sum_dau4 += i
    i += 2
print(sum_dau4)
​

while嵌套

概念: 一个循环的循环体是 另一个循环

精髓: 外循环执行一次, 内循环执行一圈

细节: 执行次数 = 内循环此数 * 外循环此数

概述: 循环嵌套指的是 1个循环的 循环体 是 另1个循环语句, 这种写法就称之为: 循环嵌套.格式:

while 条件:
​
    ... 循环体 ...
​
    while 条件:
​
        ... 循环体 ...
​

细节: 1. 执行总次数 = 外循环执行次数 * 内循环执行次数. 2. 外循环执行一次, 内循环执行一圈(一轮). 3. 在如下的打印图形案例中, 外循环控制的是: 行数, 内循环控制的是: 每行的列数.

案例-打印图形

需求:

打印图形

代码:

# 正方形
# 方式1:for循环
for i in range(5):
    for j in range(5):
        print('*', end='\t')
    print('')
print('-' * 30)
​
# 方式2:while循环
i = 0
while i < 5:
    j = 0
    while j < 5:
        print('*', end='\t')
        j += 1
    i += 1
    print('')
print('-' * 30)
​
# 正直角三角形
# 方式1:for循环
for i in range(5):
    for j in range(i + 1):
        print('*', end='\t')
    print('')
print('-' * 30)
​
# 方式2:while循环
i = 0
while i < 5:
    j = 0
    while j < i + 1:
        print('*', end='\t')
        j += 1
    i += 1
    print('')
print('-' * 30)
​
# 倒直角三角形
# 方式1:for循环
for i in range(5):
    for j in range(5 - i):
        print('*', end='\t')
    print('')
print('-' * 30)
​
# 方式2:while循环
i = 0
while i < 5:
    j = 5 - i
    while j > 0:
        print('*', end='\t')
        j -= 1
    print('')
    i += 1
print('-' * 30)
​
案例-打印乘法表

需求:

打印九九乘法表

代码:

# 方式1: while 循环
i = 1
while i <= 9:
    j = 1
    while j <= i:
        print(f'{j} * {i} = {i * j}', end='\t')
        j += 1
    print('')
    i += 1
print('-' * 130)
​
# 方式2: for 循环
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f'{j} * {i} = {i * j}', end='\t')
    print('')

for循环

介绍

概述: 它和while循环类似, 都属于循环结构的一种, 一般适用于: 固定次数 的场景.格式:

for 变量名 in 容器类型: 循环体 else: 未遇到break执行的语句

小技巧: 因为 for循环的格式, 远比while要简单, 所以以后使用循环的时候, 优先考虑用for循环, 搞不定才会考虑用while循环.

案例

遍历字符串

案例1: for循环, 遍历字符串.

# 1. 定义变量, 记录字符串值.
s1 = 'abc'
# 2. 遍历字符串.
for i in s1:
    # 变量i 就是字符串中的每个字母.
    print(i)
遍历字符串,判断是否有指定字母

案例2: for循环, 遍历字符串, 判断是否有字母b, 如果有就打印'hello world'

# 1. 定义变量, 记录字符串值.
s1 = 'abc'
# 2. 遍历字符串.
for i in s1:
    # 变量i 就是字符串中的每个字母.
    print(i)
    # 判断是否是 字母b, 如果是: 就打印 hello world
    if i == 'b':
        print('hello world')
计算数字和

案例3: for循环, 求 1 - 100之间的 偶数和.

扩展: range(start, end, step) 生成指定区间的数字序列, 包左不包右. step表示步长, 默认的步长是: 1

# 1. 定义求和变量.
sum = 0
# 2. 获取 1 - 100之间所有的偶数.
for i in range(2, 101, 2):  # range(2, 101, 2)  获取 2 - 101之间, 包左不包右, 步长为2的数字序列, 即: 2, 4, 6, 8, 10...
    # print(i)
    # 3.具体的求和动作.
    sum += i
# 4. 打印结果.
print(f'sum: {sum}')
打印九九乘法表

案例4: for循环, 打印99乘法表.

for i in range(1, 10):   # 外循环, 控制: 行数. i的值: 1 - 10, 包左不包右.
    for j in range(1, i + 1):
        print(f'{j} * {i} = {i * j}', end='\t')
    print() # 每行打印完之后, 记得: 换行.

循环中断

break

终止循环, 循环结束, 不再往下执行

continue

终止本次循环, 开始下次循环

案例解释

需求:

观察如下代码, 在指定位置填充内容, 使其分别打印 2次, 7次, 13次 Hello World!

图解:

代码:

print('----- start -----')
​
for i in range(1, 11):     # i的值:  1, 2, 3, 4, 5, 6, 7, 8, 9, 10 包左不包右.
    if i % 3 == 0:
        # 在这里填充内容.
        # break       # 终止循环. 打印两次
        # continue    # 结束本次循环的, 继续下次循环.  打印7次
        print(f'hello world! {i}')  # 打印两次: 3, 6, 9 | 共计13次
​
    print(f'hello world! {i}')  # 打印10次
​
print('----- end -----')

扩展:

统计数字各个位置的数字

当前位上的数字 = 数字 // 当前数字所在位 % 10

1-100之间质数规律

1-100之间质数不能被2, 3, 5, 7整除, 或者就是2, 3, 5, 7本身.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值