Python学习路线 - Python语言基础入门 - 循环语句

Python学习路线 - Python语言基础入门 - 循环语句

    • 前言
      • 为什么学习循环语句
    • while循环的基础语法
      • while循环语句
      • while循环注意点
    • while循环的基础案例
    • while循环的嵌套应用
      • while循环的嵌套
    • while循环的嵌套案例
      • 补充知识 - print输出不换行
      • 补充知识 - 制表符\t
      • 练习案例 - 打印九九乘法表
    • for循环的基础语法
      • 基础语法
      • range语句
      • 变量作用域
      • for循环临时变量作用域
    • for循环的嵌套应用
    • 循环中断:break和continue
      • continue
      • continue在嵌套循环中的应用
      • break
      • break在嵌套循环中的应用
    • 综合案例

前言

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

在这里插入图片描述

为什么学习循环语句

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

在这里插入图片描述

在这里插入图片描述

while循环的基础语法

while循环语句

在这里插入图片描述

代码示例:

"""
演示while循环的基础应用
"""
i = 0
while i < 100:print("好好学习,天天向上")i += 1

while循环注意点

1.while的条件需得到布尔类型,True表示继续循环,False表示结束循环
2.需要设置循环终止的条件,如i += 1配合 i < 100,就能确保100次后停止,否则将无限循环
3.空格缩进和if判断一样,都需要设置

while循环的基础案例

练习案例:求1-100的和

需求:通过while循环,计算从1累加到100的和

提示:
1.终止条件不要忘记,设置为确保while循环100次
2.确保累加的数字,从1开始,到100结束

"""
演示while循环基础练习题:求1-100的和
"""sum = 0
i = 1
while i <= 100:# sum += isum = sum + ii += 1print(f"1-100累加的和是:{sum}")

在这里插入图片描述

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

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

  • 每一次猜不中,会提示大了或小了

  • 猜完数字后,提示猜了几次

  • 提示:

  • 无限次机会,终止条件不适合用数字累加来判断

    • 可以考虑布尔类型本身(True or False)
  • 需要提示几次猜中,就需要提供数字累加功能

  • 随机数可以使用:
    import random
    num = random.randint(1,100)

在这里插入图片描述

代码示例:

"""
演示while循环的基础案例 -  猜数字
"""
# 获取范围在1-100的随机数字
import random
num = random.randint(1,100)# 通过一个布尔类型的变量,做循环是否继续的标记
flag = True# 定义一个变量,记录总共猜测了多少次
count = 0while flag:guess_num = int(input("请输入你猜测的数字:"))if num == guess_num:print("猜中了")flag = Falseelse:if num > guess_num:print("你猜的数小了")else:print("你猜的数大了")count += 1
print(f"你总共猜测了{count}次")

在这里插入图片描述

while循环的嵌套应用

while循环的嵌套

在这里插入图片描述

代码示例:

"""
演示while循环的嵌套使用
"""# 外层:表白100天得到控制
# 内层:每天的表白都送10只玫瑰花的控制i = 1
while i <= 100:print(f"今天是第{i}天,准备表白......")# 内层循环的控制变量j = 1while j <= 10:print(f"送给小美第{j}只玫瑰花")j += 1print("小美,我喜欢你")i += 1print(f"坚持到第{i-1}天,表白成功。")

注意点

  • 同判断语句的嵌套一样,循环语句的嵌套,要注意空格缩进。
    • 基于空格缩进来决定层次关系
  • 注意条件的设置,避免出现无限循环(除非真的需要无限循环)

while循环的嵌套案例

补充知识 - print输出不换行

默认print语句输出内容会自动换行,如下图:
在这里插入图片描述

在即将完成的案例中,我们需要使用print语句,输出不换行的功能,非常简单,实现方式如下:
在这里插入图片描述

如上图,在print语句中,加上end=''即可输出不换行了

补充知识 - 制表符\t

在字符串中,有一个特殊符号:\t,效果等同于在键盘上按下:tab键。
它可以让我们的多行字符串进行对齐。

比如:

print("Hello World")
print("Mry best")print("Hello\tWorld")
print("Mry123\tbest")

在这里插入图片描述

练习案例 - 打印九九乘法表

通过while循环,输出如下九九乘法表内容
在这里插入图片描述

"""
演示使用while的嵌套循环
打印输出九九乘法表
"""# 定义外层循环的控制变量
i = 1
while i <= 9:# 定义内层循环的控制变量j = 1while j <= i:print(f"{j} * {i} = {i*j}\t",end='')j += 1print("")i += 1

for循环的基础语法

基础语法

for循环
除了while循环语句外,Python同样提供了for循环语句。
两者能完成的功能基本差不多,但仍有一些区别:

  • while循环的循环条件是自定义的,自行控制循环条件
  • for循环是一种"轮询"机制,是对一批内容进行"逐个处理"

在这里插入图片描述

for循环语句
在这里插入图片描述
代码示例:

"""
演示for循环的基础语法
"""name = "haohaoxuexi"for x in name:# 将name的内容,挨个取出赋予x零时变量# 就可在循环体内对x进行处理print(x)

可以看出,for循环是将字符串的内容:依次取出
所以,for循环也被称之为:遍历循环

注意点
同while循环不同,for循环是无法定义循环条件的。
只能从被处理的数据集中,依次取出内容进行处理。

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

练习案例:数一数有几个a

定义字符串变量name,内容为:“mry is a brand of China”
通过for循环,遍历此字符串,统计有多少个英文字母:“a”
在这里插入图片描述
提示:
1.计数可以在循环外定义一个整数类型变量用来做累加计数
2.判断是否为字母"a",可以通过if语句结合比较运算符来完成

"""
演示for循环的练习题:数一数有几个a
"""# 统计如下字符串中,有多少个字母a
name = "mry is a brand of China"# 定义一个变量,用来统计有多少个a
count = 0# for 循环统计
# for 临时变量 in 被统计的数据:
for x in name:if x == "a":count += 1print(f"被统计的字符串中有{count}个a")

range语句

在这里插入图片描述
语法中的:待处理数据集,严格来说,称之为:序列类型
序列类型指,其中内容可以一个个依次取出的一种类型,包括:

  • 字符串
  • 列表
  • 元组

  • 目前我们只学了字符串类型,其余类型在后续章节会详细学习它们

for循环语句,本质上是遍历:序列类型
尽管除字符串外,其它的序列类型目前没学习到,但是不妨碍我们通过学习range语句,获得一个简单的数字序列

语法1
range(num)
获取一个从0开始,到num结束的数字序列(不含num本身)
如range(5)取得的数据是:[0,1,2,3,4]

语法2
range(num1,num2)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
如,range(5,10)取得的数据是:[5,6,7,8,9]

语法3
range(num1,num2,step)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
数字之间的步长,以step为准(step默认为1)
如,range(5,10,2)取得的数据是:[5,7,9]

"""
演示Python中的range()语句的基本使用
"""# range语法1 range(num)
for x in range(10):print(x)# range 语法2 range(num1,num2)
for x in range(5,10):# 从5开始,到10结束(不包含10本身)的一个数字序列print(x)# range 语法3 range(num1,num2,step)
for x in range(5,10,2):# 从5开始,到10结束(不包含10本身)的一个数字序列,数字之间的间隔是2print(x)

练习案例:有几个偶数
定义一个数字变量num,内容随意
并使用range()语句,获取从1到num的序列,使用for循环遍历它。
在遍历的过程中,统计有多少偶数出现

提示:
1.序列可以使用:range(1, num)得到
2.偶数通过if来判断,判断数字余2是否为0即可

"""
演示1到100(不含100本身)范围内的偶数个数
"""count = 0
num = range(1,100)
for x in num:if x % 2 == 0:count += 1print(f"1到100(不含100本身)范围内,有{count}个偶数")

在这里插入图片描述

变量作用域

在这里插入图片描述

如图代码,思考一下:
红框中的print语句,能否访问到变量 i ?
在这里插入图片描述

for循环临时变量作用域

for 临时变量 in 待处理数据集:
循环满足条件时执行的代码

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

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

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

  • 实际上是可以访问到的
  • 在编程规范上,是不允许、不建议这么做的

代码示例:

"""
演示Python for循环临时变量的作用域
"""for i in range(5):print(i)print(i)

在这里插入图片描述

如果实在需要在循环外访问循环内的临时变量,可以在循环外预先定义:
在这里插入图片描述
如图,每一次循环的时候,都会将取出的值赋予i变量。

  • 由于i变量是在循环之前(外)定义
  • 在循环外访问i变量是合理的、允许的

注意点:
1.for循环中的临时变量,其作用域限定为:
循环内
2.这种限定:

  • 是编程规范的限定,而非强制限定
  • 不遵守也能正常运行,但是不建议这样做
  • 如需访问临时变量,可以预先在循环外定义它

for循环的嵌套应用

在这里插入图片描述

代码示例:

"""
演示嵌套应用for循环
"""# 坚持表白100天,每天都送10朵花
# range
i = 0
for i in range(1,101):print(f"今天是向小美表白的第{i}天,加油坚持。")# 写内层的循环了for j in range(1, 11):print(f"给小美送的第{j}朵玫瑰花")print("小美我喜欢你")print(f"第{i}天,表白成功")

注意点:
如图,和while循环一样,需要注意缩进
因为通过缩进,确定层次关系

总结:
1.for循环的嵌套语法:
见下图:
在这里插入图片描述

2.注意事项:

  • 需要注意缩进,嵌套for循环同样通过缩进确定层次关系
  • for循环和while循环可以相互嵌套使用

练习案例-for循环打印九九乘法表

通过for循环,输出如下九九乘法表内容
在这里插入图片描述

代码示例:

"""
演示for循环打印九九乘法表
"""# 通过外层循环控制行数
for i in range(1,10):# 通过内层循环控制每一行的数据for j in range(1,i+1):# 在内层循环中输出每一行的内容print(f"{j} * {i} = {j * i}\t", end='')# 外层循环可以通过print输出一个回车符print()

循环中断:break和continue

continue

continue关键字用于:中断本次循环,直接进入下一次循环
continue可以用于:for循环和while循环效果一致
在这里插入图片描述

代码演示:

# 演示循环中断语句 continue
for i in range(1,6):print("语句1")continueprint("语句2")

在这里插入图片描述

continue在嵌套循环中的应用

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

# 演示continue的嵌套应用
for i in range(1,6):print("语句1")for j in range(1,6):print("语句2")continueprint("语句3")print("语句4")

输出结果:

D:\work\pythonProject\venv\Scripts\python.exe D:\work\pythonProject\03_循环中断.py 
语句1
语句2
语句2
语句2
语句2
语句2
语句4
语句1
语句2
语句2
语句2
语句2
语句2
语句4
语句1
语句2
语句2
语句2
语句2
语句2
语句4
语句1
语句2
语句2
语句2
语句2
语句2
语句4
语句1
语句2
语句2
语句2
语句2
语句2
语句4Process finished with exit code 0

break

break关键字用于:直接结束循环
break可以用于:for循环和while循环,效果一致
在这里插入图片描述

代码演示:

# 演示循环中断语句 break
for i in range(1, 101):print("语句1")breakprint("语句2")print("语句3")

在这里插入图片描述

break在嵌套循环中的应用

break关键字同样只可以控制:它所在的循环结束

代码演示:

# 演示break的嵌套应用
for i in range(1,6):print("语句1")for j in range(1,6):print("语句2")breakprint("语句3")print("语句4")

结果输出:

D:\work\pythonProject\venv\Scripts\python.exe D:\work\pythonProject\03_循环中断.py 
语句1
语句2
语句4
语句1
语句2
语句4
语句1
语句2
语句4
语句1
语句2
语句4
语句1
语句2
语句4Process finished with exit code 0

总结
1.continue的作用是:
中断所在循环的当次执行,直接进入下一次
2.break的作用是:
直接结束所在的循环
3.注意事项:

  • continue和break,在for和while循环中作用一致
  • 在嵌套循环中,只能作用在所在的循环上,无法对上层循环起作用

综合案例

练习案例:发工资
某公司,账户余额有1W元,给20名员工发工资。
-员工编号从1到20,从编号1开始,依次领取工资,每人可领取1000元
-领工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5,不发工资,换下一位

  • 如果工资发完了,结束发工资。

提示:

  • continue用于跳过员工,break直接结束发工资
  • if判断余额,不要忘记发完工资后,余额减少1000哦

代码演示:

"""
演示循环综合案例:发工资
"""
import random
# 定义账户余额变量
money = 10000
# for循环对员工发放工资
for num in range(1,21):score = random.randint(1,10)# 判断余额足不足if money >= 1000:if score < 5:print(f"员工{num},绩效分{score},低于5,下一位")# continue跳过发放continueelse:money -= 1000print(f"向员工{num}发放工资1000元,账户余额还剩余{money}元")else:print("工资发完了,下个月领取吧。")# break结束发放break

结果输出:

D:\work\pythonProject\venv\Scripts\python.exe D:\work\pythonProject\04.py 
员工1,绩效分1,低于5,下一位
向员工2发放工资1000元,账户余额还剩余9000元
向员工3发放工资1000元,账户余额还剩余8000元
员工4,绩效分2,低于5,下一位
向员工5发放工资1000元,账户余额还剩余7000元
向员工6发放工资1000元,账户余额还剩余6000元
向员工7发放工资1000元,账户余额还剩余5000元
向员工8发放工资1000元,账户余额还剩余4000元
员工9,绩效分1,低于5,下一位
员工10,绩效分4,低于5,下一位
员工11,绩效分4,低于5,下一位
员工12,绩效分4,低于5,下一位
向员工13发放工资1000元,账户余额还剩余3000元
向员工14发放工资1000元,账户余额还剩余2000元
员工15,绩效分4,低于5,下一位
向员工16发放工资1000元,账户余额还剩余1000元
向员工17发放工资1000元,账户余额还剩余0元
工资发完了,下个月领取吧。Process finished with exit code 0

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

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

相关文章

创建dockerSwarm nfs挂载

创建dockerSwarm nfs挂载 nfs高可用部署(lsyncd两主机双向同步) nfs高可用部署(lsyncd三主机三向同步) 1. 通过 Volume 1.1 创建 Docker Volume 每个 swarm 节点均创建相同名称的 Docker Volume&#xff08;名称为 nfs120&#xff09; docker volume create --driver local …

外贸找客户软件工具:BotMaster 18.5 Crack

BotMaster 拓展您的业务大师增加销量Whatsapp营销&#xff0c;使用 BotMaster 将您的业务提升到新的水平 - 最强大的 WhatsApp 营销软件&#xff0c;可促进销售和发展您的业务。 BotMaster 是一款革命性的 WhatsApp 营销工具&#xff0c;于 2022 年 1 月推出。这款功能强大的工…

10 大 Mac 数据恢复软件深度评测

对于任何依赖计算机获取重要文件&#xff08;无论是个人照片还是重要商业文档&#xff09;的人来说&#xff0c;数据丢失可能是一场噩梦。值得庆幸的是&#xff0c;有多种专门为 Mac 用户提供的数据恢复工具&#xff0c;可以帮助检索丢失或意外删除的文件。在本文中&#xff0c…

HNU计算机体系结构-实验3:多cache一致性算法

文章目录 实验3 多cache一致性算法一、实验目的二、实验说明三 实验内容1、cache一致性算法-监听法模拟2、cache一致性算法-目录法模拟 四、思考题五、实验总结 实验3 多cache一致性算法 一、实验目的 熟悉cache一致性模拟器&#xff08;监听法和目录法&#xff09;的使用&am…

Spring Security 6.x 系列(10)—— SecurityConfigurer 配置器及其分支实现源码分析(二)

一、前言 在本系列文章&#xff1a; Spring Security 6.x 系列&#xff08;4&#xff09;—— 基于过滤器链的源码分析&#xff08;一&#xff09; 中着重分析了Spring Security在Spring Boot自动配置、 DefaultSecurityFilterChain和FilterChainProxy 的构造过程。 Spring …

Oauth2.0 认证

目录 前言 1.介绍 2.Oauth2.0过程详解 3.Oauth 整合到 Spring Boot 实践 4.方法及配置详解&#xff1a; 总结 前言 Oauth2.0 是非常流行的网络授权表准&#xff0c;已经广泛应用在全球范围内&#xff0c;比较大的公司&#xff0c;如腾讯等都有大量的应用场景。 1.介绍 …

ARP欺骗攻击

一.大概原理 ARP&#xff1a;address solution protocol 地址解析协议 ARP是一种基于局域网的TCP/IP协议&#xff0c;arp欺骗就是基于此协议的漏洞来达成我们的目的的&#xff0c;局域网中的数据传输并不是用ip地址传输的&#xff0c;而是靠mac地址。 我们如果出于某种目的想…

【Fastadmin】利用 build_select 做一个树状下拉选择框

1.效果展示 系统crud生成的下拉分类有些不是很好看&#xff0c;并且选择困难&#xff0c;看不出级差&#xff0c;效果如下&#xff1a; 经过 build_select 加工后的效果,美观好看&#xff0c;并添加上搜索功能: 2. 首先需要写一个树状图的数据格式 protected $datalist []; pu…

前沿科技与医药领域碰撞,《AI制药方法与实践》课程重磅上线

药物发现是生物学、化学、医学、药学等基础研究与工业转化的重要窗口。近年来&#xff0c;AI技术的发展&#xff0c;为高投入、高失败率的制药行业带来了全新机遇&#xff0c;或将彻底改变传统制药的研究范式。为了帮助更多人了解并掌握这一前沿技术&#xff0c;百度飞桨联合清…

LeedCode刷题---滑动窗口问题

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、长度最小的子数组 题目链接&#xff1a;长度最小的子数组 题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。…

uniapp各种小程序分享 share - 主要流程 - 微信、抖音、快手、qq

参考 小程序环境 分享 | uni-app官网uni-app,uniCloud,serverless,分享,uni.share(OBJECT),分享到微信聊天界面示例代码,分享到微信朋友圈示例代码,uni.share 在App端各社交平台分享配置说明,uni.shareWithSystem(OBJECT),plus.share.sendWithhttps://uniapp.dcloud.net.cn/a…

MCS-51系列与AT89C5x系列单片机的介绍与AT系列的命名规则

MCS-51系列与AT89C5x系列单片机 主要涉及MCS-51系列与AT89C5x系列单片机的介绍与AT系列单片机的命名规则 文章目录 MCS-51系列与AT89C5x系列单片机一、 MCS-51系列单片机二、AT89C5x系列单片机2.1 AT89C5x/AT89S5x系列单片机的特点2.2 AT89系列单片机的型号说明2.2.1 前缀2.2.2…

节省时间,提高效率:深入解析MyBatis Plus

1. MyBatis Plus 概述 将Mybatis 通用Mapper PageHelper 升级成 MyBatis Plus 1.1 简介 官网&#xff1a;https://baomidou.com/ 参考教程&#xff1a;https://baomidou.com/pages/24112f/ MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#…

QT之常用按钮组件

QT之常用按钮组件 导入图标 布局 显示选中 实验结果 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }void Widget::on_push…

mybatis 的快速入门以及基于spring boot整合mybatis(一)

MyBatis基础 MyBatis是一款非常优秀的持久层框架&#xff0c;用于简化JDBC的开发 准备工作&#xff1a; 1&#xff0c;创建sprong boot工程&#xff0c;引入mybatis相关依赖2&#xff0c;准备数据库表User&#xff0c;实体类User3&#xff0c; 配置MyBatis&#xff08;在applic…

前端打包环境配置步骤

获取node安装包并解压 获取node安装包 wget https://npmmirror.com/mirrors/node/v16.14.0/node-v16.14.0-linux-x64.tar.xz 解压 tar -xvf node-v16.14.0-linux-x64.tar.xz 创建软链接 sudo ln -s 此文件夹的绝对路径/bin/node /usr/local/bin/node&#xff0c;具体执行如下…

实现手机扫码——扫描识别路由器参数

有个应用是批量自动检测无线路由器&#xff0c;检测前需要自动登录路由器的管理界面进行设置&#xff0c;如设置wifi参数、连接模式&#xff0c;或者恢复出厂设置等。进入管理界面的登录用户名是admin&#xff0c;密码则各不相同。此外也需要知道路由器的MAC地址&#xff0c;因…

【已解决】Win7虚拟机安装VMtools报错

在做以前的实验的时候发现要用到Win7虚拟机&#xff0c;于是就安装了一个Win7的虚拟机&#xff0c;但是发现屏幕太小&#xff0c;而且来回复制文本、复制文件太不方便了&#xff0c;索性就安装了VMtools&#xff0c;发现还安装不成– 情况1 报错&#xff1a;本程序需要您将此…

视频转场PR素材|专业级电影故障闪光效果视频过渡PR转场模板

这是一个以故障为主题的专业级电影故障闪光效果视频过渡pr转场模板。使用这些效果来增强视觉效果。包含视频教程。适用软件&#xff1a;Premiere Pro 2023|分辨率&#xff1a;38402160&#xff08;4K&#xff09; 来自PR模板网&#xff1a;https://prmuban.com/36092.html