当前位置: 首页 > news >正文

Python程序控制结构 if语句详解

前面我们已经详细介绍了Python编程基础入门:从风格到数据类型再到表达式

在编程中,控制结构决定了代码的执行顺序。Python提供了丰富的控制结构,可以帮助程序根据不同条件做出不同的决策和操作。本文将深入介绍Python中常见的控制结构——包括if语句的单分支、双分支以及嵌套结构。
在这里插入图片描述

一、if单分支语法

1.1 定义

if语句是Python最简单的控制结构之一,它根据条件的真或假来决定是否执行特定代码。if语句的条件必须是布尔表达式(即结果为TrueFalse)。

  • 语法
    if 条件表达式:语句块
    
    条件表达式True时,语句块会被执行;否则,语句块将被跳过。

1.2 示例

  • 示例1:判断一个数是否为正数

    number = 10
    if number > 0:print(f"{number} is positive.")
    

    在这个例子中,if number > 0 是条件表达式。当number大于0时,Python将执行print(f"{number} is positive."),否则不做任何操作。

1.3 注意事项

  • 代码块的缩进非常重要,通常推荐使用4个空格进行缩进。
  • if语句可以单独使用,也可以作为更复杂条件判断的一部分。

二、if-else双分支结构

2.1 定义

if-else语句是一种二选一的结构,意味着当条件为真时执行一组代码,当条件为假时执行另一组代码。

  • 语法

    if 条件表达式:语句块1
    else:语句块2
    

    条件表达式True时,执行语句块1,否则执行语句块2

2.2 示例

  • 示例2:判断一个数是正数还是负数

    number = -5
    if number >= 0:print(f"{number} is non-negative.")
    else:print(f"{number} is negative.")
    

    在这个例子中,if number >= 0 是条件表达式。当number大于等于0时,执行print(f"{number} is non-negative.");否则,执行print(f"{number} is negative.")

2.3 实践场景

  • 判断用户输入的合法性(如判断用户是否输入有效数据)。
  • 处理默认情况(当某种情况未被满足时执行默认操作)。

三、if分支结构的嵌套

3.1 定义

嵌套的if结构是指在一个ifelse代码块中再包含另一个ifelse,从而实现更加复杂的条件判断。嵌套结构在处理多个条件时非常有用。

  • 语法

    if 条件表达式1:if 条件表达式2:语句块1else:语句块2
    else:语句块3
    

    条件表达式1为真时,继续检查条件表达式2,如果为真,执行语句块1,否则执行语句块2。如果条件表达式1为假,直接执行语句块3

3.2 示例

  • 示例3:判断一个数是正数、负数还是零

    number = 0
    if number >= 0:if number == 0:print("Number is zero.")else:print("Number is positive.")
    else:print("Number is negative.")
    

    这个示例首先判断number是否大于等于0,如果是,再进一步判断它是否等于0,从而区分正数和零;否则,直接输出“负数”。

3.3 实践场景

  • 复杂条件的逐层判断。例如,判断一个人是否符合某些标准(年纪、收入、地区等)时,就需要嵌套的条件判断。
  • 在程序控制中,根据不同的条件组合执行不同的操作。

四、elif多分支结构

4.1 定义

有时我们需要根据多个条件进行判断,这时可以使用elif(即"else if"的缩写)来简化嵌套if语句。elif语句用于处理多种情况,而不是简单的二选一。

  • 语法

    if 条件表达式1:语句块1
    elif 条件表达式2:语句块2
    else:语句块3
    

    程序会从上到下依次检查每个条件表达式,当遇到第一个为True的条件时,执行对应的语句块,其他条件将被忽略。如果没有一个条件为True,则执行else部分。

4.2 示例

  • 示例4:根据成绩打分

    score = 85
    if score >= 90:print("Grade: A")
    elif score >= 80:print("Grade: B")
    elif score >= 70:print("Grade: C")
    elif score >= 60:print("Grade: D")
    else:print("Grade: F")
    

    在这个示例中,根据score的值逐层判断其所在的分数区间,并最终输出对应的等级。

4.3 实践场景

  • 用于简化多重条件判断场景。例如根据用户输入的指令或菜单选项做不同的操作。
  • 处理多个选项的场景,如计算机中的菜单操作、打分系统等。

五、总结

在这篇文章中,我们详细介绍了Python中的基本程序控制结构,包括if单分支、if-else双分支、嵌套结构和elif多分支结构。控制结构在编写具有逻辑性的程序时是至关重要的,它允许程序根据不同的条件执行不同的操作。

相关文章:

Python程序控制结构 if语句详解

前面我们已经详细介绍了Python编程基础入门:从风格到数据类型再到表达式 在编程中,控制结构决定了代码的执行顺序。Python提供了丰富的控制结构,可以帮助程序根据不同条件做出不同的决策和操作。本文将深入介绍Python中常见的控制结构——包…...

【ppq install】

简介 PPQ 是 Sensetime OpenPPL 团队开源的量化部署工具,经过量化的神经网络往往能够在端侧加速600%~800%,而在目前已经支持OpenPPL, TensorRT, SNPE, NXP, Metax等多个不同平台的量化模拟与网络部署。PPQ 不仅限于提供强大而先进的量化优化算法&#x…...

3DGS相关方法conda环境配置

环境:ubuntu22.04,cuda_11.7 conda create -n 3dgs python3.8 -y conda activate 3dgs python -m pip install --upgrade pip pip uninstall torch torchvision functorch tinycudann pip install torch2.1.2cu118 torchvision0.16.2cu118 torchaudio2…...

python画图|曲线动态输出

【1】引言 前序教程中的曲线动态输出,其实是把曲线按照左右移动的形式输出(波的传递形式)。 python画图|曲线动态输出基础教程_python 动态曲线-CSDN博客 但有些时候我们更期待的是曲线不移动,随着自变量的增加而输出因变量&am…...

电子商务类型

常见电子商务类型及其代表性的例子: B2B(Business to Business) 定义:B2B 模式是指企业与企业之间的商业交易。在这种模式下,企业通过电子商务平台相互提供产品或服务。 特点: 大宗交易:通常…...

vue elementui el-table实现增加行,行内编辑修改

需求&#xff1a; 前端进行新增表单时&#xff0c;同时增加表单的明细数据。明细数据部分&#xff0c;可进行行编辑。 效果图&#xff1a; <el-card><div slot"header"><span style"font-weight: bold">外来人员名单2</span><…...

1. Redis简介与安装

1.1 什么是Redis Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的、基于内存的数据结构存储系统&#xff0c;支持多种数据结构&#xff0c;如字符串、列表、集合、有序集合和哈希。它不仅能作为一个高效的缓存工具&#xff0c;还能作为消息队列、分布式锁和…...

Redis的持久化存储和集群管理操作

Redis 的持久化存储和集群 一、引言 Redis 是一个开源的内存数据结构存储系统&#xff0c;被广泛应用于缓存、消息队列、排行榜等场景。然而&#xff0c;由于数据存储在内存中&#xff0c;一旦服务器重启或出现故障&#xff0c;数据就会丢失。为了解决这个问题&#xff0c;Re…...

Auto-encoder(自编码器)

Auto-encoder&#xff08;自编码器&#xff09; 1 基本概念 自编码就和之前的cycle GAN的概念很像&#xff0c;假設你有非常大量的圖片&#xff0c;在 Auto-Encoder 裡面你有兩個 Network&#xff0c;一個叫做 Encoder&#xff0c;一個叫做 Decoder&#xff0c;他們就是兩個 N…...

Vue+sortable+el-table表格排序使用指南

前言 这两天遇到一个需求&#xff1a;在点击【设置优先级】的按钮后弹出关于玩法类型的table&#xff0c;点击【排序】按钮可以后可以进行排序。由于组内使用的组件库是 element-ui&#xff0c;那我首先就想到了使用 el-table组件&#xff0c;但奈何其版本原因不能相应的拖拽排…...

表数据删一半,为什么表文件大小不变?

参数innodb_file_per_table 这个参数设置为ON&#xff0c;表示每个表数据单独存在一个文件中&#xff0c;这时如果执行drop命令&#xff0c;系统会直接删除表文件。 这个参数设置为off时&#xff0c;所有表的数据和索引都存在共享的.ibdata文件&#xff0c;即使表删掉了&…...

MoCoOp: Mixture of Prompt Learning for Vision Language Models

文章汇总 当前的问题 1)数据集风格变化。 如图1所示&#xff0c;对于一个数据集&#xff0c;单个软提示可能不足以捕获数据中呈现的各种样式。同一数据集中的不同实例可能与不同的提示符兼容。因此&#xff0c;更**自然的做法是使用多个提示来充分表示这些变化**。 2)过拟合…...

YOLOv8 onnx 部署

本文是在win10系统下进行yolov8目标检测推理的过程记录。 yolov8 已经集成到OpenCV&#xff0c;可以通过两种方式调用&#xff0c;一种是直接通过OpenCV 调用&#xff0c;另外一种是通过onnx runtime(ort)调用。 1、安装cuda 、opencv 等依赖库&#xff0c;具体可以参考 Win1…...

在文件里引用目录文件下的静态资源图片不显示

问题&#xff1a;两种图片路径的指定方式&#xff0c;第一种能展示图片但第二种不能 两个 示例中&#xff0c;图片展示的差异。 在第一个示例中&#xff0c;图片路径是硬编码在 标签的 src 属性中的&#xff1a; <img src"../../assets/img/header01.png" style…...

vue使用 jsplumb 生成流程图

1、安装jsPlumb&#xff1a; npm install jsplumb 2、 在使用的 .vue 文件中引入 import { jsPlumb } from "jsplumb"; 简单示例&#xff1a; 注意&#xff1a;注意看 id 为"item-3"和"item-9"那条数据的连线配置 其中有几个小图片&#x…...

攻坚金融关键业务系统,OceanBase亮相2024金融科技大会

10月15-16日&#xff0c;第六届中新数字金融应用博览会与2024金融科技大会&#xff08;简称“金博会”&#xff09;在苏州工业园区联合举办。此次大会融合了国家级重要金融科技资源——“中国金融科技大会”&#xff0c;围绕“赋能金融高质量发展&#xff0c;金融科技创新前行”…...

《纳瓦尔宝典:财富和幸福指南》读书随笔

最近在罗胖的得到听书中听到一本书&#xff0c;感觉很有启发&#xff0c;书的名字叫《纳瓦尔宝典》&#xff0c;从书名上看给人的感觉应该财富知识类、鸡汤爆棚哪类。纳瓦尔&#xff0c;这个名字之前确实没有听说过&#xff0c;用一句话介绍一下&#xff0c;一个印度裔的硅谷中…...

C++ | STL | 侯捷 | 学习笔记

C | STL | 侯捷 | 学习笔记 文章目录 C | STL | 侯捷 | 学习笔记1 STL概述1.1 头文件名称1.2 STL基础介绍1.3 typename 2 OOP vs. GP3 容器3.1 容器结构分类3.2 序列式容器3.2.1 array测试深度探索 3.2.2 vector测试深度探索 3.2.3 list测试深度探索 3.2.4 forward_list测试深度…...

C函数基础

C语言中的函数教程 在C语言中&#xff0c;函数是一段组织好的、可重复使用的、用于执行特定任务的代码。函数可以提高代码的模块化和可重用性。以下是关于C语言中函数的详细教程。 1. 函数的定义与声明 1.1 函数定义 函数定义包括函数头和函数体。函数头包括函数返回类型、…...

html和css实现页面

任务4 html文件 任务5 htm文件 css文件 任务6 html文件 css文件 任务7 html文件 css文件...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...