Python学习——【2.1】if语句相关语法
文章目录
- 【2.1】if语句相关
- 一、布尔类型和比较运算符
- (一)布尔类型
- (二)比较运算符
- 二、if语句的基本格式
- ※、练习
- 三、if-else组合判断语句
- ※、练习
- 四、if-elif-else多条件判断语句
- ※、练习
- 五、判断语句的嵌套
- ※、实战案例
【2.1】if语句相关
一、布尔类型和比较运算符
(一)布尔类型
进行判断,只有两个结果:
- 是
- 否
那么,在程序中,如何描述是或否呢?
使用:布尔类型。

布尔类型是数字类型下的一个小类。它有两个字面量,True和False,分别表示真和假。之所以布尔类型被划分到数字类型下面,是因为True本质是一个数字1,False本质是一个数字0。
布尔类型不仅可以自行定义,同时也可以通过计算得来,即通过比较运算符进行比较运算得到布尔类型的结果。
(二)比较运算符
布尔类型的数据,不仅可以通过定义得到,也可以通过比较运算符进行内容比较得到。
result = 10 > 5
print(f"10 > 5 的结果是:{result},类型是:{type(result)}")result = "xiaoming" == "zhangsan"
print(f"字符串xiaoming是否和zhangsan相等?结果是:{result},类型是:{type(result)}")
输出结果如下:
10 > 5 的结果是:True,类型是:<class 'bool'>
字符串xiaoming是否和zhangsan相等?结果是:False,类型是:<class 'bool'>

二、if语句的基本格式
if判断语句语法如下:
if 要判断的条件:条件成立时,要做的事情
当if后面要判断的条件为True时,if语句内的代码会被执行;当为False时,代码不会被执行。
例如:
# 定义变量
age = 30# 进行判断
if age >= 18:print("我已经成年了")
注意,在if语句内部,可以写任意多的代码,而不是只能写一行。但一定要注意,归属于if语句的代码块,其前方要正确进行缩进。
age = 18print(f"今年我已经{age}岁了。")if age >= 18:print("我已经成年了")print("即将步入大学生活")print("时间过得真快")
当age为18时,输出结果如下:
今年我已经18岁了。
我已经成年了
即将步入大学生活
时间过得真快
当age为10时,输出结果如下:
今年我已经10岁了。
时间过得真快
※、练习
案例:成年人判断
结合前面学习的input输入语句,完成如下案例:
1.通过input语句,获取键盘输入,为变量age赋值。(注意转换成数字类型)
2.通过if判断是否是成年人,满足条件则输出提示信息,如下:
欢迎来到游乐场,儿童免费,成人收费。
请输入你的年龄:30
您已成年,游玩需要补票10元。
祝您游玩愉快。
我的代码
print("欢迎来到游乐场,儿童免费,成人收费。")
age = int(input("请输入你的年龄:"))if age >= 18:print("您已成年,游玩需要补票10元。")print("祝您游玩愉快。")
三、if-else组合判断语句
if-else判断语法如下:
if 条件:满足条件时要做的事情1满足条件时要做的事情2满足条件时要做的事情3...
else:不满足条件时要做的事情1不满足条件时要做的事情2不满足条件时要做的事情3...
例如:
print("欢迎来到游乐场,儿童免费,成人收费。")
age = int(input("请输入你的年龄:"))if age >= 18:print("您已成年,游玩需要补票10元。")
else:print("您未成年,可以免费游玩。")print("祝您游完愉快。")
说明:
1.if和其代码块,条件满足时执行;
2.else搭配if,表示当不满足时执行;
3.else不需要写判断条件,当与之搭配的if的条件不满足时,即else执行;
4.else下的代码块,同样需要注意正确的缩进。
※、练习
案例:我要买票吗
通过input语句获取键盘输入的身高。
判断身高是否超过120cm,并通过print给出提示信息。
欢迎来到动物园。
请输入你的身高(cm):130
你的身高超过120cm,游玩需要购票10元。
祝您游玩愉快。
欢迎来到动物园。
请输入你的身高(cm):110
你的身高未超过120cm,可以免费游玩。
祝您游玩愉快。
我的代码
print("欢迎来到动物园")
height = int(input("请输入你的身高(cm):"))if height > 120:print("你的身高超过120cm,游玩需要购票10元。")
else:print("你的身高未超过120cm,可以免费游玩。")
print("祝您游玩愉快。")
四、if-elif-else多条件判断语句
某些场景下,判断条件不止一个,可能有多个。
if-elif-else多条件判断语法如下:
if 条件1:条件1满足时应该做的事情...
elif 条件2:条件2满足时应该做的事情...
elif 条件N:条件N满足时应该做的事情...
else:上面所有条件都不满足时应该做的事情...
例如:
print("欢迎来到动物园。")
height = int(input("请输入你的身高(cm):"))
vip_level = int(input("请输入你的vip级别(1~5):"))
day = int(input("请输入今天的日期(1~31):"))if height < 120:print("您的身高小于120cm,可以免费游玩。")
elif vip_level > 3:print("您的vip级别大于3,可以免费游玩。")
elif day == 1:print("今天是1号免费日,可以免费游玩。")
else:print("不好意思,所有免票条件都不满足,您需要购票10元。")print("祝您游玩愉快。")
判断是互斥且有顺序的,对于上述例子:
1.从上到下,一旦有一个条件得到满足,就不再理会后续条件。比如,一旦满足条件1,就不再理会条件2和3。若不满足条件1,但满足条件2,则不再理会条件3。所有条件都不满足,才会进入else。
2.else不是必须要写的,可以不写。
另外,对于上面例子的代码,可以进一步简化一下,如下所示:
print("欢迎来到动物园。")if int(input("请输入你的身高(cm):")) < 120:print("您的身高小于120cm,可以免费游玩。")
elif int(input("请输入你的vip级别(1~5):")) > 3:print("您的vip级别大于3,可以免费游玩。")
elif int(input("请输入今天的日期(1~31):")) == 1:print("今天是1号免费日,可以免费游玩。")
else:print("不好意思,所有免票条件都不满足,您需要购票10元。")print("祝您游玩愉快。")
这样写的好处在于:第一,不需要定义变量了,代码比较“简洁”;第二,由于“一旦有一个条件得到满足,就不再理会后续条件”的规则,所以某些情况下可以少做input操作。
※、练习
案例:猜数字
1.定义一个变量,数字类型,内容随意。
2.基于input语句输入猜想的数字,通过if和多次elif的组合,判断猜想数字是否正确。
请输入第一次猜想的数字:1
不对,再猜一次:2
不对,再猜最后一次:3
Sorry,全部猜错啦,我的数字是:10
我的代码
num = 10if int(input("请输入第一次猜想的数字:")) == num:print("恭喜你,猜对了。")
elif int(input("不对,再猜一次:")) == num:print("恭喜你,猜对了。")
elif int(input("不对,再猜最后一次:")) == num:print("恭喜你,猜对了。")
else:print(f"Sorry,全部猜错啦,我的数字是:{num}")
五、判断语句的嵌套
有很多场景,不仅仅是多个条件并列的关系,还会有满足前置条件才会进行二次判断的多层判断需求。
语法格式如下:
if 条件1:满足条件1时做的事情...if 条件2:满足条件2时做的事情...
如上所示,对于第二个if,它位于第一个if的代码块内,因此只有当第一个if满足条件时,才会执行第二个if。
嵌套的关键点,在于空格缩进。通过空格缩进,来决定语句间的层次关系。
例如:
print("欢迎来到动物园。")
if int(input("输入你的身高:")) > 120:print("你的身高大于120cm,不可以免费")print("不过如果你的vip等级高于3,可以免费游玩")if int(input("输入你的vip等级:")) > 3:print("你的vip等级大于3,欢迎你免费游玩。")else:print("Sorry,你需要补票10元。")
else:print("欢迎你免费游玩。")
说明:
1.嵌套判断语句可以用于多条件、多层次的逻辑判断;
2.嵌套判断语句可以根据需求,自由组合if elif else来构建多层次判断;
3.嵌套判断语句,一定要注意空格缩进,因为Python是通过空格缩进来决定层次关系的。
※、实战案例
案例需求
定义一个数字(1-10,随机产生),通过3次判断来猜数字。
案例要求
1.数字随机产生,范围1-10;
2.有3次机会猜测数字,通过3层嵌套判断实现;
3.每次猜不中,会提示大了或小了。
提示,通过如下代码,可以定义一个变量num,变量内存储1-10随机数字。
import random
num = random.randint(1, 10)
代码
# 构建一个随机数字变量
import random
rand_num = random.randint(1, 10)guess_num = int(input("请输入你猜的数字:"))
if guess_num == rand_num:print("恭喜你,第一次就猜中了!")
else:if guess_num > rand_num:print("你猜的数字偏大了")else:print("你猜的数字偏小了")guess_num = int(input("请输入你猜的数字:"))if guess_num == rand_num:print("恭喜你,猜中了。")else:if guess_num > rand_num:print("你猜的数字偏大了")else:print("你猜的数字偏小了")guess_num = int(input("请输入你猜的数字:"))if guess_num == rand_num:print("恭喜你,在最后一次机会时猜中了。")else:print("仍然没有猜中,三次机会用完了,游戏结束。")
注:
使用for循环或while循环能更好地实现这个需求。
相关文章:
Python学习——【2.1】if语句相关语法
文章目录 【2.1】if语句相关一、布尔类型和比较运算符(一)布尔类型(二)比较运算符 二、if语句的基本格式※、练习 三、if-else组合判断语句※、练习 四、if-elif-else多条件判断语句※、练习 五、判断语句的嵌套※、实战案例 【2.…...
机器学习--K-Means
K均值聚类 算法过程 K − m e a n s K-means K−means 是 聚类 c l u s t e r i n g clustering clustering 算法的一种,就是给你一坨东西,让你给他们分类: 我们的 K − m e a n s K-means K−means 大概是这样一个流程: 第一…...
模型训练时CPU和GPU大幅度波动——可能是数据的读入拖后腿
模型训练时CPU和GPU大幅度波动——可能是数据的加载拖后腿 问题 在进行猫狗大战分类任务时,发现模型训练时CPU和GPU大幅度波动,且模型训练速度很慢。 原因 初步分析可能是数据加载(包括数据的transform,我用了Resize&#…...
keep-alive的应用场景
...
【C++ Primer Plus习题】16.9
大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> #include <ctime> #include <v…...
Java入门:09.Java中三大特性(封装、继承、多态)02
2 继承 需要两个类才能实现继承的效果。 比如:类A 继承 类B A类 称为 子类 , 衍生类,派生类 B类 称为 父类,基类,超类 继承的作用 子类自动的拥有父类的所有属性和方法 (父类编写,子类不需要…...
AI为云游戏带来的革新及解决方案:深度技术剖析与未来展望
近期,科技巨头埃隆马斯克与热门国产游戏《黑神话:悟空》的互动,再次引发了公众对AI技术在游戏产业中应用的关注。马斯克,作为特斯拉和SpaceX的掌门人,不仅在科技领域引领风骚,其个人兴趣也广泛涉猎…...
集合是什么
1.是什么 集合(Collection)是Java语言中一个非常重要的概念,它是一组对象的容器,用于存储、检索和操作对象。在Java中,集合框架定义了一系列接口和实现类,用于处理不同类型的集合。 集合的概念 集合框架提…...
JavaDS —— 图
图的概念 图是由顶点集合以及顶点之间的关系组成的一种数据结构:G (V,E) 其中 V 表示的是顶点集合 : V { x | x 属于某个数据对象集} 是有穷非空集合 E 叫做边的集合 : E {(x, y) | x, y 属于 V} 或者 …...
魅思-视频管理系统 getOrderStatus SQL注入漏洞复现
0x01 产品简介 魅思-视频管理系统是一款集成了视频管理、用户管理、手机端应用封装等功能的综合性视频管理系统。该系统不仅以其强大的视频管理功能、灵活的用户管理机制、便捷的手机端应用封装功能以及高安全性和现代化的界面设计,成为了市场上备受关注的视频管理系统之一。…...
SOME/IP通信协议在汽车业务具体示例
标签:SOME/IP; SomeIP通信协议在汽车业务具体示例; SomeIP通信协议在汽车业务具体示例 SOME/IP(Scalable service-Oriented MiddlewarE over IP)协议被广泛应用于现代汽车的多个关键业务领域。SOME/IP协议特别适合需要…...
jupyter notebook添加环境/添加内核
参考: jupyter notebook添加环境/添加内核(超详细)_python_leoound-GitCode 开源社区 Jupyter Notebook 切换虚拟环境_jupyter 选择环境-CSDN博客 1.激活想添加的环境 conda activate pytorch39 2.下载核 conda install ipykernel 3.按照…...
建模杂谈系列256 规则函数化改造
说明 之前尝试用FastAPI来构造规则,碰到的问题是由于请求量过大(TPS > 1000), 从而导致微服务端口资源耗尽。所以现在的point是: 1 如何使用函数来替代微服务(同时要保留使用微服务的优点)2 进一步抽象并规范规则的执行3 等效合并规则的方法 内容 0 机制讨论…...
python实现冒泡排序的算法
冒泡排序是对数组里面两个相邻的数据进行比较并排序,最大的数会不断向后移动,因此叫冒泡排序。 冒泡排序的步骤: 1.首先对数组第一个数和第二个数进行比较,谁最小,谁排在前面 2.将第二个数与第三个数进行比较排序&a…...
爱玩游戏的弟弟,被人投资了100万
很多人说游戏是个害人的东西,尤其现在的青少年,被毒害得不浅,那还是因为大多数人对游戏本身了解得不够全面,只知道游戏是拿来玩,拿来消遣的,殊不知游戏里面还有大把捞金的机会。 我有个学员,我…...
Pandas_数据结构详解
1.创建DataFrame对象 概述 DataFrame是一个表格型的结构化数据结构,它含有一组或多组有序的列(Series),每列可以是不同的值类型(数值、字符串、布尔值等)。 DataFrame是Pandas中的最基本的数据结构对象&am…...
Leetcode 3287. Find the Maximum Sequence Value of Array
Leetcode 3287. Find the Maximum Sequence Value of Array 1. 解题思路2. 代码实现 题目链接:3287. Find the Maximum Sequence Value of Array 1. 解题思路 这一题我的思路比较暴力,就是求出每一个位置前后所有可能的长度为k的子序列的所有的或结果…...
python 山峦图
效果: 代码: import matplotlib.pyplot as plt import numpy as npdef mountain_plot(data_dict, colorsNone):if colors is None:colors get_colors_from_map(len(data_dict), "Spectral")x list(data_dict.keys())# Y轴位置y_positions …...
Open3D:3D数据处理与可视化的强大工具
创作不易,您的打赏、关注、点赞、收藏和转发是我坚持下去的动力! Open3D算法框架简介 Open3D是一个开源的3D数据处理库,旨在为3D数据提供高效、易用的计算和可视化工具。它支持多种3D数据格式,例如点云、网格、RGB-D图像等&…...
YOLOv8改进系列,YOLOv8的Neck替换成AFPN(CVPR 2023)
摘要 多尺度特征在物体检测任务中对编码具有尺度变化的物体非常重要。多尺度特征提取的常见策略是采用经典的自上而下和自下而上的特征金字塔网络。然而,这些方法存在特征信息丢失或退化的问题,影响了非相邻层次的融合效果。一种渐进式特征金字塔网络(AFPN),以支持非相邻…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...
