Python控制流:条件语句(if, elif, else)①

news2024/11/15 13:41:42

在这里插入图片描述

文章目录

      • 前言
      • 1. 基本条件语句
        • 1.1 `if` 语句
        • 1.2 `else` 语句
        • 1.3 `elif` 语句
        • 1.4 嵌套条件语句
      • 2. 条件表达式
      • 3. 多条件判断
      • 4. 比较运算符和逻辑运算符
      • 5. 常见错误和最佳实践
        • 5.1 常见错误
        • 5.2 最佳实践
      • 6. 综合详细的例子:学生成绩管理系统
        • 6.1 类和方法
          • Student` 类
        • 6.2 主函数
        • 6.3 运行结果:
      • 总结

前言

条件语句是编程中的基本控制结构之一,用于根据特定条件执行不同的代码块。在Python中,条件语句主要包括ifelifelse。本文将详细介绍Python条件语句的使用方法和最佳实践,并附上一个综合详细的例子,帮助您全面掌握Python条件语句的用法。

1. 基本条件语句

1.1 if 语句

if 语句用于测试一个条件是否为真。如果条件为真,则执行代码块。

age = 18
if age >= 18:
    print("你是成年人")

在这个例子中,如果变量 age 的值大于或等于18,程序将输出“你是成年人”。

1.2 else 语句

else 语句用于在条件为假时执行另一个代码块。

age = 16
if age >= 18:
    print("你是成年人")
else:
    print("你是未成年人")

在这个例子中,如果 age 小于18,程序将输出“你是未成年人”。

1.3 elif 语句

elif 语句用于在第一个条件为假时测试另一个条件。如果第一个条件为假且第二个条件为真,则执行第二个代码块。

score = 85
if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
else:
    print("及格")

在这个例子中,如果 score 大于或等于90,程序将输出“优秀”;如果 score 大于或等于80但小于90,程序将输出“良好”;否则,程序将输出“及格”。

1.4 嵌套条件语句

条件语句可以相互嵌套,以便在更复杂的条件下执行不同的代码块。

age = 20
is_student = True

if age >= 18:
    if is_student:
        print("你是成年学生")
    else:
        print("你是成年人")
else:
    print("你是未成年人")

在这个例子中,外部 if 语句检查 age 是否大于或等于18,然后内部 if 语句根据 is_student 的值进一步细化输出。

2. 条件表达式

条件表达式(也称为三元运算符)是一种简洁的条件语句书写方式。它允许在单行中执行条件判断并返回相应的值。

age = 20
status = "成年人" if age >= 18 else "未成年人"
print(status)  # 输出: 成年人

在这个例子中,status 的值根据 age 的值进行判断并赋值。

3. 多条件判断

使用逻辑运算符(andor)可以在一个条件语句中进行多条件判断。

age = 20
is_student = True

if age >= 18 and is_student:
    print("你是成年学生")
elif age >= 18 and not is_student:
    print("你是成年人")
else:
    print("你是未成年人")

在这个例子中,使用 and 运算符将两个条件组合在一起,以便在条件都为真时执行代码块。

4. 比较运算符和逻辑运算符

条件语句中常用的比较运算符和逻辑运算符包括:

  • 比较运算符:

    • ==:等于
    • !=:不等于
    • >:大于
    • <:小于
    • >=:大于等于
    • <=:小于等于
  • 逻辑运算符:

    • and:与
    • or:或
    • not:非

5. 常见错误和最佳实践

5.1 常见错误
  • 忘记缩进:在Python中,缩进表示代码块。如果忘记缩进,Python会抛出错误。

    age = 18
    if age >= 18:
    print("你是成年人")  # 缩进错误
    
  • 使用赋值运算符 = 代替比较运算符 ==

    age = 18
    if age = 18:  # 错误
        print("你是成年人")
    
5.2 最佳实践
  • 保持代码简洁:避免过度嵌套条件语句。使用 elif 语句而不是多个嵌套的 if-else 语句。

    # 推荐
    if condition1:
        # do something
    elif condition2:
        # do something else
    else:
        # do another thing
    
    # 不推荐
    if condition1:
        # do something
    else:
        if condition2:
            # do something else
        else:
            # do another thing
    
  • 使用有意义的变量名:确保变量名清晰易懂,便于代码的阅读和维护。

    # 推荐
    age = 20
    is_student = True
    
    if age >= 18 and is_student:
        print("你是成年学生")
    
    # 不推荐
    a = 20
    b = True
    
    if a >= 18 and b:
        print("你是成年学生")
    

6. 综合详细的例子:学生成绩管理系统

以下是一个学生成绩管理系统的例子,展示了条件语句在实际编程中的应用。

class Student:
    def __init__(self, name, scores):
        self.name = name
        self.scores = scores  # 字典,包含各科成绩

    def average_score(self):
        total_score = sum(self.scores.values())
        num_subjects = len(self.scores)
        return total_score / num_subjects

    def grade(self):
        avg_score = self.average_score()
        if avg_score >= 90:
            return "优秀"
        elif avg_score >= 80:
            return "良好"
        elif avg_score >= 70:
            return "中等"
        elif avg_score >= 60:
            return "及格"
        else:
            return "不及格"

    def pass_fail(self):
        for subject, score in self.scores.items():
            if score < 60:
                return "不及格"
        return "及格"

def main():
    students = [
        Student("Alice", {"数学": 85, "英语": 78, "历史": 90}),
        Student("Bob", {"数学": 58, "英语": 72, "历史": 65}),
        Student("Charlie", {"数学": 95, "英语": 88, "历史": 92}),
    ]

    for student in students:
        print(f"学生: {student.name}")
        print(f"平均成绩: {student.average_score():.2f}")
        print(f"成绩等级: {student.grade()}")
        print(f"总评: {student.pass_fail()}")
        print("-----------")

if __name__ == "__main__":
    main()
6.1 类和方法
Student` 类
  • __init__ 方法:初始化学生姓名和成绩。
  • average_score 方法:计算学生的平均成绩。
  • grade 方法:根据平均成绩返回学生的成绩等级。
  • pass_fail 方法:检查所有科目成绩是否及格。
6.2 主函数
  • main 函数:创建学生列表并输出每个学生的成绩信息。
6.3 运行结果:

在这里插入图片描述

在这个例子中,我们使用了多个条件语句来确定学生的成绩等级和是否及格。通过这个例子,我们可以看到条件语句在实际编程中的应用。

总结

本文详细介绍了Python条件语句的使用方法,包括ifelifelse,以及条件表达式和多条件判断。通过一个综合详细的例子,我们展示了条件语句在实际编程中的应用。希望本文对您理解和应用Python条件语句有所帮助。


欢迎点赞|关注|收藏|评论,您的肯定是我创作的动力

在这里插入图片描述

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

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

相关文章

LD/T698.45 协议解析(新)

通信架构 客户机和服务器在开始通信前&#xff0c;通信信道必须先完成预连接。预连接建立后&#xff0c;默认具有一个最低权限的应用连接&#xff0c;客户机和服务器之间可直接进行数据交换。当客户机需要得到更高权限的服务器服务时&#xff0c;客户机必须发起建立更高权限的…

浦发银行不良堆积,新任领导的无奈

撰稿|芋圆 浦发银行在2023年进行了一波董监高人员大变动&#xff0c;董事长和行长两位掌舵人双双离职&#xff0c;在其任内&#xff0c;浦发银行自2020年起的营收、利润状况和资产质量就一直难有起色。 目前&#xff0c;距新任领导班子上任已差不多过去一年之久。在这一年里&a…

Redis(面试题【速记】)

Redis简介 Redis 是一个开源(BSD 许可)内存数据结构存储用作数据库、缓存、消息代理和流引擎。Redis 提供数据结构&#xff0c;例如 字符串、散列、列表、集合、带范围查询的排序集合、位图、超日志、地理空间索引和流。Redis 内置了复制、Lua 脚本、LRU 驱逐、事务和不同级别的…

【Linux —— 线程同步 - 条件变量】

Linux —— 线程同步 - 条件变量 条件变量的概念互斥量与条件变量的关系条件变量的操作代码示例 条件变量的概念 条件变量是一种用于线程间同步的机制&#xff0c;主要用于协调线程之间的执行顺序&#xff0c;允许线程在某个条件不满足时进入等待状态&#xff0c;直到其他线程通…

【Linux I/O】万字长文带思维导图,一文彻底掌握Linux I/O:深入解析操作系统数据交互的艺术

Linux I/O Linux I/O&#xff08;输入/输出&#xff09;是操作系统与外部设备进行数据交互的过程。在Linux系统中&#xff0c;I/O操作的管理和优化对于系统性能有着至关重要的影响。本文将详细介绍Linux中的各种I/O模型&#xff0c;包括它们的工作原理、优缺点以及适用场景&am…

ImportError: DLL load failed while importing _ssl: 找不到指定的模块。

windonw cmd下的输出&#xff1a; (python3.9) PS D:\git\ImageAnalysisService\core\medical_bills> python Python 3.9.19 (main, May 6 2024, 20:12:36) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or …

计算机基础知识总结(八股文--计算机网络、操作系统、数据库、c++、数据结构与算法)

一、操作系统 0.内存管理 01.什么是虚拟内存&#xff1f;为什么需要虚拟内存&#xff1f; 虚拟内存为程序提供比实际物理内存更大的内存空间&#xff0c;同时提高内存管理的灵活性和系统的多任务处理能力。虚拟地址空间就是进程所能看到的内存空间&#xff0c;这段空间是连续…

苍穹外卖项目DAY11

苍穹外卖项目DAY11 1、Apache ECharts 1.1、介绍 Apache ECharts是一款基于JavaScript的数据可视化图标库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图标 官网&#xff1a;Apache ECharts 1.3、入门案例 <!DOCTYPE…

LlamaIndex 实现 RAG(四)- RAG 跟踪监控

RAG 整个流程不复杂&#xff0c;集成三大部分包括文档解析并生成向量、根据查询问题查找语意相似的数据文档块、把查询问题和召回文档作为上下文的数据传给模型进行解答。大语言模型的应用开发和传统的开发方式区别很大&#xff0c;以前开发完成&#xff0c;只要逻辑正确&#…

解决IDEA 控制台中文乱码及无法输入中文

一、IDEA 控制台中文乱码&#xff1a; 问题描述&#xff1a; IntelliJ IDEA 如果不进行相关设置&#xff0c;可能会导致控制台中文乱码、配置文件中文乱码等问题。 解决方案&#xff1a; ①&#xff1a;设置字体为支持中文的字体&#xff1a; 点击菜单 File - > settings …

二分查找【算法 09】

二分查找算法详解 二分查找&#xff08;Binary Search&#xff09;是一种高效的查找算法&#xff0c;前提是数据必须是有序的。相比于线性查找&#xff0c;二分查找的时间复杂度从 O(n) 降低到了 O(log n)&#xff0c;适合处理大规模的数据查找问题。本文将详细介绍二分查找的原…

Catf1ag CTF Crypto(六)

前言 Catf1agCTF 是一个面向所有CTF&#xff08;Capture The Flag&#xff09;爱好者的综合训练平台&#xff0c;尤其适合新手学习和提升技能 。该平台由catf1ag团队打造&#xff0c;拥有超过200个原创题目&#xff0c;题目设计注重知识点的掌握&#xff0c;旨在帮助新手掌握C…

集团数字化转型方案(十六)

为了全面推进集团的数字化转型&#xff0c;我们将实施一系列战略举措&#xff0c;包括整合最新的人工智能、大数据分析和云计算技术&#xff0c;升级企业资源规划&#xff08;ERP&#xff09;系统&#xff0c;实现业务流程的自动化与优化&#xff1b;同时&#xff0c;建立全方位…

计算机是如何工作的(2)

文章目录 一. 寄存器和存储器二. 操作系统二. 进程PCB1. pid2. 内存指针3. 文件描述符表4. 属性1) 状态2) 优先级3) 上下文4) 记账信息 一. 寄存器和存储器 存储器是内存和硬盘的通称 内存, 存储空间比硬盘小, 速度比硬盘快, 价格比硬盘高, 掉电后数据流失寄存器是CPU上的一个…

ORACLE EBS R12系统的安装及维护案例

引言&#xff1a; Oracle E-Business Suite (EBS) R12 是企业中广泛应用的一体化管理解决方案&#xff0c;涵盖了财务、人力资源、供应链等多个业务领域。以下将详细介绍如何在 Windows 系统上安装 Oracle EBS R12&#xff0c;并分享一些日常维护的技巧和最佳实践。 点击下载…

基于imx6ull平台opencv的图像采集、ffmpeg推流和Windows端拉流(多线程)

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 验证功能一、概述 本文档是针对imx6ull平台opencv的图像采集、ffmpeg推流和Windows端拉流。首先创建一个线程opencv通过摄像头采集视频图像,接着再创建两个线程,其中一个线程获取采集的视频图…

Python编码系列—Python中的HTTPS与加密技术:构建安全的网络通信

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

驾驭高效编程:一探C++ STL的奥秘

1.什么是STL 2.:STL的版本 2.1:原始版本 2.2:P.J版本 2.3:RW版本 2.4:SGI版本 3:STL的六大组件 4:如何学习STL 5:STL的缺陷 1.什么是STL STL(standdard template library-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包含数据结构与算法软…

MJJ 必备自建 IDC 系统 WHMCS 开心版 圆你一个老板梦

本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 WHMCS 是我们买 VPS 的最常见到的 IDC 系统,最近为了写 VPS 库存监控脚本,自己搭了一个 WHMCS 用来测试,顺便分享一下如何搭建属于自己的 WHMCS,圆你一个老板梦。WHMCS 开心版仅限学习、开发使用,商业用途请前往…

Linux内核学习之中断处理

Linux内核学习之中断处理 0 前言1 中断处理程序的嵌套执行1 Linux对x86异常的处理Linux中向量用途1 Linux中的中断门描述符Linux中的中断描述符硬中断软中断和tasklet软中断tasklet[^2]ksoftirqd内核线程kworker内核线程 0 前言 文本基于x86架构讲解Linux中对中断的处理&#…