深入理解Python中的if语句

2023-05-16

公众号:尤而小屋
作者:Peter
编辑:Peter

大家好,我是Peter~

在生活中总是会听到这样的话:

  • 如果我上课认真一点,英语肯定可以及格
  • 如果我努力锻炼,肯定可以减到100斤
  • 如果我技术过硬,早就进大厂了……

其实这就是条件语句的应用:假设有某个条件成立,便会产生怎样的结果。

剪刀石头布

通过一个剪刀石头布的游戏来引出if条件语句:

import random  # 随机模块

player = int(input("请输入(0-剪刀  1-石头 2-布)"))  # 玩家输入
computer = random.randint(0,2)   # 0-2之间随机产生一个数作为电脑的输入

if (player == 0 and computer == 2) or (player == 1 and computer == 0) or (player == 2 and computer == 1):
    print("恭喜玩家你赢了")  # 加上小括号
elif (player == 0 and computer == 0) or (player == 1 and computer == 1) or (player == 2 and computer == 2):
    print("平局")
else:
    print("很可惜,你输了")

因为电脑的输入是随机产生的,所以可能产生不同的结果。

Python条件控制语句

Python 中的 条件控制语句 (Conditional control statement) 是通过一条或者多条语句的执行结果(True 或者 False),来决定执行的代码逻辑 。

  • 关键词:它包含 ifelifelse 关键字, Python 中是不存在 else if 的写法,只存在 elif 这种写法。
  • 冒号很重要:每句判断语句使用冒号 - : 结尾,使用 缩进 划分语句块,相同缩进数的语句组成一个语句块。
  • 3种条件控制语句: if 、if - else 、if - elif (多个elif) - else

if 语句

if 语句,仅有一个判断条件,如果条件成立(为 True),则执行判断语句后带缩进的代码逻辑,否则不执行。

1、语法格式:

if expression:
    statements...

看下具体的执行流程图:

看一个具体的案例:我们定义了一个变量a,刚好满足if语句的条件,那么执行打印恭喜你

if - else 语句

if expression
    statements...
else:
    statements...

if - else 语句,仅有一个判断条件,与 if 语句的区别就在于:

  • 如果if后面的条件成立(为 True),则执行 if 判断语句后带缩进的代码逻辑,

  • 否则的话,便执行 else 后带缩进的代码逻辑。

看下具体的执行流程图:

看一个具体的例子:

  • 定义变量a=2,不满足if条件语句
  • 执行else后面缩进的代码块

if - elif - else 语句

if expression:
    statements...
elif expression:
    statements...
     # 可以有1条或多条elif语句
else:
    statement...

在使用判断语句时,我们有时需要对两个甚至是多个条件进行判断,并执行对应的代码逻辑,这时以上两种语句就无法满足我们的需求。值得注意的是,if - elif - else 语句中,仅有一个条件成立后,就会退出当前整个判断语句,简单来说,这三条判断路径,只会走其中一条。

这种语句需要注意的点:

  • 存在多个条件判断语句,if为真则执行if后面的语句
  • elif如果有一个为真,则执行该elif,后面代码块不执行了
  • 如果if和elif都不满足,则执行else语句

看下具体的执行流程图:

具体的案例如下:

if…else…语句嵌套

多个if语句同时使用。通过一个客人是否喝的是美式加糖咖啡的例子来说明:

1、同时满足美式和“是”(加糖)的条件

2、满足美式,但是不加糖“否”

不满足加糖的时候(否),进入第一个else中

3、一开始就不满足“美式”

三元操作符

if条件语句可以和三元操作符配合使用。其实就是将多个if…else…条件语句写到一行代码中:

X = A if B else C
  • 如果B条件作为真,输出X=A
  • 如果B为假,那么输出X=C

上面语句的意思是:如果满足条件x>y,则将x赋值给a,否则(x<y)将y赋值给a。

现在是x<y,所以是y赋值给a,所以a最终的结果是17

Python列表推导式使用if语句

找出50以内能够被5整除的数字,两种方法来实现:

  • 列表推导式
  • for循环

Python中的逻辑运算符

运算符说明
not逻辑“非”
and逻辑“与”
or逻辑“或”

Python操作运算符

Python中常用的基础运算符可参照下表:

操作符说明
<小于
<=小于或等于
>大于
>=大于或等于
==等于
!=不等于
in / not in成员运算符
is / not is身份运算符

举几个例子说明基础运算符的使用:

Python中特殊对象

Python中的布尔值(bool)分为True和Fool。在if判断中如果条件为真True,则执行if后面缩进的代码块。有些特殊对象的布尔值为fool:

对象布尔值
NoneFalse
所有值为零的数(整数/复数/浮点数)False
空字符串False
空列表False
空元组False
空字典False
空集合False

下面的多个例子表示的是:当本身的布尔值为False,加上not之后变成True,然后执行print语句

通过否定的形式,我们可以精简自己的代码:

坐飞机

坐上飞机一般需要两个主要步骤:

  • 购买机票
  • 通过安检
def fly():
    ticket = int(input("是否购买机票(0-未购买 1-购买)"))
    safety = int(input("是否通过安检(0-未通过 1-通过)"))
    
    if ticket == 1 and safety == 1:
        print("请登机")
    elif ticket == 1 and safety != 1:
        print("未通过安检,不能登机")
    else:
        print("没有机票不能登机")
        
if __name__ == "__main__":
    fly()

总结

  1. 使用if条件控制语句时,可根据实际需求,灵活搭配使用基本运算符与逻辑运算符。
  2. 平时的if条件语句作为嵌套的多个if语句
  3. 需要注意条件控制语句后的冒号 : ,还有就是python中的代码块缩进问题。
  4. if - else 语句可理解为二选其一,if - elif - else 则为三选其一,包含多个 elif 则为 N 选其一,其中 else 并非必须选项。
  5. 使用逻辑运算符时,其优先级需要注意,加上小括号 () 的语句优先级最高,() > not > and > or。当我们不清楚语句执行的优先级,最好的解决办法就是添加上小括号
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入理解Python中的if语句 的相关文章

  • Scrapy 在抓取一长串 url 时陷入困境

    我正在抓取一个大的 url 列表 1000 左右 并且在设定的时间后 爬虫程序会以 0 页 分钟的速度爬行 爬行时问题总是出现在同一个位置 url 列表是从 MySQL 数据库检索的 我对 python 和 scrapy 相当陌生 所以我不
  • 无法使用 beautifulsoup 模块 python 从 HTML 检索温度值

    我正在使用 BeautifulSoup4 来解析此 HTML 查看源代码 https weather com en IN weather today l 17 39 78 49 https weather com en IN weather
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • 代码 zip( *sorted( zip(units, error) ) ) 的作用是什么?

    对于我的申请units and errors始终是数值列表 我尝试用谷歌搜索每个部分的作用 并找出了 zip 的第一部分 它似乎 ziped list zip units errors 只需将单位和误差配对即可生成一个列表 如下所示 uni
  • 创建一个行为类似于任何变量但具有更改/读取回调的类

    我想创建一个类 其行为类似于 python 变量 但在更改 读取 变量 时调用一些回调函数 换句话说 我希望能够按如下方式使用该类 x myClass change callback read callback 将 x 定义为 myclas
  • Django REST Framework:无法使用视图名称解析超链接关系的 URL

    我已经广泛研究了这个相当常见的问题 但没有一个修复对我有用 我正在 REST 框架中构建 Django 项目 并希望使用超链接关系 用户可以拥有许多独立的汽车和路线 路线是位置的集合 这些是我的序列化器 class CarSerialize
  • 预处理 csv 文件以与 tflearn 一起使用

    我的问题是关于在将 csv 文件输入神经网络之前对其进行预处理 我想使用 python 3 中的 tflearn 为著名的 iris 数据集构建一个深度神经网络 数据集 http archive ics uci edu ml machine
  • Python3如何安装.ttf字体文件?

    我想使用 python3 更精确的 Python 3 6 代码在 Windows 10 上安装 ttf 字体文件 我用谷歌搜索 但我发现的唯一的就是这个使用python在windows上安装TTF字体 https stackoverflow
  • 熊猫 style.background_gradient 忽略 NaN

    我有以下代码来转储数据帧results到 HTML 表格中 这样的列TIME FRAMES根据seaborn 的颜色图进行着色 import seaborn as sns TIME FRAMES 24h 7d 30d 1y Set CSS
  • SQLAlchemy 默认日期时间

    这是我的声明模型 import datetime from sqlalchemy import Column Integer DateTime from sqlalchemy ext declarative import declarati
  • 自定义信号的声明

    在 Qt 中 我们可以通过将自定义信号设为静态变量来创建它们 然后我们使用self signame反而classname signame 这样就在类中创建了一个实例变量 我想了解这种模式之外的理论 这是我尝试过的一些伪代码 这些伪代码已记录
  • 使用 Twisted Python 的 UDP 客户端和服务器

    我想创建一个服务器和客户端 使用 Twisted 从网络发送和接收 UDP 数据包 我已经用 Python 中的套接字编写了此代码 但想利用 Twisted 的回调和线程功能 然而 我需要 Twisted 设计方面的帮助 我想接收多种类型的
  • PyCharm 输出错误消息散布在控制台输出中。如何解决这个问题?

    我正在运行 PyCharm 社区版 4 0 4 有谁知道为什么控制台输出后不显示错误消息 Thanks C Python27 python exe F Google Drive code python scripts leetcode lc
  • 使用主宰器将实时数据发送给客户端

    我尝试使用 Flask 的主宰框架 以便按照 Flask 代码片段将实时信息发送到客户端浏览器http flask pocoo org snippets 80 http flask pocoo org snippets 80 当我尝试为我的
  • Celery 设计帮助:如何防止并发执行任务

    我对 Celery AMQP 相当陌生 正在尝试提出一个任务 队列 工作人员设计来满足以下要求 我有多种类型的 每用户 任务 例如 TaskA TaskB TaskC 这些 每用户 任务中的每一个都为系统中的一个特定用户读取 写入数据 因此
  • 找到图像特征宽度的正确方法和Python包

    输入是一个在黑色背景上带有彩色 抱歉 垂直线的光谱 给定该带的近似 x 坐标 用 X 标记 我想找到该带的宽度 我对图像处理不熟悉 请引导我前往正确的方法图像处理和Python图像处理package也能起到同样的作用 我认为 PIL Ope
  • 使用多行选项和编码选项读取 CSV

    在 azure Databricks 中 当我使用以下命令读取 CSV 文件时multiline true and encoding SJIS 似乎编码选项被忽略了 如果我使用multiline选项 Spark 使用默认值encoding那
  • 检测计算机何时解锁 Windows

    我用过这个优秀的方法 https stackoverflow com questions 20733441 lock windows workstation using python 20733443锁定 Windows 计算机 那部分工作
  • “ModuleNotFoundError:我的 Docker 容器中没有名为 的模块”

    我正在尝试在 Docker 容器中运行 python 脚本 但我不知道为什么 python 找不到任何 python 模块 我认为它与 PYTHONPATH 环境变量有关 所以我尝试将其添加到 Dockerfile 中 如下所示 ENV P
  • 有效积累稀疏 scipy 矩阵的集合

    我有一个 O N NxN 的集合scipy sparse csr matrix 每个稀疏矩阵都有 N 个元素集 我想将所有这些矩阵加在一起以获得一个常规的 NxN numpy 数组 N 约为 1000 矩阵内非零元素的排列使得所得总和肯定不

随机推荐

  • 【Qt】Creator调试卡死挂起-starting debugger cdbengine for abi 【2023.03.23】

    解决方案 xff1a 删除这个文件 xff1a C Users 你的用户名 AppData Roaming QtProject qtcreator debuggers xml 重启QtCreator
  • ubuntu安装显卡驱动后无法进入系统

    如果你的电脑有一下问题 1 ubuntu系统登录界面输入密码重复登录 2 ubuntu系统登录界面输入密码之后显示桌面背景 xff0c 左下角有版本号 以上两种问题一般都由于显卡驱动安装存在问题 xff0c 通过文本命令行进入重新安装 xf
  • Linux实战(7):centos7安装xrdp

    系统环境 xff1a 最小化安装 xff0c 无安装桌面化 操作 yum更新 yum y update 安装依赖 tigervnc server xrdp GNOME Desktop yum y span class token funct
  • 真正免费的天气API,无需注册申请key

    文章目录 1 中华万年历的天气API2 讯飞语音识别内置的墨迹天气API3 乐享天气APP 无聊整理的真正免费的天气API xff0c 无需注册申请key等 xff0c 当然部分数据解析需要自己理解下 xff0c 也不是所有天气数据都有 x
  • VS2012无法启动调试,只显示会附加到进程

    VS2012无法启动调试 xff0c 只显示会附加到进程 不知道有人遇到这个问题没 但希望这点小经验能给遇到问题的童鞋带来帮助 今天在使用VS2012的时候 xff0c 打开突然发现 xff0c 只显示附加到进程 xff0c 无法进行调试
  • “error C3872 此字符不允许在标识符中使用” 的解决

    1 最近笔者写程序 xff0c 突然遇到莫名其妙的问题 xff0c vs2012报error C3872 此字符不允许在标识符中使用 的错误 xff0c 然后就一堆胡乱报错 xff0c 刚开始的时候一直以为是代码问题 xff0c 其实不是这
  • ext4格式的 system.img 怎么修改

    Linux Ubuntu 10 04 file system img就可以看到这个文件是个什么格式的了 system img Linux rev 1 0 ext4 filesystem data gingerbread的system img
  • GitHub Desktop的简单使用

    1 今天来说说GitHub 客户端的使用 xff0c 什么 你没听说过GitHub xff1f 那算了 xff0c 那你真是太low xff0c 自己百度 记得第一次听说和使用关于GitHub这些还是好几年前闲得慌学着在GitHub上使用o
  • EasyX的安装与使用

    考研结束了好几天 xff0c 开始写一些东西吧 xff0c 把以前做的东西做些梳理 1 EasyX是一个轻量级的简单的C 43 43 图形库 xff0c 可以用来做些简单的演示2d类游戏 xff0c 没有cocos2d x那样重量级 xff
  • 2-1000之间的完数

    题目描述 xff1a 编写程序显示2 1000之间的说有完数 xff0c 所谓完数是指 xff0c 该数的各因子之和正好等于该数本身 代码 xff1a span class hljs preprocessor include lt stdi
  • Android Studio R报红的总结

    做个笔记 xff0c 懒得折腾格式 1 一般由于 xff0c 电脑太慢 xff0c 等一会就差不多了 xff0c 或者重启studio xff0c 甚至电脑 xff0c 记得当年as1 0就经常要这样 2 或者刷新gradle 3 看到有人
  • 基于Android平台的个人时间管理系统的设计与实现

    0 前言 另外一个毕设作品 xff0c 功能不算完善 xff0c 主体框架使用了 高效Android工程师6周养成计划 里面的项目内容 xff0c 其中最核心功能就是仿照 我要当学霸 这个软件的形式实现的监督不让用户玩手机的功能 xff0c
  • PDF内复制文字多余换行问题【完美解决】

    问题描述 从PDF中复制文字后粘贴 xff0c 结果每行出现换行 影响最大的就是笔者google翻译论文的时候 xff0c 效果很差 多出的换行符 翻译效果 xff0c 目不忍视 解决办法 使用工具 sublime 使用快捷键 shift
  • 15.【cocos2d-x 源码分析】:localStorage的详细分析

    对应源码位置 xff1a cocos2d x 3 3 cocos storage local storage localStorage localStorage 的接口 cocos2d x提供了简单的本地数据存储的功能 xff0c 其主要是
  • 16【cocos2d-x 源码分析】:HttpClient 的详细分析

    对应源码位置 xff1a cocos2d x 3 3 cocos network Http HttpRequest的实现 span class token keyword typedef span std span class token
  • 17【cocos2d-x 源码分析】:多分辨率支持的详细分析

    对应源码位置 xff1a cocos2d x 3 3 cocos platform GLView 设计分辨率与屏幕分辨率 cocos2d x中 xff0c 进行游戏设计时使用逻辑上的设计分辨率 xff0c 当具体游戏运行在物理机上时对应具体
  • ubuntu与Windows进行远程连接

    安装xrdp sudo apt get install xrdp 安装vnc4server sudo apt get install vnc4server 安装xubuntu desktop sudo apt get install xub
  • Python 爬取ts流视频

    准备工具 1 安装python xff0c 本机环境linux 43 python3 6 2 直接开撸 xff0c 基本的包需要pip install 3 话不多说直接干 https www com video 2 1 html某网站 xf
  • JS报错-TypeError: xxx is not a function

    在今天的工作中 xff0c 有个勾选框的onchage事件绑定的函数明明有实现 但是触发时 xff0c 一直报错TypeError xxx is not a function 一直以为是错误Uncaught ReferenceError a
  • 深入理解Python中的if语句

    公众号 xff1a 尤而小屋 作者 xff1a Peter 编辑 xff1a Peter 大家好 xff0c 我是Peter 在生活中总是会听到这样的话 xff1a 如果我上课认真一点 xff0c 英语肯定可以及格如果我努力锻炼 xff0c