第五课:Python学习之if语句
判断(if)语句
目标
- 开发中的应用场景
- if 语句体验
- if 语句进阶
- 综合应用
01. 开发中的应用场景
生活中的判断几乎是无所不在的,我们每天都在做各种各样的选择,如果这样?如果那样?……


程序中的判断
# 定义holiday_name字符串变量记录节日名称
# 如果是情人节应该买玫瑰╱看电影
# 如果是平安夜应该买苹果吃大餐
# 如果是生日应该买蛋糕
# 其他的日子每天都是节日啊.......holiday_name = "端午"
if holiday_name == "情人节":print("应该买玫瑰╱看电影")
elif holiday_name == "平安夜":print("应该买苹果吃大餐")
elif holiday_name == "生日":print("应该买蛋糕")
else:print("每天都是节日啊")
判断的定义
- 如果 条件满足,才能做某件事情,
- 如果 条件不满足,就做另外一件事情,或者什么也不做
正是因为有了判断,才使得程序世界丰富多彩,充满变化!
判断语句 又被称为 “分支语句”,正是因为有了判断,才让程序有了很多的分支
02. if 语句体验
2.1 if 判断语句基本语法
在 Python 中,if 语句 就是用来进行判断的,格式如下:
if 要判断的条件:条件成立时,要做的事情……
注意:代码的缩进为一个
tab键,或者 4 个空格 —— 建议使用空格
- 在 Python 开发中,Tab 和空格不要混用!
2.2 判断语句演练 —— 判断年龄
需求
- 定义一个整数变量记录年龄
- 判断是否满 18 岁 (>=)
- 如果满 18 岁,允许进网吧嗨皮
# 1. 定义年龄变量
age = 18# 2. 判断是否满 18 岁
# if 语句以及缩进部分的代码是一个完整的代码块
if age >= 18:print("可以进网吧嗨皮……")# 3. 思考!- 无论条件是否满足都会执行
print("这句代码什么时候执行?")
注意:
if语句以及缩进部分是一个 完整的代码块
2.3 else 处理条件不满足的情况
思考
在使用 if 判断时,只能做到满足条件时要做的事情。那如果需要在 不满足条件的时候,做某些事情,该如何做呢?
答案
else,格式如下:
if 要判断的条件:条件成立时,要做的事情……
else:条件不成立时,要做的事情……
注意:
if和else语句以及各自的缩进部分共同是一个 完整的代码块
2.4 判断语句演练 —— 判断年龄改进
需求
- 输入用户年龄
- 判断是否满 18 岁 (>=)
- 如果满 18 岁,允许进网吧嗨皮
- 如果未满 18 岁,提示回家写作业
# 输入用户年龄
# 判断是否满18岁,如果满18岁,就可以进去网吧玩耍,
# 未满18岁,提示回家找你妈
age = int(input("请输入年龄:"))
if age >= 18:print("可以进来网吧玩耍")
else:print("回家吃饭去吧!")# 因为在python中,这句代码顶到最前面写了,所以,上面的代码不管成立不成立,这句代码都会执行
print("这个代码啥时候运行呢?")
03. 逻辑运算
- 在程序开发中,通常 在判断条件时,会需要同时判断多个条件
- 只有多个条件都满足,才能够执行后续代码,这个时候需要使用到 逻辑运算符
- 逻辑运算符 可以把 多个条件 按照 逻辑 进行 连接,变成 更复杂的条件
- Python 中的 逻辑运算符 包括:与 and/或 or/非 not 三种
3.1 and
条件1 and 条件2
- 与/并且
- 两个条件同时满足,返回
True - 只要有一个不满足,就返回
False
| 条件 1 | 条件 2 | 结果 |
|---|---|---|
| 成立 | 成立 | 成立 |
| 成立 | 不成立 | 不成立 |
| 不成立 | 成立 | 不成立 |
| 不成立 | 不成立 | 不成立 |
3.2 or
条件1 or 条件2
- 或/或者
- 两个条件只要有一个满足,返回
True - 两个条件都不满足,返回
False
| 条件 1 | 条件 2 | 结果 |
|---|---|---|
| 成立 | 成立 | 成立 |
| 成立 | 不成立 | 成立 |
| 不成立 | 成立 | 成立 |
| 不成立 | 不成立 | 不成立 |
3.3 not
not 条件
- 非/不是
| 条件 | 结果 |
|---|---|
| 成立 | 不成立 |
| 不成立 | 成立 |
逻辑运算演练
- 练习1: 定义一个整数变量
age,编写代码判断年龄是否正确- 要求人的年龄在 0-120 之间
- 练习2: 定义两个整数变量
python_score、c_score,编写代码判断成绩- 要求只要有一门成绩 > 60 分就算合格
- 练习3: 定义一个布尔型变量
is_employee,编写代码判断是否是本公司员工- 如果不是提示不允许入内
答案 1:
# 练习1: 定义一个整数变量 age,编写代码判断年龄是否正确
age = 100# 要求人的年龄在 0-120 之间
if age >= 0 and age <= 120:print("年龄正确")
else:print("年龄不正确")
答案 2:
# 练习2,定义两个整数变量 python_score、c_score 编写代码判断成绩
python_score = 30
c_score = 50
# 判断只要有一门成绩大于60就算及格
if python_score > 60 or c_score > 60:print("考试通过")
else:print("考试未通过")
答案 3:
# 练习3:定义一个布尔型变量 is_employee,编写代码判断是否是本公司员工
is_employee = True
# 如果不是,提示不允许入内
# 在开发中,通常希望某个条件不满足时,执行一些代码,可以使用not
# 另外,如果需要拼接复杂的逻辑计算条件、同样也有可能使用到not
if not is_employee:print("不允许进入内部")
04. if 语句进阶
4.1 elif
- 在开发中,使用
if可以 判断条件 - 使用
else可以处理 条件不成立 的情况 - 但是,如果希望 再增加一些条件,条件不同,需要执行的代码也不同 时,就可以使用
elif - 语法格式如下:
if 条件1:条件1满足执行的代码……
elif 条件2:条件2满足时,执行的代码……
elif 条件3:条件3满足时,执行的代码……
else:以上条件都不满足时,执行的代码……
- 对比逻辑运算符的代码
if 条件1 and 条件2:条件1满足 并且 条件2满足 执行的代码……
注意
elif和else都必须和if联合使用,而不能单独使用- 可以将
if、elif和else以及各自缩进的代码,看成一个 完整的代码块
elif 演练 —— 女友的节日
需求
- 定义
holiday_name字符串变量记录节日名称 - 如果是 情人节 应该 买玫瑰/看电影
- 如果是 平安夜 应该 买苹果/吃大餐
- 如果是 生日 应该 买蛋糕
- 其他的日子每天都是节日啊……
# 定义holiday_name字符串变量记录节日名称
# 如果是情人节应该买玫瑰╱看电影
# 如果是平安夜应该买苹果吃大餐
# 如果是生日应该买蛋糕
# 其他的日子每天都是节日啊.......holiday_name = "端午"
if holiday_name == "情人节":print("应该买玫瑰╱看电影")
elif holiday_name == "平安夜":print("应该买苹果吃大餐")
elif holiday_name == "生日":print("应该买蛋糕")
else:print("每天都是节日啊")
4.2 if 的嵌套
elif 的应用场景是:同时 判断 多个条件,所有的条件是 平级 的
- 在开发中,使用
if进行条件判断,如果希望 在条件成立的执行语句中 再 增加条件判断,就可以使用 if 的嵌套 - if 的嵌套 的应用场景就是:在之前条件满足的前提下,再增加额外的判断
- if 的嵌套 的语法格式,除了缩进之外 和之前的没有区别
- 语法格式如下:
if 条件 1:条件 1 满足执行的代码……if 条件 1 基础上的条件 2:条件 2 满足时,执行的代码…… # 条件 2 不满足的处理else:条件 2 不满足时,执行的代码# 条件 1 不满足的处理
else:条件1 不满足时,执行的代码……
if 的嵌套 演练 —— 火车站安检
需求
- 定义布尔型变量
has_ticket表示是否有车票 - 定义整型变量
knife_length表示刀的长度,单位:厘米 - 首先检查是否有车票,如果有,才允许进行 安检
- 安检时,需要检查刀的长度,判断是否超过 20 厘米
- 如果超过 20 厘米,提示刀的长度,不允许上车
- 如果不超过 20 厘米,安检通过
- 如果没有车票,不允许进门
# 义布尔型变量has_ticket表示是否有车票
# 定义整型变量knife_length表示刀的长度,单位:厘米#首先检立是否有车票,如果有,才允许进行安检
# 安检时.需要检查刀的长度.判断是否超过20厘米#如果超过20厘米,提示刀的长度,不允许上车
# #如果不超过20厘米,安检通过
# 如果没有车票,不允许进门has_ticket = True
knife_length = 50
if has_ticket:print("有票,可以去进行安检了")if knife_length >= 20:print("您携带的刀子有 %d 公分呢, 安检过不去" % knife_length)else:print("不超过20厘米,安检通过")
else:print("没票不能上")
05. 综合应用 —— 石头剪刀布
目标
- 强化 多个条件 的 逻辑运算
- 体会
import导入模块(“工具包”)的使用
需求
- 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
- 电脑 随机 出拳 —— 先假定电脑只会出石头,完成整体代码功能
- 比较胜负
| 序号 | 规则 |
|---|---|
| 1 | 石头 胜 剪刀 |
| 2 | 剪刀 胜 布 |
| 3 | 布 胜 石头 |
5.1 基础代码实现
- 先 假定电脑就只会出石头,完成整体代码功能
# 导入随机工具包
import random
# 从控制台输入要出的拳—石头(1)╱剪刀(2)╱布(3)
# 电脑随机出拳—先假定电脑只会出石头,完成整体代码功能(随机数的函数)player = int(input("输入要出的拳—石头(1)╱剪刀(2)╱布(3) :"))
computer = random.randint(1, 3)
quan_tou = "石头"
jian_dao = "剪刀"
bu = "布"
print("玩家出的拳是 %d -- 电脑出的拳是 %d" % (player, computer))
# 比较胜负
# 1石头胜剪刀
# 2剪刀胜布
# 3布胜石头
if ((player == 1 and computer == 2)or (player == 2 and computer == 3)or (player == 3 and computer == 1)):print("玩家胜利了,玩家出的是 %d" % player)
elif player == computer:print("两个人平局")
else:print("电脑胜利了,电脑出的是 %d" % computer)
5.2 随机数的处理
- 在
Python中,要使用随机数,首先需要导入 随机数 的 模块 —— “工具包”
import random
-
导入模块后,可以直接在 模块名称 后面敲一个
.然后按Tab键,会提示该模块中包含的所有函数 -
random.randint(a, b),返回[a, b]之间的整数,包含a和b -
例如:
random.randint(12, 20) # 生成的随机数n: 12 <= n <= 20
random.randint(20, 20) # 结果永远是 20
random.randint(20, 10) # 该语句是错误的,下限必须小于上限
本文提供的内容仅用于个人学习、研究,如有相关权利人的合法权利,请及时通知作者,予以删除!
相关文章:
第五课:Python学习之if语句
判断(if)语句 目标 开发中的应用场景if 语句体验if 语句进阶综合应用 01. 开发中的应用场景 生活中的判断几乎是无所不在的,我们每天都在做各种各样的选择,如果这样?如果那样?…… 程序中的判断 # 定义…...
群晖前面加了雷池社区版,安装失败,然后无法识别出用户真实访问IP
有nas的相信对公网都不模式,在现在基础上传带宽能有100兆的时代,有公网代表着家里有一个小服务器,像百度网盘,优酷这种在线服务都能部署为私有化服务。但现在运营商几乎不可能提供公网ip,要么自己买个云服务器做内网穿…...
【秋招笔试】10.13拼多多(已改编)秋招-三语言题解
🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收集…...
50个JAVA常见代码大全:学完这篇从Java小白到架构师(附带讲解)
基础语法 1. Hello World public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");} }讲解 这是一个典型的Java程序,它定义了一个名为HelloWorld的类,该类包含一个main方法——Java应用程序的入口点。System.o…...
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.0 SP1升级到SP3操作方法(x64)
1、首先安装时候选择升级SQLEXPRADV_x64_CHS.exe。 2、接着安装SQLServer2008R2SP1-KB2528583-x64-sp1补丁后10.50.2500.0。 3、接着安装升级SQLEXPRWT_x64_CHS.exe。 4、继续安装SP3:SQLServer2008R2SP3-KB2979597-x64-CHS。 5、最后安装SP3补丁:SQ…...
Centos7安装Git及配置Github
Background Git 是一个开源的分布式版本控制系统,由 Linus Torvalds(Linux 内核的创始人)在 2005 年创建。它被设计用来快速有效地处理从小到大的项目版本管理。Git 目前是全世界最流行的版本控制系统,广泛应用于软件开发中。 1、…...
MobileNet v3(相比于MobileNet v2)
概述: 更新Block(bneck) 使用NAS搜索参数 (Neural Architecture Search) 重新设计耗时层结构 更准确,更高效 以及表中数据展示 更新Block 1.加入SE模块 2.更新了激活函数 首先通过一个1*1的卷积层来进行一个升维处理&#…...
短视频剪辑入门指南:这四大软件值得推荐!
要在众多的短视频作品中脱颖而出并不容易,这就要求制作者不仅要具备良好的创意,还需要掌握一定的剪辑技巧。这里给大家推荐几个好用的短视频剪辑工具! 福昕视频剪辑 直达链接:www.pdf365.cn/foxit-clip/ 操作教程:立…...
网络编程(22)——通过beast库快速实现websocket服务器
目录 二十二、day22 1. websocket简述 2. 基于TCP长连接实现sebsocket a. Connection b. ConnectionMgr c. WebServer d. 编译的小问题 3. 测试 4. 基于http实现的websocket 二十二、day22 因为http受限于请求-响应模式,客户端发起请求,服务器…...
从视频截取每一帧作为图像
查看视频有多少帧 import cv2def count_frames_per_second(video_path):cap cv2.VideoCapture(video_path)if not cap.isOpened():print("Error: Could not open video")return None# Get frames per secondfps cap.get(cv2.CAP_PROP_FPS)# Get total number of f…...
终端 数据表格
// // Created by HongDaYu on 17 十月 2024. //#ifndef HDYSDK_UTIL_H #define HDYSDK_UTIL_H#include <cstdint> #include <string> #include <list> #include <iomanip> #include <memory>class dataGrid { private:std::list<const char*…...
2.4.ReactOS系统运行级别降低IRQL级别KfLowerIrql 函数
2.4.ReactOS系统运行级别降低IRQL级别KfLowerIrql 函数 2.4.ReactOS系统运行级别降低IRQL级别KfLowerIrql 函数 文章目录 2.4.ReactOS系统运行级别降低IRQL级别KfLowerIrql 函数KfLowerIrql 函数 KfLowerIrql 函数 /*******************************************************…...
数字后端实现静态时序分析STA Timing Signoff之min period violation
今天给大家分享一个在高性能数字IC后端实现timing signoff阶段经常遇到的min period violation。大部分时候出现memory min period问题基本上都是需要返工重新生成memory的。这是非常致命的错误,希望大家在做静态时序分析时一定要查看min period violation。 什么是…...
phpstorm+phpstudy 配置xdebug(无需开启浏览器扩展)
今天又被xdebug折磨了,忘记了以前咋配置了现在百度发现好多都是各种浏览器扩展而且也没有真正的用到项目上的都是测试的地址怎么样的 我就简单写一下自己实战吧 不支持workerman swoole hyperf等这种服务框架 如果你会请教教我 工具版本phpstudy8.1.xphpstorm2021.x…...
AI赋能安全运营 | 赛宁网安深度参与四川省网络安全沙龙
为促进四川省、市网络安全公共服务领域的经验交流与深入探讨,打通网络安全供需上下游,加速汇聚省、市优质网络安全设备和服务资源,提升巴中市乃至四川省网络安全防护水平,共同推动四川省网络安全事业的蓬勃发展。 2024年10月15日…...
R语言中,.RData 和 .rds 的区别
.RData 和 .rds 是 R 语言中两种不同的数据保存格式,二者有一些关键的区别: 1. 存储内容的类型: .RData 文件:可以同时保存多个对象(如数据框、向量、列表等),当你加载 .RData 文件时…...
python实现录屏功能
python实现录屏功能 将生成的avi文件转为mp4格式后删掉avi文件 参考感谢:https://www.cnblogs.com/peachh/p/16549254.html import os import cv2 import time import threading import numpy as np from PIL import ImageGrab from pynput import keyboard from da…...
酷克数据出席2024金融业数据库技术大会
10月16日,由中国金融电子化集团指导,北京金融信息化研究所主办的“2024金融业数据库技术大会”在京顺利召开。本次大会以“大模型时代下的数据库创新发展”为主题,汇聚了来自管理部门、金融机构、科技企业以及学术研究机构的众多专家学者&…...
find_library、pkg_check_modules、pkg_search_module的区别
在CMake中,find_library、pkg_check_modules和pkg_search_module是用于查找和使用库的三种不同命令。以下是具体介绍: find_library 功能:find_library用于查找指定的库文件(动态库或静态库),不依赖于库提供…...
多jdk版本环境下,jenkins系统设置需指定JAVA_HOME环境变量
一、背景 由于不同项目对jdk版本的要求不同,有些是要求jdk11,有些只需要jdk8即可。 而linux机器上安装jdk的方式又多种多样,最后导致jenkins打包到底使用的是哪个jdk,比较混乱。 1、java在哪 > whereis java java: /usr/bin/…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
