python学习笔记----循环语句(四)

一、while循环

为什么学习循环语句

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

在这里插入图片描述

1.1 while循环语法

while 条件表达式:
    # 循环体
    # 执行代码

  • 这里,“条件表达式”是每次循环开始前都会评估的表达式。如果条件表达式的结果为 True,则执行“循环体”中的代码;如果为 False,则退出循环。

例子:

# 从1加到100总和
i = 1
num = 0
while i <= 100:
    num += i
    i += 1
print(num)

1.2 while循环的嵌套

语法:

while 外部条件:
    # 外部循环体
    while 内部条件:
        # 内部循环体

补充知识:

  • 在 Python 中,print 函数默认在每次调用后会添加一个换行符,导致每个 print 输出都从新的一行开始。如果你想让 print 函数在输出时不自动换行,可以通过设置 print 函数的 end 参数来实现。

  • end 参数默认值是 ‘\n’,即换行符。你可以将其设置为其他字符串,比如空字符串 " ",以避免在输出后添加换行。

示例:
在这里插入图片描述

# 定义外层循环的控制变量
i = 1
while i <= 9:
    # 定义内层循环的控制变量
    j = 1
    while j <= i:
        print(f"{j}*{i} = {j*i}\t",end="")
        j += 1

    i += 1
    print() # print空内容,就是输出一个换行





二、for循环

2.1 for循环基本语法

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

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

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

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4ac1f7de357344b58662c040b86e7552.png
语法:

for 变量 in 待处理数据集:
    # 执行的代码块

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

例子:

name = "zhangsan"
for x in name:
    # 将name的内容,逐个取出赋予x临时变量
    print(x)

for循环注意点

  • 同while循环不同,for循环是无法定义循环条件的。
  • 只能从被处理的数据集中,依次取出内容处理。
  • 所以理论上讲,python的for循环无法构建无限循环(被处理的数据集不可能无限大)

2.2 rang函数

在 Python 中,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]


2.3 continue和break

无论是while循环或者是for循环,都是重复性的执行特定操作。

在这个重复的过程中,会出现一些其他情况让我们不得不:

  • 暂时跳过某次循环,直接进行下一次。
  • 提前退出循环,不再继续

对于这种场景,python提供continue和break关键字,用来对循环进行临时跳过直接结束

2.3.1 continue

continue关键字用于:中断本次循环,直接进入下一次循环
continue可以用于:for循环和while循环,效果一致

在这里插入图片描述

2.3.2 continue 在嵌套循环中的应用

在这里插入图片描述

2.3.3 break

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

2.3.4 break在嵌套循环中的应用

在这里插入图片描述

三、生成随机数

在 Python 中生成随机数可以通过使用标准库中的 random 模块来实现。这个模块提供了多种函数,可以用来生成随机数和执行其他随机相关的操作。以下是一些常用的方法来生成不同类型的随机数:

3.1 生成随机整数

  • random.randint(a, b):返回一个介于 a 和 b 之间的随机整数(包含 a 和 b)
import random
print(random.randint(1, 10))  # 输出 1 到 10 之间的一个随机整数

  • `range(start, stop, step)``:从指定范围内,按指定基数递增的集合中获取一个随机数。
import random
print(random.randrange(0, 101, 5))  # 输出 0 到 100 之间的一个随机数,步长为 5

3.2 生成随机浮点数

  • random.random():生成一个 0 到 1 之间的随机浮点数,0 可以取到,但 1 取不到。
import random
print(random.random())  # 输出 0 到 1 之间的随机浮点数
  • random.uniform(a, b):生成一个指定范围内的随机浮点数,范围是 [a, b](包括 a 和 b)
import random
print(random.uniform(1.5, 10.5))  # 输出 1.5 到 10.5 之间的一个随机浮点数

3.3 设置随机种子

  • random.seed(a=None):初始化随机数生成器的内部状态。给定相同的种子,随机数生成器的序列将是可重复的。
import random
random.seed(1)  # 设置种子
print(random.randint(1, 100))  # 每次运行代码时,给定相同种子,输出将相同

3.3.1 什么是随机数种子?

随机数种子在生成随机数的过程中起到一个非常重要的作用。它是用于初始化随机数生成算法(伪随机数生成器)的初始值。

随机数种子的作用

  • 可重复性:当你使用特定的种子值初始化随机数生成器时,即使在不同的运行环境或不同时间,生成的随机数序列都将是相同的。这对于调试和测试非常重要,因为它允许程序的行为在使用随机数时保持一致。
  • 控制随机性:种子提供了一种方法来控制随机数生成过程。通过改变种子,你可以获得不同的随机数序列,这对于模拟和其他需要随机输入的应用非常有用。

3.3.2 为什么要设置随机数种子?

  • 如果你需要确保你的代码在每次运行时都产生相同的结果(例如,当你运行模拟或生成数据用于演示时),你应该设置一个固定的种子。
  • 在科学研究或开发中,固定随机种子有助于保证结果的可重复性,这样其他人可以准确复现你的结果。
  • 不设置种子时,随机数生成器通常会以系统时间或其他变化的环境变量为基础来生成种子。这意味着每次运行代码时,生成的随机数序列都会不同。
  • 在许多应用中,特别是在生产环境中,希望每次运行都能产生不可预测的随机结果,例如在在线游戏中生成随机事件或在安全应用中生成加密密钥。
import random

random.seed(10)  # 使用种子10
print(random.randint(1, 100))  # 产生一个固定的随机数

random.seed(10)  # 再次使用相同的种子10
print(random.randint(1, 100))  # 将产生同样的随机数

random.seed()  # 不提供种子或提供None,将使用系统时间或其他方法来生成种子
print(random.randint(1, 100))  # 每次运行可能都不同

四、综合练习案例

在这里插入图片描述

"""
演示循环综合案例:发工资
"""
import random
# 定义账户余额
money = 10000
# for循环对员工发放工资
for i in range(1, 21):
    score = random.randint(1, 10)
    if score < 5:
        print(f"员工{i} 绩效分{score},不满足,不发工资,下一位")
        # continue 跳过发放
        continue

    # 要判断余额足不足
    if money >= 1000:
        money -= 1000
        print(f"员工{i}, 满足条件发放工资1000,公司账户余额{money}")
    else:
        print(f"余额不足,当前余额:{money}元,不足以发工资,不发了,下个月再来")
        break

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

张大哥笔记:我付钱了,我就是大爷?

很抱歉用这个当做标题&#xff0c;来给大家分享一些电商的故事&#xff01;大家好&#xff0c;我是张大哥&#xff0c;今天聊聊在电商路上遇到过的奇葩买家&#xff1f; 比如最近我在做PDD的时候&#xff0c;就会遇到很多莫名其妙的sha子&#xff0c;咱是知识份子&#xff0c;肯…

漏洞扫扫工具合集

综合类扫描工具 AWVS Acunetix一款商业的Web漏洞扫描程序&#xff0c;它可以检查Web应用程序中的漏洞&#xff0c;如SQL注入、跨站脚本攻击、身份验证页上的弱口令长度等。它拥有一个操作方便的图形用户界面&#xff0c;并且能够创建专业级的Web站点安全审核报告。新版本集成了…

LeetCode1017题:负二进制转换(原创)

【题目描述】 给你一个整数 n &#xff0c;以二进制字符串的形式返回该整数的 负二进制&#xff08;base -2&#xff09;表示。注意&#xff0c;除非字符串就是 "0"&#xff0c;否则返回的字符串中不能含有前导零。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&…

高频面试题:解决Spring框架中的循环依赖问题

引言&#xff1a;什么是Spring框架与循环依赖&#xff1f; 在Spring框架中&#xff0c;循环依赖是指两个或多个bean相互依赖对方以完成自己的初始化。这种依赖关系形成了一个闭环&#xff0c;导致无法顺利完成依赖注入。比如&#xff0c;如果Bean A在其构造函数中需要Bean B&a…

图像处理:乘法滤波器(Multiplying Filter)和逆FFT位移

一、乘法滤波器&#xff08;Multiplying Filter&#xff09; 乘法滤波器是一种以像素值为权重的滤波器&#xff0c;它通过将滤波器的权重与图像的像素值相乘&#xff0c;来获得滤波后的像素值。具体地&#xff0c;假设乘法滤波器的权重为h(i,j)&#xff0c;图像的像素值为f(m,…

基于51单片机的电子秤LCD1602液晶显示( proteus仿真+程序+设计报告+讲解视频)

基于51单片机电子秤LCD显示 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真设计4. 程序代码5. 设计报告6. 设计资料内容清单&&下载链接 基于51单片机电子秤LCD显示( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus8.9及以上 程序编译器&#xf…

NiceGUI:一个超赞的Python UI库

1. 引言 NiceGUI是一个基于Python的简单用户界面框架&#xff0c;可与浏览器或桌面应用程序流畅运行。无论你是制作小型网络应用程序、还是玩机器人项目&#xff0c;NiceGUI 都能以其简单的界面和众多的功能满足你的需求。这篇文章的目的是通过向大家展示如何构建和部署NiceGU…

如何选择适合自己需求的DC电源模块?

BOSHIDA 如何选择适合自己需求的DC电源模块&#xff1f; 在选择适合自己需求的DC电源模块时&#xff0c;需要考虑一些关键因素&#xff0c;以确保选择的模块能够满足电源要求并具有良好的性能。下面是一些值得考虑的因素&#xff1a; 1. 电压输出范围&#xff1a;首先&#xf…

短视频素材从哪里获取?推荐8个短视频素材高清网站

在这个视觉内容至关重要的数字化时代&#xff0c;高质量的视频素材是任何成功视频项目的核心。无论是加强品牌宣传、提升社交媒体互动还是制作引人注目的广告&#xff0c;这些精选的全球视频素材网站都将为你的创意注入活力&#xff0c;帮助你在激烈的市场竞争中脱颖而出。 1.…

2024LarkXR新增功能系列之六 | ⽀持8K分辨率

Paraverse平行云企业级实时云渲染解决方案LarkXR是平行云自主研发的CloudXR解决方案&#xff0c;在业界实现了创新突破。通过分钟级部署大规模云端资源、高度适配XR所有主流引擎、以及灵活支持不同交互和沉浸方式的内容形式&#xff0c;LarkXR解决了Cloud XR商业化过程中所面临…

Linux之进程间通信(二)

system V system V共享内存是内核中专门设计的通信的方式, 粗粒度划分操作系统分为进程管理, 内存管理, 文件系统, 驱动管理.., 粒度更细地分还有 进程间通信模块. 对于操作系统, 通信的场景有很多, 有以传送数据, 快速传送数据, 传送特定数据块, 进程间协同与控制以目的, 它…

SystemUI GlobalActions plugin解析

com.android.systemui.action.PLUGIN_GLOBAL_ACTIONS 系统的默认实现为GlobalActionsImpl: 是谁发送了showShutdownUi指令&#xff1f; GlobalActionsImpl 是通过inject的方式创建的 GlobalActionsComponent是一个system UI services&#xff0c;配置在config.xml中&#xff…

Docker容器:网络模式与资源控制

目录 一、Docker 网络模式 1、Docker 网络实现原理 2、Docker 网络模式概述 2.1 Host 模式 2.2 Container 模式 2.3 None 模式 2.4 Bridge 模式 2.5 自定义网络&#xff08;user-defined network&#xff09; 3、配置 docker 网络模式 3.1 查看网络基础命令 3.1.1 查…

“怡宝”冲刺港股,饮用水基本盘稳如磐石

最近&#xff0c;饮用水市场异常热闹。 先是“怡宝”所属的华润饮料正式向港交所提交上市申请。随即&#xff0c;多名农夫山泉员工在朋友圈发文“推出绿瓶纯净水”&#xff0c;撞脸怡宝经典包装。“怡宝”遭遇奇袭的背后&#xff0c;是双方持续“交锋”的多年&#xff0c;随着…

Vue从入门到精通-01-Vue的介绍和vue-cli

MVVM模式 Model&#xff1a;负责数据存储 View&#xff1a;负责页面展示 View Model&#xff1a;负责业务逻辑处理&#xff08;比如Ajax请求等&#xff09;&#xff0c;对数据进行加工后交给视图展示 关于框架 为什么要学习流行框架 1、企业为了提高开发效率&#xff1a;…

【Harmony3.1/4.0】笔记三-计算器

概念 网格布局是由“行”和“列”分割的单元格所组成&#xff0c;通过指定“项目”所在的单元格做出各种各样的布局。网格布局具有较强的页面均分能力&#xff0c;子组件占比控制能力&#xff0c;是一种重要自适应布局&#xff0c;其使用场景有九宫格图片展示、日历、计算器等…

python-pytorch 如何使用python库Netron查看模型结构(以pytorch官网模型为例)0.9.2

Netron查看模型结构 参照模型安装Netron写netron代码运行查看结果需要关注的地方 2024年4月27日14:32:30----0.9.2 参照模型 以pytorch官网的tutorial为观察对象&#xff0c;链接是https://pytorch.org/tutorials/intermediate/char_rnn_classification_tutorial.html 模型代…

基于Springboot的新生宿舍管理系统

基于SpringbootVue的新生宿舍管理系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 公告信息管理 院系管理 班级管理 学生管理 宿舍信息管理 宿舍安排管理…

清华军团推出中国首个对标Sora的视频大模型Vidu,扒一扒它背后的模型架构

就在前天&#xff0c;Vidu 在 2024 中关村论坛年会之中横空出世。 伴随着“中国首个”&#xff0c;“Sora 级视频模型”&#xff0c;“模拟真实的物理世界”等关键词下的刷屏式的报道&#xff0c;Vidu 一下成为国产视频模型的一剂强心针。 尽管目前 Vidu 支持的视频长度是 16 …

二叉树理论和题目

二叉树的种类 在我们解题过程中二叉树有两种主要的形&#xff1a;满二叉树和完全二叉树。 满二叉树 满二叉树&#xff1a;如果一棵二叉树只有度为0的结点和度为 2 的结点&#xff0c;并且度为 0 的结点在同一层上&#xff0c;则这棵二叉树为满二叉树。 这棵二叉树为满二叉树…