ʕ • ᴥ • ʔ

づ♡ど

 🎉 欢迎点赞支持🎉

个人主页:励志不掉头发的内向程序员;

专栏主页:python学习专栏;


文章目录

前言

一、顺序语句

二、条件语句

2.1、什么是条件语句

2.2、语法格式

2.3、缩进和代码块

2.4、空语句 pass

三、循环语句

3.1、while 循环

3.2、for 循环

3.3、continue

3.4、break

总结


前言


一、顺序语句

默认情况下,Python 的代码执行顺序是按照从上到下的顺序,依次执行的。

print(1)
print(2)
print(3)

这个代码的执行结果一定是 “123”,而不会出现 “132” 或者 “321” 等。这种按照顺序执行的代码,我们称为顺序语句。

这个顺序是很关键的,我们编程是一件明确无歧义的事情,安排好任务的顺序,我们计算机才能够正常的执行。如果这个顺序乱了,我们的计算机就会很困扰。

二、条件语句

2.1、什么是条件语句

条件语句能够表达 “如果.......否则........” 这样的语义,这构成了计算机中基础的逻辑判定。

条件语句也叫做分支语句,表示了接下来的逻辑可能有几种走向。

如果 我认真学习

        我就容易找到工作

否则

        我就容易毕业就失业

其中 “我认真学习” 称为条件,如果条件成立(条件为真),则会出现 “我就容易找到工作” 的情况。如果条件不成立(条件为假),则会出现 “我就容易毕业就失业”。

当然,我们的逻辑反过来也是可以的。

如果 我选择躺平摆烂

        我就容易毕业就失业

否则

        我就容易找到工作

在这个条件语句中 “我选择躺平摆烂” 称为条件,如果条件成立(条件为真),则会出现 “我就容易毕业就失业” 的情况。如果条件不成立(条件为假),则会出现 “我就容易找到工作”。

这两种写法所表达的含义是一样的。

总的来说,条件语句就是根据一个具体条件的成立与否,来决定接下来的逻辑走向。

2.2、语法格式

Python 中使用 if else 关键字表示条件语句。

(1)if

if expression:

        do_something1

        do_something2

next_something

如果 expression 值为 True,则执行 do_something1,do_something2,next_something。

如果 expression 值为 False,则只执行 next_something,不执行 do_something1,do_something2。

这也就是说当我们的 if 后面的条件成立了,就会做在 if 中的全部事情,然后再去执行 下一件事情。但是如果不成立,那就不会执行 if 中的全部事情,直接去执行下一件事情。

num = input("请输入年龄: ")
num = int(num)
if 0 < num < 20:print(f"{num}岁,真年轻")print("加个微信")
print("游戏结束了")

我们可以看看这个代码如果 if 条件为真返回的是什么,

条件为假返回的是什么。

(2)if - else

if expression:

        do_something1

else:

        do_something2

如果 expression 值为 True,则执行 do_something1。

如果 expression 值为 False,则执行 do_something2。

这个和 if 语句相比多了一个 else,就是说如果我们 if 后面的条件成立了就去执行 if 中的全部事情,然后跳过 else 直接去执行下一件事情。如果条件不成立就会跳过 if 中的事情,直接去执行else 中的全部事情,然后再去执行下一件事情。

num = input("请输入年龄: ")
num = int(num)
if 0 < num < 20:print(f"{num}岁,真年轻")print("加个微信")
else:print("有车没,有房没,结婚没,有娃没")
print("游戏结束了")

我们可以看看这个代码如果 if 条件为真返回的是什么,

条件为假返回的是什么。

(3)if - elif - else

if expression1:

        do_something1

elif expression2:

        do_something2

else:

        do_something3

如果 expression1 值为 True,则执行 do_something1。

如果 expression1 值为 False,并且 expression2 值为 True,则执行 do_something2。

如果 expression1 值为 False,并且 expression2 值为 False,则执行 do_something3。

我们这个在上一个的基础上又多了一个 elif 的分支,它其实是 else if 的缩写。编译器会按照顺序从上往下去找条件符合的,如果 if 条件成立,那就去执行 if 中的全部事情,执行完了就直接跳过后面的所有分支(elif、else 全部跳过)。即使可能这些分支也有条件成立的也不会管,接着去完成下面的事情。如果 if 语句条件不成立,那就按照顺序从上往下去找。如果有条件成立的 elif语句就和上面一样运行。都不成立了就会去完成 else 中的全部事情。

num = input("请输入年龄: ")
num = int(num)
if 0 <= num < 6:print(f"{num}岁,好可爱的小宝宝")
elif 6 <= num < 20:print(f"{num}岁,好好学习天天向上")
elif 20 <= num < 30:print(f"{num}岁,美女加个微信")
elif 30 <= num < 60:print("有车没,有房没,结婚没,有娃没")
else:print("养老ing")
print("游戏结束了")

我们可以看看这个代码如果 if 条件为真返回的是什么,

其他条件返回的是什么,

条件为假返回的是什么。

Python 和很多编译器不太一样,

if后面的条件表达式,没有(),使用:作为结尾。

if/else 命中条件后要执行的“语法块”,使用缩进(通常是4个空格或者1个tab)来表示,而不是{ }。

对于多条件分支,不是写作 else if,而是 elif。

2.3、缩进和代码块

代码块指的是一组放在一起执行的代码。

在 Python 中使用缩进表示代码块,不同级别的缩进,程序的执行效果是不同的。

a = input("请输入一个整数: ")
if a == '1':print('hello')print('world')

我们这个代码如果我们输入 1,就会打印 hello world,否则就什么都不会打印。

而这个和它十分像的代码却不是这么回事。

a = input("请输入一个整数: ")
if a == '1':print('hello')
print('world')

这个代码不管输不输入1,都会打印 world,但是输入了1就会打印 hello world,不输就只打印world。

此时我们的 world 就和条件无关了,条件是否成立都会打印 world,不属于条件语句中的内容了。如果我们反过来会怎么样呢?

a = input("请输入一个整数: ")
if a == '1':
print('hello')print('world')

答案就是会出现错误。

错误是我们 if 后面应该有一个缩进块。我们的缩进块出现问题。

在 Python 中缩进是非常重要的,也不能乱写的。

像这样也是不允许的。所有我们在编写 Python 代码时务必要保证我们缩进是正确的。

在 Python 中,缩进表示代码块,在 if、elif、else、while、for等,需要跟上代码块的部分,都是需要使用缩进来表示的。

在 Python 中的代码块还可以嵌套。

if a == '1':if b == '2':print("111111")print("222222")
print("333333")

在此条件中就有了 if 条件嵌套的情况,也就是缩进嵌套。我们可以仔细观看缩进来方便我们理解这个代码。

我们通过缩进就可以知道框框中的都是满足 if 条件要做的事情。如果不满足就会跳过直接输出 ”333333“。然后在这个满足我们的条件让 a == 1 时,我们里面还有一个条件语句。

我们通过缩进即可以知道我们这个条件语句如果满足要做的事情就是输出 “222222”。这就是我们外面的 if 所嵌套的 if。如果满足 b == 2 就会输出 “111111”,当然如果想要让编译器读到这个 if语句就得先满足 a == 1 的这个 if 语句条件。

两个条件都满足,才会打印 “111111”,因为打印 “111111” 的语句有两级缩进,相当于是 if b == 2 条件内部的代码块。

第一个条件都满足,就会打印 “222222”,因为打印 “222222” 的语句只有一级缩进,相当于是 if a == 1 条件内部的代码块。

两个条件即使都不满足,也会打印 “333333”,因为打印 “333333” 的语句没有缩进,相当于和两个 if 都无关。

当有多级条件嵌套时,当前的语句属于哪个代码块,完全取决于缩进的级别。

2.4、空语句 pass

Python 中 pass 表示空语句,并不会对程序的执行有任何影响,只是占个位置,保持 Python 语法格式符合要求。

# 这两串代码是等价的
a = input("请输入一个整数:")
if a == 1:print("hello")a = input("请输入一个整数:")
if a != 1:pass
else:print("hello")

如果写成这样

a = input("请输入一个整数:")
if a != 1:else:print("hello")

程序不符合 Python 语法的,会直接报错。 

三、循环语句

有些操作是需要反复执行的,这种就需要使用循环。

3.1、while 循环

基本的语法格式

while 条件:

        循环体

  • 条件为真,则执行循环体代码。
  • 条件为假,则结束循环。

比如我们打印 1-10 的整数。

num = 1
while num <= 10:print(num)num += 1

我们 while 循环的条件是 num <= 10,也就是说如果我们每次循环结束后重新进行条件判断时 num 的值一直不超过10,循环就会一直进行,直到我们的条件不满足。就会跳出循环,而我们循环中每次循环就打印一次 num 的值,然后再给 num 加1。

当然,如果我们不写 num += 1 这句话,由于忘记写了更新循环变量的语句,循环就一直执行,永远满足条件,永远不会跳出循环,也就是所谓的死循环了。

陷入死循环后我们可以点击旁边的红色小方块来终止程序。

计算 1-1000 的和。

sum = 0
num = 1
while num <= 1000:sum += numnum += 1
print(sum)

3.2、for 循环

基本语法格式

for 循环变量 in 可迭代对象:

        循环体

在 Python 中的 for 和其他语言不同,没有 “初始化语句”,“循环条件判定语句”,“循环变量更新语句”,而是更加简单。

所谓的 “可迭代对象”,指的是 “内部包含多个元素”,能一个一个把元素取出来的特殊变量。

我们的这个语法格式的意思其实是把我们可迭代对象中的每个元素都分别取出来,然后带到循环变量中,再去运行循环体的逻辑。我们把可迭代对象中的每个元素都遍历一遍过后我们的循环就结束了。

我们可以来看一下我们 for 循环的打印 1-10。

for i in range(1, 11):print(i)

这样我们就完成了一个打印 1-10 的操作。

此处的 range 也是我们 Python 中的一个内置的函数。它起到的效果就是得到一个 “可迭代对象”,这个可迭代对象就包含了一系列的整数。它的整数范围规则是range(begin, end) => [begin, end),这是一个前闭后开的区间。就相当于[begin,end - 1]。所以我们这里是从1开始打印,但是不包含11。就是打印 1-10 了。

此时如果我不想打印 1-10,而是 2,4, 6,8,10 该怎么办,还是用range吗?确实是,我们range 函数还给我们提供了第三个参数,这个参数表示 “步长”,默认的步长值是1,也就是这一次取的值离上一个循环取的值相差1。我们可以通过修改这个步长来达到我们想要的效果。

for i in range(2, 12, 2):print(i)

我们这串代码的意思就是从2开始到12(不包含12)结束,每次取的值离上一次相差2,打印出来。我们就可以实现打印 2,4,6,8,10 了。

那我们打印从 10-1 怎么办呢?

for i in range(10, 0, -1):print(i)

我们的range是从10开始,0结束,步长是-1,就是每次取的值离上一次相差-1。这样就能完成。

我们的range灵活多变,我们具体情况具体分析。

我们可以再来尝试求一下 1 + 2 + 3 +......+ 100。

num = 0
for i in range(1, 101):num += i
print(num)

3.3、continue

continue 表示立即结束这一次循环,进入下次循环。

我们来举个例子:

假如我们要吃5个苹果。

for i in range(1, 6):print(f"吃第{i}个苹果")

假如我们吃到第三个苹果时吃到了一个虫子,我们就得跳过第三个苹果继续吃别的苹果。

for i in range(1, 6):if i == 3:# 发现第三个苹果,有一只虫continueprint(f"吃第{i}个苹果")

此时我们就没有吃第三个苹果了。这说明了我们吃到第三个苹果的时候就达成了 if 的条件,执行了continue,跳过了这次循环,就没有打印了。

3.4、break

break 表示立即结束整个循环。

我们再来举个例子:

假如我们吃苹果的时候吃到了半只虫子,让我吓得剩下的也不敢吃了。

for i in range(1, 6):if i == 3:#发现第三个苹果,有半只虫,不敢吃了breakprint(f"吃第{i}个苹果")

我们吃完第二个就直接跳出循环了。整个循环结束了就不会继续往后运行了。


总结

以上便是我们 Python 中的全部语句,我们可以去找找题目练习一下这些语句,这是一个代码的重要组成部分,我们掌握越熟练越好。大家加油。

🎇坚持到这里已经很厉害啦,辛苦啦🎇

ʕ • ᴥ • ʔ

づ♡ど

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

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

相关文章

Python基础之元组列表集合字典

目录一、元组&#xff08;Turple&#xff09;1.1、概念定义注意事项1.2、常见操作元组只支持查询操作&#xff0c;不支持增删改操作。查询元素二、列表1.1、概念定义注意事项1.2、常见操作添加修改查找删除排序列表推导式列表嵌套三、集合1.1、概念定义集合的特点1.2、常见操作…

Ubuntu 22.04 安装 向日葵远程Client端

通过向日葵主页的下载deb包有可能遇到安装失败的情况 #因向向日葵提供的libwebkit包是4.0-37了,而向日葵依赖的是3.0.0(Reading database ... 303666 files and directories currently installed.) Preparing to unpack SunloginClient-10.1.1.38139_amd64.deb.1 ... sunloginc…

Linux中卸载和安装Nginx

阿里云宝塔linux为例一&#xff1a;卸载1.停止 Nginx 服务# 检查Nginx运行状态 systemctl status nginx# 停止Nginx服务 sudo systemctl stop nginx# 禁用开机自启 sudo systemctl disable nginx2. 卸载 Nginx 软件包# 查看已安装的Nginx包 yum list installed | grep nginx# 卸…

C++知识汇总(5)

目录 1.写在前面 1.C11的发展历史 2.序列表初始化 3&#xff0c;C11中的std::initializer_list 4.左值和右值 1.左值引用和右值引用 2.生命周期的延长 3.左值和右值的参数匹配 4&#xff0c;移动构造和移动赋值 5.引用折叠 6.完美转发 总结 1.可变模板参数 2.包扩展…

LeetCode 每日一题 2025/8/25-2025/8/31

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录8/25 498. 对角线遍历8/26 3000. 对角线最长的矩形的面积8/27 3459. 最长 V 形对角线段的长度8/28 3446. 按对角线进行矩阵排序8/29 3021. Alice 和 Bob 玩鲜花游戏8/30 36.…

大模型训练全方位架构分析

文章目录前言一&#xff1a;数据工程二&#xff1a;计算硬件与集群三&#xff1a;训练并行策略四&#xff1a;模型架构五&#xff1a;优化与训练动力学六&#xff1a;内存管理七&#xff1a;训练流程与工具链八&#xff1a;成本与效率九&#xff1a;伦理、安全与对齐十&#xf…

人工智能加速漏洞利用,15分钟即可完成概念验证?

一个由人工智能驱动的攻击研究系统已经创建了十多个漏洞利用程序&#xff0c;在许多情况下将开发时间缩短到不到 15 分钟&#xff0c;凸显了全面自动化对企业防御者的影响。 该系统由两位以色列网络安全研究人员创建&#xff0c;利用大型语言模型 (LLM) 的提示、通用漏洞与暴露…

Go语言入门(13)-map

map是Go提供的另外一种集合&#xff0c;他可以&#xff1a;①将key映射到value;②快速通过key找到对应的value;同时&#xff0c;它的key几乎可以是任何类型。声明map&#xff0c;必须指定key和value的类型&#xff1a;下面来看一个简单的例程&#xff0c;在该例程中&#xff0c…

基于51单片机的配电室远程监控系统设计环境检测GSM环境报警设计

基于51单片机的配电室远程监控系统设计与环境检测GSM报警系统 1. 系统功能介绍 本设计是一种基于 STC89C51/STC89C52 单片机 的智能配电室环境监控与报警系统。该系统将温湿度检测、水位检测、烟雾检测、入侵检测与风扇、水泵控制相结合&#xff0c;同时配合 SIM900 GSM 模块 实…

从RNN到Transformer

从RNN到Transformer 目录 基础篇&#xff1a;序列模型概述RNN循环神经网络LSTM长短期记忆网络Transformer架构时间序列预测应用计算机视觉应用大语言模型应用实战与优化前沿发展 基础篇&#xff1a;序列模型概述 {#基础篇} 什么是序列数据&#xff1f; 序列数据是按照特定顺…

【Java进阶】Java与SpringBoot线程池深度优化指南

Java与SpringBoot线程池深度优化指南Java与SpringBoot线程池深度优化指南一、Java原生线程池核心原理1. ThreadPoolExecutor 核心参数关键参数解析&#xff1a;2. 阻塞队列选择策略3. 拒绝策略对比二、SpringBoot线程池配置与优化1. 自动配置线程池2. 异步任务配置类3. 自定义异…

mysql(自写)

Mysql介于应用和数据之间&#xff0c;通过一些设计 &#xff0c;将大量数据变成一张张像excel的数据表数据页&#xff1a;mysql将数据拆成一个一个的数据页索引&#xff1a;为每个页加入页号&#xff0c;再为每行数据加入序号&#xff0c;这个序号就是所谓的主键。 将每个页的…

Nginx 502 Bad Gateway:从 upstream 日志到 FastCGI 超时复盘

Nginx 502 Bad Gateway&#xff1a;从 upstream 日志到 FastCGI 超时复盘 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般绚烂的技术栈中&#xff0c;我是那个永不停歇的色彩收集者。 &#x1f98b; 每一个优化都是我培育的花朵&#xff0c;每一…

Dreamore AI-解读并描绘你的梦境

本文转载自&#xff1a;Dreamore AI-解读并描绘你的梦境 - Hello123工具导航 ** 一、&#x1f319; 初识 Dreamore AI&#xff1a;你的智能梦境伴侣 Dreamore AI 是一款超有趣的AI 梦境解析与可视化工具&#xff0c;它巧妙地把梦境解读和图像生成这两大功能融为一体。你只需要…

集合-单列集合(Collection)

List系列集合&#xff1a;添加的元素是有序、可重复、有索引的。Set系列集合&#xff1a;添加的元素是无序、不重复、无索引的。代码&#xff1a;public class A01_CollectionDemo1 {public static void main(String[] args) {/** 注意点&#xff1a;Collection是一个接口&…

写一个 RTX 5080 上的 cuda gemm fp16

1. cpu 计算 fp16 四则运算由于会用到cpu 的gemm 与 gpu gemm 的对比验证&#xff0c;所以&#xff0c;这里稍微解释一下 cpu 计算fp16 gemm 的过程。这里为了简化理解&#xff0c;cpu 中不使用 avx 相关的 fp16 运算器&#xff0c;而是直接使用 cpu 原先的 ALU 功能。这里使用…

web渗透PHP反序列化漏洞

web渗透PHP反序列化漏洞1&#xff09;PHP反序列化漏洞反序列我们可以控制对象中的值进行攻击O:1:"C":1:{s:3:"cmd";s:8:"ipconfig";}http://127.0.0.1/1.php?xO:1:%22C%22:1:{s:3:%22cmd%22;s:3:%22ver%22;}常见的反序列化魔术方法&#xff1a;…

FPGA学习笔记——SPI读写FLASH

目录 一、任务 二、需求分析 三、Visio图 四、具体分析 五、IP核配置 六、代码 七、实验现象 一、任务 实验任务&#xff1a; 1.按下按键key1&#xff0c;开启读ID操作&#xff0c;将读出来的ID&#xff0c;通过串口发送至PC端显示&#xff0c;显示格式为“读ID:XX-XX-XX…

一句话PHP木马——Web渗透测试中的隐形杀手

文章目录前言什么是"一句话木马"&#xff1f;常见变种与隐藏技巧1. 函数变种2. 加密混淆3. 变量拆分4. 特殊字符编码上传技巧与绕过防御常见上传绕过技巧检测与防御措施1. 服务器配置2. 上传验证3. 代码审计4. Web应用防火墙(WAF)实战案例分析深度思考&#xff1a;安…

房屋租赁系统|基于SpringBoot和Vue的房屋租赁系统(源码+数据库+文档)

项目介绍 : SpringbootMavenMybatis PlusVue Element UIMysql 开发的前后端分离的房屋租赁系统&#xff0c;项目分为管理端和用户端以及房主端 项目演示: 基于SpringBoot和Vue的房屋租赁系统 运行环境: 最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上…