python-基础篇-选择-是什么

文章目录

  • 定义一:Python 条件语句跟其他语言基本一致的,都是通过一条或多条语句的执行结果( True 或者 False )来决定执行的代码块。
    • 1、什么是条件语句
    • 2、if 语句的基本形式
    • 3、if 语句多个判断条件的形式
    • 4、if 语句多个条件同时判断
    • 5、if 嵌套
  • 定义一:`if`和`else`就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名。
    • 分支结构
      • 应用场景
      • if语句的使用

在这里插入图片描述

Python 条件语句跟其他语言基本一致的,都是通过一条或多条语句的执行结果( True 或者 False )来决定执行的代码块。
ifelse就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名。

定义一:Python 条件语句跟其他语言基本一致的,都是通过一条或多条语句的执行结果( True 或者 False )来决定执行的代码块。

1、什么是条件语句

Python 条件语句跟其他语言基本一致的,都是通过一条或多条语句的执行结果( True 或者 False )来决定执行的代码块。

Python 程序语言指定任何非 0 和非空(null)值为 True,0 或者 null 为 False。

执行的流程图如下:

if语句流程图

2、if 语句的基本形式

Python 中,if 语句的基本形式如下:

if 判断条件:执行语句……
else:执行语句……

之前的章节也提到过,Python 语言有着严格的缩进要求,因此这里也需要注意缩进,也不要少写了冒号 :

if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。

例如:

# -*-coding:utf-8-*-results=59if results>=60:print ('及格')
else :print ('不及格')

输出的结果为:

不及格

上面也说到,非零数值、非空字符串、非空 list 等,判断为 True,否则为 False。因此也可以这样写:

num = 6
if num :print('Hello Python')

输出的结果如下:

可见,把结果打印出来了。

那如果我们把 num 改为空字符串呢?

很明显,空字符串是为 False 的,不符合条件语句,因此不会执行到 print('Hello Python') 这段代码。

还有再啰嗦一点,提醒一下,在条件判断代码中的冒号 : 后、下一行内容是一定要缩进的。不缩进是会报错的。

冒号和缩进是一种语法。它会帮助 Python 区分代码之间的层次,理解条件执行的逻辑及先后顺序。

3、if 语句多个判断条件的形式

有些时候,我们的判断语句不可能只有两个,有些时候需要多个,比如上面的例子中大于 60 的为及格,那我们还要判断大于 90 的为优秀,在 80 到 90 之间的良好呢?

这时候需要用到 if 语句多个判断条件,

用伪代码来表示:

if 判断条件1:执行语句1……
elif 判断条件2:执行语句2……
elif 判断条件3:执行语句3……
else:执行语句4……

实例:

# -*-coding:utf-8-*-results = 89if results > 90:print('优秀')
elif results > 80:print('良好')
elif results > 60:print ('及格')
else :print ('不及格')

输出的结果:

良好

4、if 语句多个条件同时判断

有时候我们会遇到多个条件的时候该怎么操作呢?

比如说要求 java 和 python 的考试成绩要大于 80 分的时候才算优秀,这时候该怎么做?

这时候我们可以结合 orand 来使用。

or (或)表示两个条件有一个成立时判断条件成功

and (与)表示只有两个条件同时成立的情况下,判断条件才成功。

例如:

# -*-coding:utf-8-*-java = 86
python = 68if java > 80 and  python > 80:print('优秀')
else :print('不优秀')if ( java >= 80  and java < 90 )  or ( python >= 80 and python < 90):print('良好')

输出结果:

不优秀
良好

注意:if 有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于 >(大于)、<(小于)等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。

5、if 嵌套

if 嵌套是指什么呢?

就跟字面意思差不多,指 if 语句中可以嵌套 if 语句。

比如上面说到的例子,也可以用 if 嵌套来写。

当然这只是为了说明 if 条件语句是可以嵌套的。如果是这个需求,我个人还是不太建议这样使用 if 嵌套的,因为这样代码量多了,而且嵌套太多,也不方便阅读代码。

定义一:ifelse就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名。

分支结构

应用场景

迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分,那么在完成本局游戏后,我们要根据玩家得到分数来决定究竟是进入第二关,还是告诉玩家“Game Over”,这里就会产生两个分支,而且这两个分支只有一个会被执行。类似的场景还有很多,我们将这种结构称之为“分支结构”或“选择结构”。给大家一分钟的时间,你应该可以想到至少5个以上这样的例子,赶紧试一试。

if语句的使用

在Python中,要构造分支结构可以使用ifelifelse关键字。所谓关键字就是有特殊含义的单词,像ifelse就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他的标识符也是不可以)。下面的例子中演示了如何构造一个分支结构。

"""
用户身份验证"""
username = input('请输入用户名: ')
password = input('请输入口令: ')
# 用户名是admin且密码是123456则身份验证成功否则身份验证失败
if username == 'admin' and password == '123456':print('身份验证成功!')
else:print('身份验证失败!')

需要说明的是和C/C++、Java等语言不同,Python中没有用花括号来构造代码块而是使用了缩进的方式来表示代码的层次结构,如果if条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了。换句话说连续的代码如果又保持了相同的缩进那么它们属于同一个代码块,相当于是一个执行的整体。缩进可以使用任意数量的空格,但通常使用4个空格,建议大家不要使用制表键或者设置你的代码编辑工具自动将制表键变成4个空格

当然如果要构造出更多的分支,可以使用if...elif...else...结构或者嵌套的if...else...结构,下面的代码演示了如何利用多分支结构实现分段函数求值。

"""
分段函数求值3x - 5  (x > 1)
f(x) =  x + 2   (-1 <= x <= 1)5x + 3  (x < -1)"""x = float(input('x = '))
if x > 1:y = 3 * x - 5
elif x >= -1:y = x + 2
else:y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))

当然根据实际开发的需要,分支结构是可以嵌套的,例如判断是否通关以后还要根据你获得的宝物或者道具的数量对你的表现给出等级(比如点亮两颗或三颗星星),那么我们就需要在if的内部构造出一个新的分支结构,同理elifelse中也可以再构造新的分支,我们称之为嵌套的分支结构,也就是说上面的代码也可以写成下面的样子。

"""
分段函数求值3x - 5	(x > 1)
f(x) =	x + 2	(-1 <= x <= 1)5x + 3	(x < -1)"""x = float(input('x = '))
if x > 1:y = 3 * x - 5
else:if x >= -1:y = x + 2else:y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))

说明: 大家可以自己感受一下这两种写法到底是哪一种更好。在之前我们提到的Python之禅中有这么一句话“Flat is better than nested.”,之所以提倡代码“扁平化”是因为嵌套结构的嵌套层次多了之后会严重的影响代码的可读性,所以能使用扁平化的结构时就不要使用嵌套。

在这里插入图片描述

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

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

相关文章

次序统计量

内容来源 概率论与数理统计教程&#xff08;第三版&#xff09; 茆诗松 高等教育出版社 数理统计学导论&#xff08;原书第7版&#xff09; 机械工业出版社 定义 设 X 1 , X 2 , ⋯ , X n X_1,X_2,\cdots,X_n X1​,X2​,⋯,Xn​ 是来自连续分布的随机样本 此分布具有 p d f…

【机器学习】Python reversed 函数

目录&#xff1a; reversed()函数初探应用于列表和元组实战演练&#xff1a;山海经故事文本处理 Python中的内置函数——reversed()。 这个函数能够帮助你高效地处理序列类型数据&#xff0c;比如列表、元组、字符串等&#xff0c;通过它你可以轻松地反转这些序列中的元素顺…

JSON 简述与应用

1. JSON 简述 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;常用于客户端与服务器之间的数据传递。它基于JavaScript对象表示法&#xff0c;但独立于语言&#xff0c;可以被多种编程语言解析和生成。 1.1 特点 轻量级&#…

JS对数据类型的检测方式

1. typeof()对于基本数据类型没问题&#xff0c;遇到引用数据类型就不管用 console.log( typeof 666 ); // number console.log( typeof [1,2,3] ); // object 2. instanceof()只能判断引用数据类型&#xff0c;不能判断基本数据类型 console.log( [] instanceof Array ) // tr…

Unity--协程--Coroutine

Unity–协程–Coroutine 1. 协程的基本概念 基本概念:不是线程,将代码按照划分的时间来执行,这个时间可以是具体的多少秒,也可以是物理帧的时间,也可以是一帧的绘制结束的时间。 协程的写法&#xff1a;通过返回IEnumerator的函数实现&#xff0c;使用yield return语句暂停执…

Golang | Leetcode Golang题解之第205题同构字符串

题目&#xff1a; 题解&#xff1a; func isIsomorphic(s, t string) bool {s2t : map[byte]byte{}t2s : map[byte]byte{}for i : range s {x, y : s[i], t[i]if s2t[x] > 0 && s2t[x] ! y || t2s[y] > 0 && t2s[y] ! x {return false}s2t[x] yt2s[y] …

python 查找轮廓

在Python中&#xff0c;查找图像的轮廓通常使用OpenCV库。以下是一个简单的示例代码&#xff0c;展示了如何使用OpenCV来查找并绘制图像的轮廓&#xff1a; pythonimport cv2 import numpy as np# 读取图像 image cv2.imread(your_image.jpg, 0) # 请将your_image.jpg替换为您…

设备树下的 platform 驱动编写

设备树下的 platform 驱动编写 设备树下的 platform 驱动简介 platform 驱动框架分为总线、设备和驱动&#xff0c;其中总线不需要我们这些驱动程序员去管理&#xff0c;这个是 Linux 内核提供的&#xff0c;我们在编写驱动的时候只要关注于设备和驱动的具体实现即可。在没有…

《昇思25天学习打卡营第6天 | 函数式自动微分》

《昇思25天学习打卡营第6天 | 函数式自动微分》 目录 《昇思25天学习打卡营第6天 | 函数式自动微分》函数式自动微分简单的单层线性变换模型函数与计算图微分函数与梯度计算Stop Gradient 函数式自动微分 神经网络的训练主要使用反向传播算法&#xff0c;模型预测值&#xff0…

建站小记:迁移域名DNS到CloudFlare

CloudFlare一直有赛博菩萨之称&#xff0c;据说用它做DNS解析服务又快又好又免费&#xff0c;还能防DDOS攻击&#xff0c;并且可以提供页面访问统计功能。 正好我博客网页打开略卡顿&#xff0c;所以决定将自己的DNS解析迁移到CloudFlare。 1.登录CF控制台&#xff0c;添加自己…

LeetCode-刷题记录-二分法合集(本篇blog会持续更新哦~)

一、二分查找概述 二分查找&#xff08;Binary Search&#xff09;是一种高效的查找算法&#xff0c;适用于有序数组或列表。&#xff08;但其实只要满足二段性&#xff0c;就可以使用二分法&#xff0c;本篇博客后面博主会持续更新一些题&#xff0c;来破除一下人们对“只有有…

(已解决)Adobe Flash Player已不再受支持

文章目录 前言解决方案 前言 一般来说&#xff0c;很少遇到官方网站使用Adobe Flash Player来进行录用名单公示了。但是&#xff0c;今天就偏偏遇到一次&#xff0c; 用谷歌浏览器打不开&#xff0c; 点了没有反应&#xff0c;用其他的浏览器&#xff0c;例如windows自带的那…

Golang | Leetcode Golang题解之第207题课程表

题目&#xff1a; 题解&#xff1a; func canFinish(numCourses int, prerequisites [][]int) bool {var (edges make([][]int, numCourses)indeg make([]int, numCourses)result []int)for _, info : range prerequisites {edges[info[1]] append(edges[info[1]], info[0]…

数据结构:期末考 第六次测试(总复习)

一、 单选题 &#xff08;共50题&#xff0c;100分&#xff09; 1、表长为n的顺序存储的线性表&#xff0c;当在任何位置上插入或删除一个元素的概率相等时&#xff0c;插入一个元素所需移动元素的平均个数为&#xff08; D &#xff09;.&#xff08;2.0&#xff09; A、 &am…

在node环境使用MySQL

什么是Sequelize? Sequelize是一个基于Promise的NodeJS ORM模块 什么是ORM? ORM(Object-Relational-Mapping)是对象关系映射 对象关系映射可以把JS中的类和对象&#xff0c;和数据库中的表和数据进行关系映射。映射之后我们就可以直接通过类和对象来操作数据表和数据了, 就…

join()方法——连接字符串、元组、列表和字典

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 join()方法用于连接字符串数组。将字符串、元组、列表中的元素以指定的字符&#xff08;分隔符&#xff09;连接生成一个新的字符串&#…

喜报 | 极限科技获得北京市“创新型”中小企业资格认证

2024年6月20日&#xff0c;北京市经济和信息化局正式发布《关于对2024年度4月份北京市创新型中小企业名单进行公告的通知》&#xff0c;极限数据&#xff08;北京&#xff09;科技有限公司凭借其出色的创新能力和卓越的企业实力&#xff0c;成功获得“北京市创新型中小企业”的…

学会python——在excel中写入数据(python实例十三)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3 .想Excel中写入数据 3.1 代码构思 3.2 代码实例 3.3 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的…

数据结构算法之B树

一、绪论 1.1 数据结构的概念和作用 1.2 B树的起源和应用领域 二、B树的基本原理 2.1 B树的定义和特点 2.2 B树的结构和节点组成 2.3 B树的插入 2.4 B树的删除操作 三、B树的优势和应用 3.1 B树在数据库系统中的应用 3.2 B树在文件系统中的应用 3.3 B树在内存管理中…

HTML5的多线程技术:Shared Worker的使用示例

Shared Worker 与普通的 Web Worker 类似&#xff0c;但不同之处在于它可以被多个浏览器窗口、标签页或者iframe共享&#xff0c;使得这些上下文之间能够相互通信。下面是一个使用 Shared Worker 的完整示例。共享Worker脚本&#xff08;sharedWorker.js&#xff09; self.add…