第二节 Python分支结构

news2024/11/25 12:59:42

文章目录

  • 一,分支结构
    • 1.1 概述
    • 1.2 语法格式
      • 1.2.1 单分支语法结构
      • 1.2.2 多分支语法结构
      • 1.2.3 多重语法结构
      • 1.2.4 分支语句的嵌套结构
    • 1.3 Debug调试
    • 1.4 三元运算符
      • 1.4.1 求两个数的差值
  • 二 专项练习题
    • 2.1 计算快递包裹重量
    • 2.2 判断奇偶数
    • 2.3 判断闰年
    • 2.4 最大的数
    • 2.5 三个数排序
    • 2.6 三角形进阶判断
    • 2.7 人机猜拳游戏

一,分支结构

1.1 概述

  1. 根据python第一节的内容,如果跟着敲的同学们会发现,无论你怎么写,代码的执行顺序都是从上往下按照顺序结构执行的。
  2. 如下列场景:都需要根据判断条件来决定执行哪个流程。
    • 过走斑马线 ,根据交通灯的颜色,判断上是否可以通过。
    • 上网吧,会根据年龄,进行判断你是否可以上网。
    • 做公交车,根据是否刷卡来判断能否乘坐。
  3. 什么叫做分支语句?
    • 根据 判断条件 选择执行路径,而不是按照语句出现的物理顺序。
      在这里插入图片描述

1.2 语法格式

1.2.1 单分支语法结构

  1. 如果判断条件中的,表达式成立,会执行结构里面内容,否则就不执行。

    • 在python中使用 缩进来,代替代码中的层级关系。
    """
    关键字  if 
    如果条件表达式成立,执行语句
    如果表达式不成立, 就不执行语句
    """ 
        
    if 条件表达式:    	#关键字,if 条件表达式,然后面接一个冒号:
    	  执行语句1      # 换行之后, 制表符tab距离相当于4个空格 	
    # 注意,按照缩进格式进行区别  
    执行语句2 # 执行语句2就不受if控制.
    
  2. 练习

    • 键盘录入天气状况,然后判断是否能出去活动,并给出提示。
      • 从题目中去分析代码编写要求。
      • 没有使用代码缩进,会有什么现象。
    """
     键盘录入天气状况,然后判断是否能出去活动,并给出提示。
    """
    
    #1.控制台接收输入条件
    weather = input("请输入天气条件"); #控制台接收类型是 str类型
    
    #2. 根据条件进行判断
    if weather =="晴天":
        print("可以在室外进行活动")
    
    #如果和if是同级别的,
    print("看看我执行了么?")
    

1.2.2 多分支语法结构

  1. 接上一个单分支结构案例,根据条件表达式的判断,可以执行不同的流程。

    • 现在我需要根据表达式条件不同,执行不同的流程,需要别分给出结果 ?
  2. 多分支语法结构

    • 条件表达式成立,Ture 执行,if中的 ,语句1 ,
    • 表达式不成立,False 执行 ,else中的,语句2.
          
    	if 条件表达式:    	#关键字,if 条件表达式,然后面接一个冒号:
    		  执行语句1      # 换行之后, 制表符tab距离相当于4个空格 	
    	else:
    		  执行语句2  
    
  3. 练习:

    • 思考一个问题? else 后面为什么不接条件表达式?
    """
     键盘录入天气状况,然后判断是否能出去活动,并给出提示。
    """
    
    #1.控制台接收输入条件
    weather = input("请输入天气条件"); #控制台接收类型是 str类型
    
    #2. 根据条件进行判断
    if weather =="晴天":
        print("可以在室外进行活动")
    else:       # else 后面为什么不接条件表达式? 可以if共用一个组成分支.
        print("可以在室内进行活动")
    
    print("程序执行结束......")
    
  4. 思考: 只使用单分支能否解决 多分支if-else的案例。

    • 单个if 解决。
    • 这样同上面的 if - else 结构有么不同 ?
    if weather =="晴天":
        print("可以在室外进行活动")
    if weather =="雨天":
        print("进行室外活动")
    
  • 思路 : 单分支相当于匹配 2次, 而 if-else结构只需要匹配1 次即可, 效率高!
    • 注意, 下面双if的时候如果条件输入错误,都会不执行, 但是if-else结构总会执行一个。

在这里插入图片描述

1.2.3 多重语法结构

  1. 主要是解决区间条件判断问题,如,开始成绩。

    • 语法格式
    if 判断条件1:
        语句体1
    elif 判断条件2:
        语句体2
    ....    # 这里可以有多个elif
    else:
        语句体n   # 当所有的条件都不满足的时候, 执行这里的内容.
    
  2. 多重if 结构的执行流程 :

    • 先执行判断条件1, 看其是否成立, 成立则执行对应的语句体1, 然后程序结束.
    • 如果判断条件1不成立, 则执行判断条件2, 看其是否成立, 成立则执行对应的语句体2, 然后程序结束.
    • 如果不成立, 则执行判断条件3,… 依次类推.
    • 如果所有的条件都不满足的时候, 执行最后一个else的内容.
      在这里插入图片描述
  3. 计算区间成绩 :

    • 下面的案例你有几种实现形式 ?
    • 从一个编程角度去,考虑 边界值,或者反向使用if多重结构
      在这里插入图片描述
    score = int(input("请输入考试成绩:")) # 接收成绩,进行类型转换.
    #因为涉及到区间选择,即多条件选择,所以需要 多重分支结构
    if score<=100 and score>=90:
        print("A")
    elif score<=89 and score>=80:
        print("B")
    elif score<=79  and score>=70:
        print("C")
    elif score<=69 and score>=60:
        print("D")
    elif score<=59 and score>=0:
        print("E")
    else:
        print("输入有误,请重新检查")
    
    #分割线 
    print("-"*20)
    
    """
    	第二种实现方式, 考虑边界值, 使用if的反向操作,
    	
    """
    # 反向操作 如果 不满足条件我就不需要进行判断
    
    if score < 0 or score > 100:  # 直接排除非法的边界值条件
        print("输入有误,请重新检查")
    elif score >= 90:  # 相当于 score<=100 and score>=90:
        print("A")
    elif score >= 80:
        print("B")
    elif score >= 70:  # 相当于 score <= 79 and score >= 70:
        print("C")
    elif score >= 60:
        print("D")
    else:
        print("E")  # score<=59 and score>=0:
    
    

1.2.4 分支语句的嵌套结构

  1. 所谓的if嵌套指的是 if语句内部还有一个if语句.

    • 那我们怎么理解这句话,先看语法构成。
    • 原理: 只有外面的if条件成立了,才能执行里面的语句。
    if 判断条件:
    	语句体
        
        if 判断条件:
            语句体
        else:
            语句体
    else:
        语句体
    
  2. 练习场景: 跑步比赛,男女同组选拔,跑进20s内,进入正式比赛,男生进男生组,女生进女生组,并且给出提示

    • 这就是一个嵌套结构的体现。
    """
    跑步比赛,男女同组选拔,跑进20s内,进入正式比赛,男生进男生组,女生进女生组。
    
    1. 首先需要判断是否能进正式比赛
    2. 然后判断性别
            男生进男生
            女生进女生
    """
    
    # 控制台输入跑步成绩
    score = int(input("请输入比赛成绩:"))
    
    # 1. 第一次判断是否能进比赛
    if score<=20 :
        print("进入比赛,请输入性别:")
        sex = input()
        if sex=="男":
            print("进男生组")
        elif sex=="女":
            print("进女生组")
        else:
            print("请正确输入,您的性别")
    
    # 如果没有成功,给出提示.
    else:
        print("很遗憾,继续努力")
    

1.3 Debug调试

  1. 什么事 Debug ? 就是用来调试程序的, 可以查看程序的执行流程, 或者 对程序进行排错.

    • Bug解释: 程序员把程序出现的所有的非正常的情况, 统称为: Bug.
    • 调试程序, 查看程序执行流程,排错。
  2. 看哪里?

    • 下左: 记录的是程序执行到哪里了.
    • 下中: 记录的是变量的变化过程.
    • 下右: 记录的是控制台的输出结果.
  3. 如何进行下一步?

    • F7: 逐过程调试, 即: 一步一步的走, 看到函数会进去查看源码.
    • F8: 逐行调试, 即: 一行一行的走, 不管是否是函数, 都当做一行代码执行.
    • F9: 逐断点调试, 即: 一个一个断点的走.
  • 逐个断点调式相当于对有问题的代码缩小范围, 然后在使用逐行的方式,如果有自己写的方法,可以在使用逐过程调试。 三者需要配合使用!
    在这里插入图片描述
  1. 如何移除断点?
    • 第一种: 重新点击你的断点。
    • 第二种: 选择"双点图标(break points… )即可。
      在这里插入图片描述

1.4 三元运算符

  1. 什么是三元运算符?
    • 它也叫三目运算符, 就是用来简化 if—else的写法的.
    • 相当于另一种运算符。
  2. 语法格式
    • 练习题: 获取两个数的最大值
    • 先用if-else 分支结构, 在使用 三目运算符的方式,观察有什么不同?
"""
 变量名 = 语句体1 if 判断条件 else 语句体2 
 				相当于 a if条件判断 else b
 执行流程 :
 	先执行判断条件
 	如果条件成立,则执行语句体1
 	如果条件不成立 语句体2
 	
"""

# 相当于简化了 if -else 的书写格式,增强了阅读理解的方便性.
#根据语法的结构
# a if条件判断  else b 相当于成立就是 a 不成立就是b

# 输入两个数比较最大值

a = int(input("请输入a的值"))
b = int(input("请输入b的值"))

#需要使用 一个值接收这个三元运算符输出的值  max = 三元运算符
max =  a if a>b else b
print(max)

print("-"*20)

#通过if --else 分支结构写出
# 声明第三个变量存储最大值
max=0
if a>b:
    max =a  #如果a大,就赋值给max
else:
    max = b
print(f"a输入的值是:{a},b输入的值是:{b},最大值是{max}")
		 

1.4.1 求两个数的差值

  1. 输入两个数, 计算他们的差值。
    • 注意,两个数相差的值,叫做差值。
"""
练习:计算两个数的差值.
    例如 
        输入2个整数 
                a=  10 
                 b=  20 
                    之间差值是 10 
        假如:
             a = 20 
            b = 10  
                    之间差是 10 
    
    所以 差值不能出现负数 -10 是啥!怎么处理这样的问题
"""

v1 = int(input("输入第一个值: "))
v2 = int(input("输入第二个值: "))

value = (v1-v2) if (v1>=v2) else (v2-v1)
print(f"差值是{value}")

二 专项练习题

2.1 计算快递包裹重量

  1. 如图所示,需要计算包裹费用。
    在这里插入图片描述

    # 从控制台接收输入水果重量
    # 需要注意转换数据类型 float()
    weight = float(input())
    
    #2.进行逻辑上的判断
    #2.1 如果小于15 相当于标准运费
    if weight <= 15:
        print("运费", weight * 6)
    #2.2 如果大于15的话,如何处理?
    # 超过的部分 需要额外计算 但是规定部分重量以内的部分在原来基础上计算。
    else:
        print("运费", (weight - 15) * 3 + 15 * 6)
    

2.2 判断奇偶数

  1. 如何写一个判断奇数还是偶数的程序。
    • 什么是奇数? 什么是偶数 ?
      在这里插入图片描述
"""
1. 首先明确什么是奇数
    什么是偶数
    就是跟2做对比
    num%2==0 余数为0偶数
    num%2==1 余数为奇数

"""
num = int(input("请输入"))
if num % 2 == 0:
    print("偶数")
else:
    print("奇数")

2.3 判断闰年

在这里插入图片描述

"""
根据条件说明
    第一点 能被4整数并且不能被100整数
    year%4==0 and year%100!=0

    第二个条件 能被400整除
        year%400==0

"""
year = int(input("请输入年份:"))
if year % 4 == 0 and year % 100 != 0:
    print("闰年")
elif year % 400 == 0:
    print("闰年")
else:
    print("平年")

2.4 最大的数

在这里插入图片描述

"""
从键盘中输入三个整数,输出其中最大的数.

    1. 输入格式
        三行,每行一个整数
    2.输出格式
        一个整数 为其中最大数.

    主要考察的就是 比较运算符和逻辑运算符的使用
    第一个条件 如果 a>=b and a>=c 是就是a最大
        ...所以依次类推
            b>=c and b>=a
            不那么就是 b最大
"""
a, b, c = list(map(int, input().split()))

if a >= b and a >= c:
    print(a)
elif b >= a and b >= c:
    print(b)
else:
    print(c)

2.5 三个数排序

在这里插入图片描述

""""
三个数的排序
1. 从键盘输入三个整数,请输出三个整数按照从小到大的顺序输出
    相当于冒泡排序的算法
    有几个数比较就循环几次
    7 10 8   这三个数应该比较几次
第一次比较   a> b? 7 10 8 不交换位置
第二次比较   a>c?  7 10 8 不交换位置
第三次比较   b>c ? 7 8 10 交换位置 

经过排序算出结果.


"""

a, b, c = list(map(int, input().split()))
# 记住是三个if结构 不是 if--elif结构
if a > b:
    a, b = b, a
if a > c:
    a, c = c, a
if b > c:
    b, c = c, b
print(a, b, c)

2.6 三角形进阶判断

  1. 三角形成立的条件是什么?
    • 两边之和大于第三边。
      在这里插入图片描述
"""
1. 能否组成等边三角形,如果能输出 yes 否则 no
2. 是否能组成等腰三角形,如果能请输出yes
3. 是否能组成三角形 如果能输出  yes
"""

x_db = "no"  # 等腰
x_dy = "no"  # 等边
x_ = "no"  # 三角形

# 接收三个输入的整数
a = int(input())
b = int(input())
c = int(input())

# 最外面的一层开始判断
if a == b and b == c:
    x_db = "yes"  # 改变变量
if a == b or b == c or a == c:
    x_dy = "yes"
if a + b > c and a + c > b and b + c > a:
    x_ = "yes"

print(x_db, x_dy, x_)

2.7 人机猜拳游戏

  1. 模拟玩家与电脑的一种猜拳的游戏
  2. 需要使用一个新的函数
    • 导包 import random
    • random.randint(a, b) 用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b。
    import  random  
    #随机生产 包含开始到结束的随机数: 如下  随机生成 1~3的随机数。
    num = random.randint(1,3)
    print(num)
    
  3. 模拟猜拳游戏规则
    • 提示用户出拳,然后与电脑相比较,规则通用 剪刀>布 就算赢,并给出提示。
    • 规则就是 电脑赢, 玩家赢 , 平局。
"""
1.相当于和机器人猜拳游戏
    提示:
        可以将石头剪刀布设计为
            对应数字  1  石头
                    2  剪刀
                    3 布

2. 随机生产函数
        先导入包  import random

        random.randint(a,b)  随机生成 包含  a~b 的数.

"""

import  random  # 导包
#猜拳游戏, 代码实现.
user_play = int(input('请出拳:  1(剪刀)  2(石头)  3(布'))
# 2.电脑出的拳,就是随机数.
pc_play = random.randint(1, 3)  # 1(剪刀)  2(石头)  3(布)

"""
可以提前预知电脑出拳.,也可以让电脑先出拳,那就只需要让电脑的先生成即可.
可以提前作弊.
"""
# 输出电脑
print(f"电脑出拳:{pc_play}")
#可以先使用平局,这样就可以少写一部分代码,不然判断玩家胜,在判断电脑胜, 最后else才是平局,就会代码冗余.
#反方向,使用if选择结构.
if user_play == pc_play:
    print('平局')
# 4. 如果玩家胜利了, 就是提示玩家胜利,
elif (user_play == 1 and pc_play == 3) or (user_play == 2 and pc_play == 1) or (user_play == 3 and pc_play == 2):
    print("玩家取得胜利")
# 反之,则电脑胜利
else:
    print('电脑胜利')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/587801.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Win11怎么远程控制另外一台电脑?

​Win11是微软推出的一款Windows操作系统&#xff0c;它改善了视觉效果&#xff0c;并具有许多创新功能&#xff0c;例如集成的Android应用程序&#xff0c;用于游戏的Xbox技术等。如今&#xff0c;许多用户已从Win10或Win7升级到Win11。但是很多用户不知道Win11怎么远程控制另…

ArcGis系列-java发布空间表为要素服务(feature)

1,实现思路 使用java调用cmd命令执行python脚本python环境使用arcgis pro安装目录下的 \ArcGIS\Pro\bin\Python\envs\arcgispro-py3发布数据库表前需要先用创建数据库的sde文件&#xff08;创建sde文件不需要连接arcgis&#xff09;发布表时,先在本地的空项目模板中添加数据库…

界面组件Telerik UI for WPF可轻松实现直方图,让数据可视化更简单

Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序&#xff0c;同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等&#xff0c;创建的应用程序可靠且结构良好&#xff0c;非常容易维护&#xff0c;其直观的API将无缝地集成Visual Studio…

word如何设置页码?教您快速掌握!

案例&#xff1a;论文排版时&#xff0c;需要对页码进行编号&#xff0c;但我不知道怎么操作。我想如何快速设置word页码&#xff0c;有没有小伙伴可以分享一下方法&#xff1f; word是一款广泛使用的文字处理软件&#xff0c;许多人在撰写论文、报告或其他文档时都需要对页面…

StableDiffusion教程(3) - 模型安装

StableDiffusion模型安装 1. 搜索模型 打开C站或者LibLibAI模型站下载模型 C站地址&#xff1a;https://civitai.com/ LibLibAI模型站地址&#xff1a;LiblibAi - 中国领先原创AI模型分享社区 2. 下载模型 在模型详情页面&#xff0c;点击下载即可下载模型 3. 把模型放进S…

《A New General Type-2 Fuzzy Predictive Scheme for PID Tuning》翻译,2021年

《一种新的用于PID整定的通用2型模糊预测方案》 摘要 PID控制器在各种工业应用中被广泛使用。但是&#xff0c;在许多有噪音的问题中&#xff0c;需要强有力的方法来优化PID参数。在本文中&#xff0c;介绍了一种通过模型预测控制和广义 2 型模糊逻辑系统调整比例-积分-微分参数…

一步一步的指导在自定义数据集上训练 YOLO NAS

本教程将一步一步指导实验 YOLO-NAS 的进行完整的数据集训练。 YOLO-NAS是目前最新的YOLO物体检测模型。从一开始,它就在准确性方面击败了所有其他 YOLO 模型。与之前的 YOLO 模型相比,经过预训练的 YOLO-NAS 模型可以更准确地检测到更多的对象。但是我们如何在自定义数据集…

MySQL 条件判断函数

文章目录 条件判断函数if()函数ifnull() 函数case() 函数1. 成功匹配其中一条 when 分支3. 所有 when 分支匹配失败&#xff0c;进入 else 默认分支。 条件判断函数 关于条件判断函数&#xff0c;主要介绍以下三种&#xff1a; if()函数 if() 函数&#xff0c;其基本语法如下…

D4-4 基本分页存储管理方式(第二节课)

目录 4.4.4 两级和多级页表 1、两级页表的引入 2、两级页表 4.4.6 对换 1、外存的划分 2、对换区管理 3、进程的换出与换入 4.4.4 两级和多级页表 1、两级页表的引入 可以采用以下方法来解决这一问题&#xff1a; 采用离散分配方式来解决难以找到一块连续的大内存空…

SaaS突围战,用友走了8年,金蝶却用了10年,成果却被捷足先登

“南金蝶北用友”得风口在哪里&#xff1f; 众所周知&#xff0c;在企业软件管理市场中&#xff0c;一直有着这样的说法“北用友南金蝶”&#xff0c;足以可见&#xff0c;两家企业在市场中的份量。两家公司最初都是以财务软件起家&#xff0c;关于创始人王文京和徐少春的创业…

PyTorch-模型验证

目的&#xff1a;利用已经训练好的网络模型&#xff0c;输入数据进行测试。&#xff08;相当于将其运用于真实场景中&#xff09; Cifar-10分类&#xff1a; test1&#xff1a;放入一张狗狗的图片 进行验证&#xff1a;test.py import torch import torchvision from PIL imp…

gaussDB的schema创建查询,及其查询下面的表列

pg_catalog.pg_namespace来查看当前数据库中全部的Schema select oid,* from pg_catalog.pg_namespace; 创建schema create schema gs_dqms 显示当前使用的schema SHOW search_path; 切换当前schema SET search_path TO gs_dqms; 查看Schema---- dgp_sd下所有表的大小&…

2023年软件设计师上午试题及参考答案

2023年上半年 软件设计师 上午试卷 加粗为参考答案,不一定能全对 &#xff08;考试时间9:00~11:30共150分钟&#xff09; 请按下述要求正确填写答题卡 1.在答题卡的指定位置上正确填写你的姓名和准考证号&#xff0c;并粘贴考生条形码。 2.本试卷的试题中共有75个空格&#…

蓝牙资讯|2023 年 Q1 全球智能音频设备出货量8672万部

市场调研机构 Canalys 公布了 2023 年第一季度全球个人智能音频设备出货量报告。 报告显示 2023 年第一季度全球个人智能音频设备出货量跌至 8672 万部&#xff0c;同比下降 15%。其中 TWS 真无线耳机出货量下滑至 6158 万部&#xff0c;同步下降 10%。其中&#xff0c;苹果&…

基础知识铺垫

目录 一、HTTP 1.http协议 2.http协议的工作原理 3.http的请求 请求行 请求头 请求体 4.http的响应 响应行 5.get和post请求方法 6.get和post的区别 回退 请求响应速度 二、MYSQL 1.创建数据库 2.创建表 3.添加数据 4.删除数据 5.更新数据 6.查询数据 7.常…

Vue3+express实现element-plus组件upload上传图片携带data

需求背景&#xff1a;有多个轮播图需要单独上传&#xff0c;需要用data去区分上传的是哪一个轮播图 添加轮播图页面如下图所示&#xff1a; 实现效果&#xff1a; 实现思路及需要了解一下信息 ①每一个轮播图应在数据库中有相对应的字段&#xff0c;如下所示&#xff1a; 需…

【数据仓库】即席查询

文章目录 定义特点OLTP、OLAP、即席查询(ad hoc query)区别与联系相关框架Kylin来源 定义 即席查询&#xff08;Ad Hoc&#xff09;是用户根据自己的需求&#xff0c;灵活的选择查询条件&#xff0c;系统能够根据用户的选择生成相应的统计报表。即席查询与普通应用查询最大的不…

CompletableFuture的简单使用

原文地址&#xff1a;CompletableFuture原理与实践-外卖商家端API的异步化 CompletableFuture的介绍&#xff1a; CompletableFuture是Java 8中引入的一种基于Future的异步编程机制。与传统的Future相比&#xff0c;CompletableFuture提供了更多的操作链支持&#xff0c;并且…

skywalking 9.x入门(二) skywalking全链路tid追踪

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 背景 继上次我们对skywalking整体架构作了一些了解&#xff0c;然后就是学习了spring boot项目如何基于agent接入skywalking 这次我们要实现的是spring boot项目…

USB | 查询usb设备占用带宽

USB | 查询usb设备占用带宽 请教一下windows下有什么工具能查询usb设备占用带宽吗&#xff1f;Linux上有usbtop&#xff0c;windows有类似工具吗 DeviceMonitoringStudio设备监控工具的使用