Python之循环语句

循环普遍存在于日常生活中,同样,在程序中,循环功能也是至关重要的基础功能。

循环在程序中同判断一样,也是广泛存在的,是非常多功能实现的基础

while循环的基础语法

生活中的循环

程序中的循环

只要条件满足 会无限循环执行

如下程序:

i = 0
while i < 100:print("小美,我喜欢你")i += 1

1. while的条件需得到布尔类型,True表示继续循环,False表示结束循环

2. 需要设置循环终止的条件,如i += 1配合 i < 100,就能确保100次后停止,否则将无限循环

3. 空格缩进和if判断一样,都需要设置

同if语句一样,空格缩进不能忘,要制定好循环终止条件,否则将无限循环!

案例

接下来做一个小案例增加对前面if判断和while循环的熟练掌握:

案例要求:

设置一个范围1-50的随机整数变量,通过while循环,配合input语句,判断输入的数字是否等于随机数,

要求实现:

*猜数无限次机会,直到猜中为止

*若每次猜不中,会提示大了或小了

*猜完数字后,系统会提示总共猜了几次

随机数构建方法:

import random
num = random.randint(1, 50)

程序代码如下:

# 构建一个随机数字变量
import random
num = random.randint(1, 50)
print("欢迎来到猜数游戏,在下方输入你猜的数值范围(1~50)")
# 定义变量 记录总共猜测的次数
count = 0
# 通过while语句判断进行数字的猜测
flag = True
while flag:guess_num = int(input("输入你猜测的数:"))count +=1if guess_num == num:print("恭喜你猜中了!")# 循环的终止条件flag = Falseelse:if guess_num > num:print("猜的大了点哦~")else:print("猜的小了点哦~")
print(f"你总共猜了:{count}次!")

我来对这段代码做个解释:

  前四行看注释不再讲解,我们从程序第6行开始进入while循环 ,第五行的行为:flag = True   是为了实现让程序一直运行,因为要求:无限次机会,所以终止条件不适合用数字累加来判断,可以考虑布尔类型本身(True or False),

在正式进入while循环后:

运行效果:

while循环的嵌套

程序中的循环嵌套:

同判断语句的嵌套一样,循环语句的嵌套,要注意空格缩进。

基于空格缩进来决定层次关系

注意条件的设置,避免出现无限循环(除非真的需要无限循环)

案例

案例要求:

通过while循环,输出如下九九乘法表内容

根据案例要求我们可以使用2层循环,通过外层控制行,内层控制列

外层循环和内存循环的累加数字变量,用以辅助输出乘法表的数值

代码实现:

# 定义外层循环控制变量
i = 1
while i <= 9:# 定义内层循环控制变量j = 1while j <= i:# 内层循环的print语句,不需要换行,通过\t 制表符进行对其print(f"{j} * {i} = {j * i}\t", end='')j += 1i += 1print()  # print空内容,就是输出一个换行

print输出不换行

默认print语句输出内容会自动换行,但在print语句中,加上 end=’’ 即可输出不换行

制表符\t

在字符串中,有一个特殊符号:\t,效果等同于在键盘上按下:tab键。

它可以让我们的多行字符串进行对齐。

运行效果:

for循环的基础语法

基础语法

除了while循环语句外,Python同样提供了for循环语句。

两者能完成的功能基本差不多,但仍有一些区别:

1.while循环的循环条件是自定义的,自行控制循环条件

2.for循环是一种轮询机制,是对一批内容进行逐个处理

for循环就是将待办事项逐个完成的循环机制

程序中的for循环:

从待处理数据集中:逐个取出数据赋值给临时变量

for循环语句遍历字符串:

while循环不同,for循环是无法定义循环条件的。

只能从被处理的数据集中,依次取出内容进行处理。

所以,理论上讲,Pythonfor循环无法构建无限循环(被处理的数据集不可能无限大)

 for循环的注意点

for循环是无法定义循环条件的,只能被动取出数据处理,也需要注意,循环内的语句,同样需要有空格缩进

range语句

语法中的:待处理数据集,严格来说,称之为:可迭代类型

可迭代类型指,其内容可以一个个依次取出的一种类型,包括:字符串,列表,元组等

for循环语句,本质上是遍历:可迭代对象。

尽管除字符串外,其它可迭代类型目前没学习到,但不妨碍我们通过学习range语句,获得一个简单的数字序列(可迭代类型的一种)。

语法1:

获取一个从0开始,到num结束的数字序列(不含num本身)

range(5)取得的数据是:[0, 1, 2, 3, 4]

语法2:

获得一个从num1开始,到num2结束的数字序列(不含num2本身)

如,range(5, 10)取得的数据是:[5, 6, 7, 8, 9]

语法3 

 

获得一个从num1开始,到num2结束的数字序列(不含num2本身)

数字之间的步长,以step为准(step默认为1

如,range(5, 10, 2)取得的数据是:[5, 7, 9]

for循环遍历range序列

# for循环处理字符串
for i in range(5):print(i)

运行结果如下:

变量作用域

for循环的变量作用域

回看for循环的语法,我们会发现,将从数据集(序列)中取出的数据赋值给:临时变量

为什么是临时的呢?

临时变量,在编程规范上,作用范围(作用域),只限定在for循环内部

但如果在for循环外部访问临时变量:

实际上是可以访问到的

在编程规范上,是不允许、不建议这么做的 

如果实在需要在循环外访问循环内的临时变量,可以在循环外预先定义

如果实在需要在循环外访问循环内的临时变量,可以在循环外预先定义

如图,每一次循环的时候,都会将取出的值赋予i变量。

  由于i变量是在循环之前(外)定义

  在循环外访问i变量是合理的、允许的

如图,每一次循环的时候,都会将取出的值赋予i变量。

  由于i变量是在循环之前(外)定义

  在循环外访问i变量是合理的、允许的

for循环的嵌套

while一样,for循环也支持嵌套使用

以向小美表白的案例为例

坚持表白100

每天送花10 

表白100天,每一天都会送10朵玫瑰花

我们目前知道的2个循环,while循环和for循环。

这两类循环语句是可以相互嵌套的,如下,小美表白的案例可以改为:

需要注意缩进,嵌套for循环同样通过缩进确定层次关系

for循环和while循环可以相互嵌套使用

通过for循环,也可以输出如下九九乘法表内容:

 代码实现:

# 通过外层循环控制行数
for i in range(1, 10):# 通过内层循环控制每一行的数据for z in range(1, i + 1):# 在内存循环输出每一行的内容print(f"{z} * {i} = {z * i }\t", end='')# 外层循环通过print输出一个回车符print()

运行效果不再展示,可自行尝试

循环中断 : break和continue 

break

break关键字用于:直接结束所在循环

break可以用于:    for循环和while循环,效果一致

通过代码来模拟一下追求小美的过程。(for循环为例,while循环效果一样)

通过input输入语句,来决定今天小美的心情(0表示好心情,1表示坏心情)

break关键字同样只可以控制:它所在的循环永久中断

 

break只能控制上图内循环对外部循环,无影响

continue

continue关键字用于:中断本次循环,直接进入下一次循环

continue可以用于:    for循环和while循环,效果一致

通过代码来模拟一下追求小美的过程。(for循环为例,while循环效果一样)

通过input输入语句,来决定今天小美的心情(0表示好心情,1表示坏心情)

continue关键字只可以控制:它所在的循环临时中断 

continue只能控制上图编号1for循环,对编号2for循环,无影响

 

 

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

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

相关文章

【EI会议征稿】第四届生物信息学与智能计算国际学术研讨会(BIC 2024)

第四届生物信息学与智能计算国际学术研讨会&#xff08;BIC 2024&#xff09; 2024 4th International Conference on Bioinformatics and Intelligent Computing 2024年第四届生物信息学与智能计算国际学术研讨会 &#xff08;BIC 2024&#xff09;将定于2024年1月26-28日在…

循环神经网络 - RNN

循环神经网络&#xff08;Rerrent Neural Network,RNN&#xff09;是神经网络的一种&#xff0c;类似的还有深度神经网络&#xff08;DNN&#xff09;、卷积神经网路(CNN)、生成对抗网络&#xff08;GAN)等。**RNN对具有时序特性的数据非常有成效&#xff0c;他能挖掘数据中的时…

OSPF复习(2)

目录 一、LSA的头部 二、6种类型的LSA&#xff08;课堂演示&#xff09; 1、type1-LSA&#xff1a;----重要且复杂 2、type2-LSA&#xff1a; 3、type3-LSA&#xff1a; 4、type4-LSA&#xff1a; 5、type5-LSA&#xff1a; 6、type7-LSA&#xff1a; 三、OSPF的网络类…

【OpenCV实现图像:用Python生成图像特效,报错ValueError: too many values to unpack (expected 3)】

文章目录 概要读入图像改变单个通道黑白特效颜色反转将图像拆分成四个子部分 概要 Python是一种功能强大的编程语言&#xff0c;也是图像处理领域中常用的工具之一。通过使用Python的图像处理库&#xff08;例如Pillow、OpenCV等&#xff09;&#xff0c;开发者可以实现各种各…

Emscripten + CMakeLists.txt 将 C++ 项目编译成 WebAssembly(.wasm)/js,并编译 Html 测试

背景&#xff1a;Web 端需要使用已有的 C 库&#xff08;使用 CMake 编译&#xff09;&#xff0c;需要将 C 项目编译成 WebAssembly(.wasm) 供 js 调用。 上篇文章《Mac 上安装 Emscripten》 已讲解如何安装配置 Emscripten 环境。 本篇文章主要讲解如何将基于 CMakeLists 配…

SpringCloud(五) Eureka与Nacos的区别

SpringCloud(二) Eureka注册中心的使用-CSDN博客 SpringCloud(四) Nacos注册中心-CSDN博客 在这两篇博文中我们详细讲解了Eureka和Nacos分别作为微服务的注册中心的使用方法和注意事项,但是两者之间也有一些区别. 一, Nacos实例分类 Nacos实例分为两种类型: 临时实例:如果实例…

【QT】仿函数

函数调用运算符 () 也可以重载由于重载后使用的方式非常像函数的调用&#xff0c;因此称为仿函数仿函数没有固定写法&#xff0c;非常灵活 示例&#xff1a; #include <iostream> #include <string> using namespace std;class MyPrint { public://重载的运算符是…

【数据结构与算法】排序二叉树的创建节点的添加和删除(附代码实现与代码讲解)

首先来了解下排序二叉树的基本概念 排序二叉树&#xff1a;任意一个根节点&#xff0c;比他的左子树中的任意节点都大&#xff0c;比他的右子树中的任意节点都小 比如下面的这个树就是排序二叉树 OK&#xff0c;在了解了这个基本概念之后&#xff0c;就可以去看下面的代码了 …

【Linux】关于Nginx的详细使用,部署项目

前言&#xff1a; 今天小编给大家带来的是关于Nginx的详细使用&#xff0c;部署项目&#xff0c;希望可以给正在学习&#xff0c;工作的你带来有效的帮助&#xff01; 一&#xff0c;Nginx简介 Nginx是一个高性能的开源Web服务器和反向代理服务器。它最初由Igor Sysoev在2004年…

Linux开机、重启、关机和用户登录注销

1.【关机】 shutdown shutdown now 表示立即关机 shutdown -h now 表示立即关机 shutdown -h 1 表示1分钟后关机 halt 用来关闭正在运行的Linux操作系统 2.【重启】 shutdown -r now 表示立即重启 reboot 重启系统 sync …

OceanBase:01-单机部署(开发环境)

目录 一、体系架构 二、配置要求 三、解压安装包 四、执行安装 五、配置环境变量 六、快速部署 七、访问数据库 OceanBase 数据库&#xff08;OceanBase Database&#xff09;是一款蚂蚁集团完全自研的企业级原生分布式数据库&#xff0c;在普通硬件上实现金融级高可用&…

前端实验(一)单页面应用的创建

实验目的 掌握使用vite创建vue3单页面程序命令熟悉所创建程序的组织结构熟悉单页面程序运行原理能够编写简单的单页面程序 实验内容 创建一个名为vue-demo的单页面程序编写简单的单页面程序页面运行单页面程序 实验步骤 使用vite创建单页面程序 创建项目名为目录vue-demo的…

Linux入门指令和权限讲解

目录 一&#xff0c;Linux指令讲解 1. ls 指令&#xff08;查看文件&#xff09; 2. pwd命令&#xff08;展现当前工作目录&#xff09; 3. cd 指令&#xff08;改变当前所处工作目录&#xff09; 4. touch指令&#xff08;创建文件&#xff09; 5.mkdir指令&#xff08;创…

Java日志组件介绍之二

一、前言 Java日志组件介绍之一 主要介绍了JDK内置日志和Apache的common-logging通用日志接口&#xff0c;今天这篇我们继续了解Java其它一些日志组件。 二、slf4j slf4j即Simple Logging Facade for JAVA &#xff0c;简单日志门面&#xff0c;类似common-logging&#xff0…

2023最新ChatGPT商业运营系统源码+支持GPT4/支持ai绘画+支持Midjourney绘画

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

Mac上的iTerm2和Oh My Zsh 的安装(安装过程和失败详解)

前言&#xff08;无重点&#xff0c;安装往后看&#xff09; 由于在很多人的安利下&#xff0c;说很好用&#xff0c;作者今天花费了4个小时用血的教训总结出来的安装教程&#xff0c;我在安装过程中遇到的最大的问题就是 1. curl: (7) Failed to connect to raw.githubusercon…

由QTableView/QTableWidget显示进度条和按钮,理解qt代理delegate用法

背景&#xff1a; 我的最初应用场景&#xff0c;就是要在表格上用进度条显示数据&#xff0c;以及放一个按钮。 qt-creator中有自带的delegate示例可以参考&#xff0c;但终归自己动手还是需要理解细节&#xff0c;否则不能随心所欲。 自认没那个天赋&#xff0c;于是记录下…

JAVA 实现PDF转图片(spire.pdf.free版)

1.引入jar包 导入方法1&#xff1a; 手动引入。将Free Spire.PDF for Java下载到本地&#xff0c;解压&#xff0c;找到lib文件夹下的Spire.PDF.jar文件。在IDEA中打开如下界面&#xff0c;将本地路径中的jar文件引入Java程序&#xff1a; 导入方法2&#xff1a;如果您想通过…

Java设计模式之命令模式

目录 定义 结构 案例 优点 缺点 使用场景 JDK源码解析 Thread中start与run方法的区别 定义 将一个请求封装为一个对象&#xff0c;使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通&#xff0c;这样方便将命令对象进行存储、传递、调用、增…

Java调用HTTPS接口,绕过SSL认证

1&#xff1a;说明 网络编程中&#xff0c;HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是一种通过加密的方式在计算机网络上进行安全通信的协议。网络传输协议&#xff0c;跟http相比更安全&#xff0c;因为他加上了SSL/TLS协议来加密通信内容。 Java调…