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

【python基础(四)】if语句详解

文章目录

  • 一. 一个简单示例
  • 二. 条件测试
    • 1. 检查多个条件
      • 1.1. 使用and关联多个条件
      • 1.2. 使用or检查多个条件
      • 1.3. in的判断
    • 2. 布尔表达式
  • 三. if语句
    • 1. 简单的if语句
    • 2. if-else语句
    • 3. if-elif-else结构
    • 4. 使用多个elif代码块
    • 5. 省略else代码块
  • 四. 使用if语句处理列表
    • 1. 检查特殊元素
    • 2. 确定列表不是空的

  1. 如何编写结果要么为True要么为False的条件测试;
  2. 如何编写简单的if语句、if-else语句和if-elif-else结构,并且在程序中使用这些结构来测试特定的条件,以确定这些条件是否满足;
  3. 如何在利用高效的for循环的同时,以不同于其他元素的方式对特定的列表元素进行处理。

一. 一个简单示例

if __name__ == '__main__':cars = ['audi', 'bmw', 'subaru', 'toyota']for car in cars:if car == 'bmw':print(car.upper())else:print(car.title())

 

二. 条件测试

每条if语句的核心都是一个值为True或False的表达式,这种表达式称为条件测试。
如果条件测试的值为True,Python就执行紧跟在if语句后面的代码;如果为False,Python就忽略这些代码。

1. 检查多个条件

1.1. 使用and关联多个条件

要检查是否两个条件都为True,可使用关键字and将两个条件测试合而为一。
例如,要检查是否两个人都不小于21岁

>>> age_0 = 22>>> age_1 = 18>>> age_0 >= 21 and age_1 >= 21False

为改善可读性,可将每个测试分别放在一对圆括号内,但并非必须这样做。

(age_0 >= 21) and (age_1 >= 21)

 

1.2. 使用or检查多个条件

关键字or也能够让你检查多个条件,但只要至少一个条件满足,就能通过整个测试。仅当两个测试都没有通过时,使用or的表达式才为False。

至少一个人的年龄不小于21岁:

>>> age_0 = 22>>> age_1 = 18>>> age_0 >= 21 or age_1 >= 21True

 

1.3. in的判断

要判断特定的值是否已包含在列表中,可使用关键字in

创建一个列表,其中包含用户点的比萨配料,然后检查特定的配料是否包含在该列表中。

>>> requested_toppings = ['mushrooms', 'onions', 'pineapple']
>>> 'onions' in requested_toppings
True

使用关键字not in,来判断值不包含在列表中。

 

2. 布尔表达式

与条件表达式一样,布尔表达式的结果要么为True,要么为False,首字母不能小写。

game_active = True
can_edit = False

 

三. if语句

1. 简单的if语句

最简单的if语句只有一个测试和一个操作:

if conditional_test:dosomething
age = 19if age >= 18:print("You are old enough to vote!")

在if语句中,缩进的作用与在for循环中相同。

 

2. if-else语句

  age = 17if age >= 18:print("You are old enough to vote!")print("Have you registered to vote yet?")else:print("Sorry, you are too young to vote.")print("Please register to vote as soon as you turn 18!")

 

3. if-elif-else结构

Python只执行if-elif-else结构中的一个代码块。它依次检查每个条件测试,直到遇到通过了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试

一个根据年龄段收费的游乐场:
▲ 4岁以下免费;▲ 4~18岁收费25美元;▲ 18岁(含)以上收费40美元。

  age = 12if age < 4:print("Your admission cost is $0.")elif age < 18:print("Your admission cost is $25.")else:print("Your admission cost is $40.")

❶处的if测试检查一个人是否不满4岁。如果是,Python就打印一条合适的消息,并跳过余下测试。❷处的elif代码行其实是另一个if测试,仅在前面的测试未通过时才会运行。

 
优化
为了让代码更简洁,可不在if-elif-else代码块中打印门票价格,而只在其中设置门票价格,并在它后面添加一个简单的函数调用print():

  age = 12if age < 4:
❶     price = 0elif age < 18:
❷     price = 25else:
❸     price = 40print(f"Your admission cost is ${price}.")

 

4. 使用多个elif代码块

下面假设增加一个条件测试:对于65岁(含)以上的老人,可半价(即20美元)购买门票:

  age = 12if age < 4:price = 0elif age < 18:price = 25elif age < 65:price = 40else:price = 20print(f"Your admission cost is ${price}.")

 

5. 省略else代码块

Python并不要求if-elif结构后面必须有else代码块。使用一条elif语句来处理特定的情形更清晰:

  age = 12if age < 4:price = 0elif age < 18:price = 25elif age < 65:price = 40elif age >= 65:price = 20print(f"Your admission cost is ${price}.")

else是:只要不满足任何if或elif中的条件测试,其中的代码就会执行。这可能引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑使用一个elif代码块来代替else代码块

 

四. 使用if语句处理列表

1. 检查特殊元素

如果要添加青椒,则说明已经用完了

  requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']for requested_topping in requested_toppings:if requested_topping == 'green peppers':print("Sorry, we are out of green peppers right now.")else:print(f"Adding {requested_topping}.")print("\nFinished making your pizza!")

 

2. 确定列表不是空的

如果顾客要在比萨中添加炸薯条,该怎么办呢?可使用列表和if语句来确定能否满足顾客的要求。

❶ available_toppings = ['mushrooms', 'olives', 'green peppers','pepperoni', 'pineapple', 'extra cheese']❷ requested_toppings = ['mushrooms', 'french fries', 'extra cheese']for requested_topping in requested_toppings:if requested_topping in available_toppings:print(f"Adding {requested_topping}.")else:print(f"Sorry, we don't have {requested_topping}.")print("\nFinished making your pizza!")

 
参考:《python编程:从入门到实践(第二版)》

相关文章:

【python基础(四)】if语句详解

文章目录 一. 一个简单示例二. 条件测试1. 检查多个条件1.1. 使用and关联多个条件1.2. 使用or检查多个条件1.3. in的判断 2. 布尔表达式 三. if语句1. 简单的if语句2. if-else语句3. if-elif-else结构4. 使用多个elif代码块5. 省略else代码块 四. 使用if语句处理列表1. 检查特殊…...

Spring Boot中常用的参数传递注解

RequestParam&#xff1a;用于将请求参数绑定到控制器处理方法的参数上&#xff0c;适用于GET请求。PathVariable&#xff1a;用于获取请求URL中的动态参数&#xff0c;适用于RESTful风格的URL。RequestBody&#xff1a;用于将请求体中的JSON字符串绑定到控制器处理方法的参数上…...

Quartz .Net 的简单使用

参考了&#xff1a;c# .net framework 4.5.2 , Quartz.NET 3.0.7 - runliuv - 博客园 (cnblogs.com) https://www.cnblogs.com/personblog/p/11277527.html&#xff0c; Quartz.NET 作业调度&#xff08;一&#xff09;&#xff1a;Test - 简书 自己要轮询的任务&#xff1a…...

面试Java笔试题精选解答

文章目录 热身级别数组中重复的数字思路&#xff1a;使用map或HashSet来遍历一遍就可以找出重复的字符样例解答 用两个栈实现队列思路&#xff1a;Stack1正向进入&#xff0c;队头在栈底&#xff0c;用于进队列操作&#xff1b;Stack2是Stack1倒栈形成&#xff0c;队头在栈顶&a…...

使用Python画一棵树

&#x1f38a;专栏【不单调的代码】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f970;欢迎并且感谢大家指出我的问题 文章目录 &#x1f339;Turtle模块&#x1f384;效果&#x1f33a;代码&#x1f6f8;代码…...

nginx学习(4)Nginx 负载均衡

负载均衡&#xff1a;是将负载分摊到不同的服务单元&#xff0c;既保证服务的可用性&#xff0c;又保证响应 足够快&#xff0c;给用户很好的体验。 在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服 务&#xff0c; 而且 Nginx 提供了几种分配方式(策略)&#…...

WSL登录时提示nsenter: cannot open /proc/320/ns/time: No such file or directory的解决办法

在登录 WSL 的 Ubuntu 时&#xff0c;不仅要求 root 权限&#xff0c;还登录失败&#xff0c;提示“nsenter: cannot open /proc/320/ns/time: No such file or directory”。 解决办法是在 powershell 中执行 “wsl – sudo vi /etc/profile”命令&#xff0c;删除文件内容&a…...

git修改远程分支名称

先拉取old_branch最新代码到本地 git checkout old_branchgit pull origin old_branch本地修改后并推送 git branch -m old_branch new_branch # 修改分支名称git push --delete origin old_branch # 删除在远程的老分支推送新分支 git push origin new_branch本地分支与远…...

Django 入门学习总结7-静态文件管理

Django Web框架有关门的静态文件管理机制。 首先&#xff0c;在polls文件夹中创建static文件&#xff0c;Django 将会自动地在这里查询静态文件。 Django 框架在配置 STATICFILES_FINDERS中&#xff0c;指出了一系列静态文件所在位置。 依据配置 INSTALLED_APPS 的名称来查询…...

游戏开发引擎Cocos Creator和Unity如何对接广告-AdSet聚合广告平台

在游戏开发方面&#xff0c;游戏引擎的选择对开发过程和最终的产品质量有着重大的影响&#xff0c;Unity和Cocos是目前全球两大商用、通用交互内容开发工具&#xff0c;这两款引擎受到广泛关注&#xff0c;本文将从多个维度对两者进行比较&#xff0c;为开发者提供正确的选择建…...

振南技术干货集:制冷设备大型IoT监测项目研发纪实(4)

注解目录 1.制冷设备的监测迫在眉睫 1.1 冷食的利润贡献 1.2 冷设监测系统的困难 &#xff08;制冷设备对于便利店为何如何重要&#xff1f;了解一下你所不知道的便利店和新零售行业。关于电力线载波通信的论战。&#xff09; 2、电路设计 2.1 防护电路 2.1.1 强电防护 …...

Android线程优化——整体思路与方法

**在日常开发APP的过程中&#xff0c;难免需要使用第二方库和第三方库来帮助开发者快速实现一些功能&#xff0c;提高开发效率。但是&#xff0c;这些库也可能会给线程带来一定的压力&#xff0c;主要表现在以下几个方面&#xff1a; 线程数量增多&#xff1a;一些库可能会在后…...

论防火墙的体系结构

防火墙的体系结构 防火墙的体系结构 双重宿主主机体系结构。屏蔽主机体系结构。屏蔽子网体系结构。 双重宿主主机体系结构 双重宿主主机体系结构是指以一台具有双重宿主的主机计算机作为防火墙系统的主体&#xff0c;执行分离外部网络与内部网络的任务。该计算机至少有两个…...

BeansTalkd 做消息队列服务

无意间看到这个仓库讲php关于 BeanStalkd 的扩展&#xff0c;然后就去了解了一下beanstalkd&#xff0c;用它可以用来做队列服务。 话不多说&#xff0c;安装一下试试。 首先 sudo apt search beanstalk 搜索一下发现 Sorting... Done Full Text Search... Done awscli/focal…...

csv文件添加文件内容和读取

append content to file import numpy as np acc_listnp.array([0.97,0.92,0.93,0.89]) # 注意这个地方添加文件不需要特别声明是什么文件 file open("result.csv", "a") print("{:.2f}, {:.2f}".format(acc_list.mean(), acc_list.std()), f…...

关于禅道的安装配置以及项目管理、团队协同工作

目录 一、禅道是什么&#xff1f; 二、特点和功能 三、安装禅道 3.1 下载官网 3.2 版本考虑 3.3 禅道使用手册参考 3.4 Windows端安装禅道 四、启动禅道 4.1 访问禅道 四、禅道部分功能的使用 4.1 添加项目集 4.2 启动/关闭项目 4.3 项目计划仪表盘/阶段目标/研发…...

使用Wireshark提取流量中图片方法

0.前言 记得一次CTF当中有一题是给了一个pcapng格式的流量包&#xff0c;flag好像在某个响应中的图片里。比较简单&#xff0c;后来也遇到过类似的情况&#xff0c;所以总结和记录一下使用Wireshark提取图片的方法。 提取的前提是HTTP协议&#xff0c;至于HTTPS的协议需要导入服…...

C#,简单修改Visual Studio 2022设置以支持C#最新版本的编译器,尊享编程之趣

1 PLS README & CHAPTER 5 用一个超简单的例子说明各版本 C# 的差异。 使用新版本&#xff08;比如C#.11&#xff09;&#xff0c;当然有一定的好处。我们在写程序的时候一般这样&#xff1a; Visual Studio 2022 默认只能这样写&#xff1a; string imageFile Path.C…...

小程序Tab栏与页面滚动联动

小程序tab栏切换与页面滚动联动 tab栏与页面滚动联动点击tab栏页面跳到指定位置滚动页面时切换tab栏 tab栏与页面滚动联动 在进行小程序开发时&#xff0c;需要实现点击tab栏页面滚动到某一指定位置&#xff0c;并且滚动页面时&#xff0c;小程序的tab栏进行切换。 在一开始&a…...

Java,数据结构与集合源码,关于List接口的实现类(ArrayList、Vector、LinkedList)的源码剖析

目录 ArrayList ArrayList的特点&#xff1a; ArrayList源码解析&#xff1a; Vector Vector的特点&#xff1a; Vector源码解析&#xff1a; LinkedList LinkedList的特点&#xff1a; LinkedList的源码剖析&#xff1a; 使用说明&#xff1a; ArrayList ArrayList的…...

哔哩下载姬:专业B站视频下载工具,支持8K与批量下载

哔哩下载姬&#xff1a;专业B站视频下载工具&#xff0c;支持8K与批量下载 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印…...

电商推荐系统中多层注意力架构(MLA)的优化实践

1. 项目背景与核心价值 最近在优化推荐系统时&#xff0c;我深入研究了Deepseek开源的代码库&#xff0c;发现其多层注意力架构&#xff08;MLA&#xff09;在序列建模任务中展现出独特优势。这个架构最初是为长文本理解设计的&#xff0c;但经过我们的改造&#xff0c;成功将其…...

视觉语言模型在智能视频异常检测中的创新应用

1. 项目概述&#xff1a;视觉语言模型在异常检测中的创新应用视频监控系统在现代社会中扮演着越来越重要的角色&#xff0c;从城市安防到交通管理&#xff0c;无处不在的摄像头每天产生海量视频数据。传统的人工监控方式早已无法应对如此庞大的数据量&#xff0c;智能视频分析技…...

手把手教你学Simulink——基于Simulink的磁耦合谐振式无线充电恒流/恒压切换控制

目录 手把手教你学Simulink ——基于Simulink的磁耦合谐振式无线充电恒流/恒压切换控制 一、引言:为什么需要“CC/CV切换”? 二、系统架构与切换逻辑 1. 整体控制框架 2. LCC-S的双模工作原理 三、核心控制模块详解 第一步:切换决策器设计 1. 切换阈值设定 2. Simu…...

第89篇:AI模型部署与服务化实战——Docker、Kubernetes与云服务选型(操作教程)

文章目录前言环境准备分步操作第一步&#xff1a;创建模型服务应用第二步&#xff1a;使用Docker容器化应用第三步&#xff1a;使用Kubernetes进行编排管理第四步&#xff1a;部署到云平台完整代码结构踩坑提示云服务选型考量总结前言 在AI项目里&#xff0c;模型训练往往只占…...

云原生环境中的边缘计算:从K3s到KubeEdge的全面指南

云原生环境中的边缘计算&#xff1a;从K3s到KubeEdge的全面指南 &#x1f525; 硬核开场 各位技术大佬们&#xff0c;今天咱们来聊聊云原生环境中的边缘计算。别跟我说你的边缘设备还在裸跑&#xff0c;那都不叫现代化&#xff01;在云原生时代&#xff0c;边缘计算已经成为连…...

2026年量子计算与人工智能国际学术会议(ICQCAI 2026)

2026 年量子计算与人工智能国际学术会议&#xff08;ICQCAI 2026&#xff09;将于 2026 年5月8 - 10日在北京举行。本次会议聚焦量子计算与人工智能的融合发展趋势&#xff0c;为全球学者、研究人员和行业专家搭建交流平台。近年来&#xff0c;量子计算与人工智能的融合成为科技…...

开源免费的WPS AI 软件 察元AI文档助手:链路 007:getConfiguredAssistantModelId 与分类默认模型

链路 007&#xff1a;getConfiguredAssistantModelId 与分类默认模型 总体链路图 下图在全系列各篇保持一致&#xff0c;仅通过高亮样式标示本篇所覆盖的环节&#xff1b;箭头表示主成功路径&#xff0c;点线为异常或可选路径。阅读任意一篇时都应能回到本图定位&#xff0c;…...

当电脑散热不再智能:FanControl如何用中文界面重新定义风扇控制体验

当电脑散热不再智能&#xff1a;FanControl如何用中文界面重新定义风扇控制体验 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHu…...

告别离线分析!用Wireshark+Lua脚本实时解析航天测控PDXP数据包(附插件开发实战)

航天测控PDXP协议实时解析实战&#xff1a;WiresharkLua插件开发指南 航天测控系统的稳定运行离不开高效的数据传输协议&#xff0c;而PDXP&#xff08;Packet Data Exchange Protocol&#xff09;作为现代航天测控网络的核心协议&#xff0c;承载着各类关键任务数据的实时交换…...