令人拍案叫绝的Python条件控制技巧

news2024/9/20 13:05:07

目录

1. 条件控制的重要性

2. 理解条件语句的基础

3. 使用 elif 增加更多选择

4. 利用 in 和 not in 进行集合匹配

5. 利用 and 与 or 连接条件

6. 高级技巧:列表推导式中的条件表达式

7. 实战案例:自动评分系统

8. 总结

文末福利


1. 条件控制的重要性

条件控制是编程中最基本也是最重要的部分之一。它让程序可以根据不同的情况做出不同的反应。想象一下,如果我们的程序不能根据用户的输入或环境的变化做出响应,那它就只是一个死板的工具,无法适应多变的需求。

2. 理解条件语句的基础

Python 中最基本的条件控制结构是 if 语句。通过这个简单的语句,我们可以实现逻辑分支,让程序走向不同的路径。

代码示例

age = int(input("请输入你的年龄: "))

if age >= 18:
    print("你已成年!")
else:
    print("你还未成年哦!")

这段代码首先提示用户输入年龄,然后根据输入的值判断用户是否成年。这里的关键点在于 if 后面的条件表达式 age >= 18,它是一个布尔表达式,返回 TrueFalse

3. 使用 elif 增加更多选择

当需要处理多个条件时,elif(即“else if”)就派上用场了。它可以让你添加多个条件检查,使程序更加灵活。

代码示例

score = int(input("请输入你的分数: "))

if score >= 90:
    print("优秀")
elif score >= 70:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")

这里,根据分数的不同范围,程序会输出不同的评价。elif 允许我们在一个 if 语句中添加多个条件分支。

4. 利用 innot in 进行集合匹配

除了比较数值,我们还可以使用 innot in 来检查某个元素是否存在于一个集合(如列表、元组、字符串等)中。

代码示例

colors = ["red", "green", "blue"]
favorite_color = input("请输入你喜欢的颜色: ")

if favorite_color in colors:
    print(f"我喜欢{favorite_color}!")
else:
    print("这不是我最喜欢的三种颜色之一。")

这段代码询问用户喜欢的颜色,然后检查该颜色是否在预定义的颜色列表中。如果是,则打印一条友好的消息;否则,告诉用户这不在他们喜欢的颜色范围内。

5. 利用 andor 连接条件

有时候我们需要同时满足多个条件,或者只需要满足其中一个条件即可。这时候就可以使用逻辑运算符 andor

代码示例

age = int(input("请输入你的年龄: "))
has_ticket = input("你有票吗?(yes/no): ") == "yes"

if age >= 18 and has_ticket:
    print("欢迎进入电影院!")
elif age < 18 and has_ticket:
    print("对不起,未成年人需由成人陪同。")
else:
    print("请先购票。")

此示例展示了如何结合使用 andor 来创建更复杂的逻辑判断。只有当用户既符合年龄要求又有票的情况下,才能进入电影院。

6. 高级技巧:列表推导式中的条件表达式

列表推导式是一种简洁的方式,可以用来创建新列表。当你想在生成列表的同时加入条件控制时,可以在列表推导式中使用条件表达式。

代码示例

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = [num for num in numbers if num % 2 == 0]

print(even_numbers)  # 输出: [2, 4, 6]

这段代码创建了一个只包含原列表中偶数的新列表。列表推导式的语法非常直观,容易理解。

7. 实战案例:自动评分系统

假设我们要开发一个在线课程的自动评分系统。对于每个学生的答案,系统需要根据多个标准给出评分。

需求分析

  • 如果学生按时提交作业,加分。

  • 如果答案完全正确,满分;部分正确,按比例给分;完全错误,零分。

  • 根据参与讨论的积极性给予额外加分。

代码实现

def calculate_score(submission_time, correctness, discussion_participation):
    base_score = 0
    if submission_time <= 24 * 60 * 60:  # 按时提交
        base_score += 10
    if correctness == "perfect":
        base_score += 80
    elif correctness == "partial":
        base_score += 40
    else:
        base_score += 0
    if discussion_participation >= 3:
        base_score += 10
    return base_score

# 测试数据
print(calculate_score(23 * 60 * 60, "perfect", 5))  # 应输出 100
print(calculate_score(25 * 60 * 60, "partial", 2))  # 应输出 40

在这个例子中,我们定义了一个函数 calculate_score() 来计算学生的总分。通过组合使用多个条件判断,实现了对不同情况下的评分规则。

8. 总结

通过本文的学习,你应该已经掌握了 Python 中条件控制的基本用法以及一些高级技巧。从简单的 if 语句到复杂的多条件组合,再到列表推导式中的条件表达式,每一步都为我们提供了更强大的编程能力。记住,条件控制是编写逻辑清晰、功能丰富的程序的基础。不断练习,你会越来越熟练地运用这些技巧解决实际问题!

好了,今天的分享就到这里了,我们下期见。如果本文对你有帮助,请动动你可爱的小手指点赞、收藏吧!

文末福利

最后,如果你对Python感兴趣的话,可以试试我整理的这一份全套的Python学习资料,【点击这里】免费领取!

包括:Python激活码+安装包、Python
web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。

也可以微信扫描下方CSDN官方认证二维码免费获取【保证100%免费】。

① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习

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

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

相关文章

计算机网络34——Windows内存管理

1、计算机体系结构 2、内存管理 分为连续分配管理和非连续分配管理 在块内存在的未使用空间叫内部碎片&#xff0c;在块外存在的未使用空间叫外部碎片 固定分区分配可能出现内部碎片&#xff0c;动态分区分配可能出现外部碎片 3、逻辑地址和实际地址的互相转换 4、缺页中断 …

渗透测试常用工具(非常详细)从零基础入门到精通,看完这一篇就够了。

对于白帽子来说&#xff0c;在进行渗透测试、代码审计、逆向工程等一系列工作中&#xff0c;都离不开安全工具的支撑&#xff0c;这些工具像一把把利剑&#xff0c;可以大大提高渗透效率。 在本篇中&#xff0c;我总结了超多网络安全工具&#xff0c;涉及暴力破解、渗透字典、…

Linux入门学习:make/Makefile(Linux项目自动化构建工具)

文章目录 1. makefile文件语法2. make clean工程清理3. 细节语法4. make原理 ⭕背景&#xff1a; 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力。一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c…

Electron 安装包 asar 解压定位问题实战

背景 在开发 Electron 过程中&#xff0c;我们想知道 Electron 打包的最终形态是什么样的&#xff0c;以便我们能更好的理解 Electron 打包的过程&#xff0c;以及逆向来快速追踪一些问题&#xff0c;例如下面这个报错&#xff0c;以前这类报错都是靠猜&#xff0c;现在则可以…

算法设计与分析(最长公共子序列

目录 最长公共子序列问题描述代码实现输出结果注意事项 小结&#xff1a; 最长公共子序列 最长公共子序列&#xff08;Longest Common Subsequence, LCS&#xff09;问题是计算给定两个序列的最长子序列的长度&#xff0c;这个子序列不要求连续&#xff0c;但需要保持相同的相…

如何在SpringCloud中使用Consul进行服务发现与配置管理

Spring Cloud是一个用于构建分布式系统的开发工具包。它提供了一系列解决方案&#xff0c;用于在分布式系统中管理和协调服务发现、配置管理、负载均衡、容错机制等功能。Consul是一种用于服务发现、配置管理和分布式一致性的工具&#xff0c;与Spring Cloud可以很好地集成在一…

程序员常用开发软件集合

文本编辑器 Sublime Text 编程工具 Visual Studio Code IntelliJ IDEA 数据连接客户端 Navicat DBeaver 远程连接客户端 WinSCP xshell WindTerm 流程图工具 draw.io 远程连接电脑工具 ToDesk 向日葵 teamviewer

在数据开发、消费中,如何科学治理重复数据难题?

解决这个问题&#xff0c;还得从技术系统架构和数据开发、消费的流程管理上来找原因&#xff1a; 一、数据集成或同步过程中有一些技术挑战&#xff0c;如多源异构数据集成时缺失去重策略、数据同步机制的不完善或配置错误&#xff0c;导致重复数据被多次引入系统&#xff1b;…

stable diffusion 神经网络插件 controlnet 的安装,很详细

stable diffusion 神经网络插件 controlnet 的安装&#xff0c;很详细 一、前言二、下载1、方式一2、方式二 一、前言 学到 stable diffusion 的 controlnet 插件&#xff0c;安装也略微曲折&#xff0c;这里做个记录。 下载前保证 github 能正常访问。 二、下载 1、方式一…

Mybatis续

步骤 爆红 点了右上角还是爆红不要着急&#xff0c;右下角正在下载 new 如果new的是package&#xff0c;用com.zhang&#xff0c;能事项分级 如果new的是文件夹&#xff0c;用com/zhang&#xff0c;就能实现分级。如果用com.zhang&#xff0c;则创建的文件夹名是com.zhang …

开源笔记Joplin本地Docker部署结合内网穿透实现多设备端同步笔记

文章目录 前言1. 安装Docker2. 自建Joplin服务器3. 搭建Joplin Sever4. 安装cpolar内网穿透5. 创建远程连接的固定公网地址 前言 本文主要介绍如何在自己的服务器上利用docker搭建 Joplin Server&#xff0c;并对同步进行配置&#xff0c;再结合cpolar内网穿透工具实现公网远程…

神经网络拟合离散标签值

神经网络拟合离散标签值 1. 数据预处理1.1 添加参数解析1.2 数据预处理逻辑1.3 标签处理逻辑1.4 构建特征和标签1.5 数据归一化、转torch1.6 实现Dataset类 2. 定义model3. 定义train脚本3.1 loss和optimizer3.2 train3.3 predict 1. 数据预处理 1.1 添加参数解析 为了方便管…

第二证券:金价涨了!创一历史之最!

当地时间周四&#xff0c;金融商场进一步消化美联储大幅降息50个基点的利率抉择&#xff0c;认为这是为了完结美国经济“软着陆”的一次防备式降息&#xff0c;而非紧急应对阑珊风险的降息&#xff0c;加之当天公布的上星期初度申请赋闲救助人数低于预期&#xff0c;投资者对美…

B站前端错误监控实践

前言 从23年开始&#xff0c;我们团队开始前端错误监控方向的开发。经历了一些列的迭代和发展&#xff0c;从监控SDK、上报、数据治理、看板集成、APM自研可视化初步完成了一条完整且适合B站前端监控。 截止目前(2024.08.01)&#xff0c;前端监控在B站85%以上的业务线&#xf…

Linux运维培训班靠谱吗?如何判断一个培训班的教学质量?

当我们下定决心打算系统培训Linux运维时&#xff0c;哪家机构比较好成为了我们面临的最大难题。之前分享过很多培训机构的个人感受&#xff0c;但授人以鱼不如授人以渔&#xff0c;说到底那些都是我个人的看法&#xff0c;因此今天打算帮助大家学会如何判断一个培训班的好坏。 …

使用 SSCB 保护现代高压直流系统的优势

在各种应用中&#xff0c;系统效率和功率密度不断提高&#xff0c;这导致了更高的直流系统电压。然而&#xff0c;传统的电路保护解决方案不足以在保持高可靠性和安全性的同时有效保护这些高压配电系统。 固态断路器 &#xff08;SSCB&#xff09; 和电熔断器具有众多优点&…

GitLab 迁移并推送代码仓库

迁移并推送代码仓库到 GitLab 可以有多种方法,以下是一些常见的步骤: 一、创建空仓库 在 Gitlab 上创建一个空仓库 方式一:点击左上角“+”号,选择新建项目/仓库 方式二:进入“项目”界面,点击右上角“新建项目”按钮 选择“创建空白项目” 填写项目信息并点击“新…

从黎巴嫩电子通信设备爆炸看如何防范网络电子袭击

引言&#xff1a; 在当今数字化时代&#xff0c;电子通信设备已成为我们日常生活中不可或缺的一部分。然而&#xff0c;近期黎巴嫩发生的电子设备爆炸事件提醒我们&#xff0c;这些设备也可能成为危险的武器。本文将深入探讨电子袭击的原理、防范措施&#xff0c;以及网络智能…

SpinalHDL之结构(四)

本文作为SpinalHDL学习笔记第六十四篇,介绍SpinalHDL的时钟域(Clock domains)。 目录: 1.简介(Introduction) 2.例化(Instantiation) ⼀、简介(Introduction) 在SpinalHDL中, 时钟和复位信号能结合起来构成时钟域(clock domain)。时钟域可以应⽤于设计的某些区域中, 例化在…

在线安全干货|如何更改IP地址?

更改IP地址是一个常见的需求&#xff0c;无论是为了保护个人隐私、绕过地理限制还是进行商业数据分析。不同的IP更改方法适用于不同的需求和环境。但请注意&#xff0c;更改IP地址应在合法场景下进行&#xff0c;无论使用什么方法&#xff0c;都需要在符合当地网络安全法律法规…