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

news2024/11/26 23:49:43

一、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.coloradmin.cn/o/1631790.html

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

相关文章

【血泪教训】Altium Designer隐藏覆铜层导致PCB电路板未加工隐藏层

Altium Designer隐藏覆铜层导致PCB电路板未加工隐藏层 血泪教训&#xff01;&#xff01;&#xff01; 事情经过是这样的 测试板PCB Layout完成后&#xff0c;隐藏铺铜层&#xff0c;方便check&#xff0c;隐藏操作如下图所示&#xff0c;选择“隐藏所有”或“隐藏选中铺铜”…

Redis基本數據結構 ― String

Redis基本數據結構 ― String 介紹常用命令範例1. 為字串鍵設值/取得字串鍵的值2. 查看字串鍵的過期時間3. 如何為key設置時間?4. 如何刪除指定key?5. 如何增加value的值?6. 獲取value值的長度 介紹 字串鍵是Redis中最基本的鍵值對類型&#xff0c;這種類型的鍵值對會在數據…

【python技术】使用akshare抓取东方财富所有概念板块,并把指定板块概念的成分股保存excel 简单示例

最近有个想法&#xff0c;分析A股某个概念成分股情况进行分析&#xff0c;第一反应是把对应概念板块的成分股爬取下来。说干就干 下面是简单示例 import akshare as ak import pandas as pddef fetch_and_save_concept_stocks(name):# 获取指定股票概念的成分股&#xff0c;并…

机器学习每周挑战——百思买数据

最近由于比赛&#xff0c;断更了好久&#xff0c;从五一开始不会再断更了。这个每周挑战我分析的较为简单&#xff0c;有兴趣的可以将数据集下载下来试着分析一下&#xff0c;又不会的我们可以讨论一下。 这是数据集&#xff1a; import pandas as pd import numpy as np impo…

Leetcode-面试题 02.02. 返回倒数第 k 个节点

目录 题目 图解 代码 面试题 02.02. 返回倒数第 k 个节点 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/description/ 题目 实现一种算法&#xff0c;找出单向链表中倒数第 k 个节点。返回该节点的值。 注意&…

保证接口幂等性的多种实现方式(数据库方案)

1. 幂等性的概念 接口幂等性是指在软件工程和Web服务领域中&#xff0c;一个接口&#xff08;通常是HTTP API&#xff09;无论被调用一次还是多次&#xff0c;其对系统产生的副作用应该是相同的&#xff0c;即结果保持一致&#xff0c;不会因为多次请求而有所不同。换句话说&am…

ES练习项目-酒店搜索

目录 1 需求分析2 酒店搜索和分页2.1 请求和响应分析2.2 定义实体类&#xff0c;接收请求参数的JSON对象2.3 编写controller&#xff0c;接收页面的请求2.4 编写业务实现&#xff0c;利用RestHighLevelClient实现搜索、分页 3. 酒店结果过滤3.1 请求和响应分析3.2 修改请求参数…

上位机图像处理和嵌入式模块部署(树莓派4b设置ftp下载)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 作为一个开发板&#xff0c;最好支持ftp下载&#xff0c;这样文件的上传和下载都会比较方便。虽然目前为止&#xff0c;利用mobaxterm和ssh也能实现…

算法学习(5)-图的遍历

目录 什么是深度和广度优先 图的深度优先遍历-城市地图 图的广度优先遍历-最少转机 什么是深度和广度优先 使用深度优先搜索来遍历这个图的过程具体是&#xff1a; 首先从一个未走到过的顶点作为起始顶点&#xff0c; 比如以1号顶点作为起点。沿1号顶点的边去尝试访问其它未…

用Jenkins实现cherry-pick多个未入库的gerrit编译Android固件

背景: 在做Android固件开发的时候,通常我们可以利用gerrit-trigger插件,开发者提交一笔的时候自动触发jenkins编译,如果提交的这一笔的编译依赖其他gerrit才能编译过,我们可以在commit message中加入特殊字段,让jenkins在编译此笔patch的时候同时抓取依赖的gerrit代码下…

selenium在Pycharm中结合python的基本使用、交互、无界面访问

下载 下载与浏览器匹配的浏览器驱动文件&#xff0c;这里一定注意的是&#xff0c;要选择和浏览器版本号相同的驱动程序&#xff0c;否则后面会有很多问题。 &#xff08;1&#xff09;浏览器&#xff08;以google为例&#xff09;版本号的查询&#xff1a; 我这里的版本号是1…

RT-Thread V5.2.0版本尝鲜

文章目录 配置界面的更新新旧内核生成的二进制文件大小差异旧版本V5.1.0内核旧版本V5.2.0内核 配置界面的更新 尝试将手头RT-Thread工程的OS部分源码进行了更新&#xff0c;发现不少新的变化 配置界面变得更醒目&#xff1a; 配置变更保存提醒界面更新&#xff1a; 新旧内核…

Android Widget开发代码示例详细说明

因为AppWidgetProvider扩展自BroadcastReceiver, 所以你不能保证回调函数完成调用后&#xff0c;AppWidgetProvider还在继续运行。 a. AppWidgetProvider 的实现 /*** Copyright(C):教育电子有限公司 * Project Name: NineSync* Filename: SynWidgetProvider.java * Author(S…

【Node.js工程师养成计划】之原生node开发web服务器

一、使用node创建http服务器 var http require(http);// 获取到服务器实例对象 var server http.createServer() server.listen(8080, function() {console.log(http://127.0.0.1:8080); })server.on(request, function(req, res){console.log(request);res.write(6666666688…

VitePress 构建的博客如何部署到 github 平台?

VitePress 构建的博客如何部署到 github 平台&#xff1f; 1. 新建 github 项目 2. 构建 VitePress 项目 2.1. 设置 config 中的 base 由于我们的项目名称为 vite-press-demo&#xff0c;所以我们把 base 设置为 /vite-press-demo/&#xff0c;需注意前后 / export default…

【数据结构与算法(C语言)】1. 线性表的顺序存储

文章目录 前言一. 线性表插入和删除1. 元素的插入2. 元素的删除 二. 代码三. 优缺点 前言 线性表的顺序存储结构&#xff0c;指的是用一段地址连续的存储单元依次存储线性表的数据结构 一. 线性表插入和删除 1. 元素的插入 插入位置之后的数据都向后移一位&#xff0c;上图中元…

chrome 安装devtools

chrome 安装devtools 下载安装 链接&#xff1a;https://github.com/vuejs/devtools 选择对应版本&#xff1a; 安装yarn 下载 npm install -g yarn --registryhttps://registry.npmmirror.com进入下载的目录安装依赖 yarn install --registryhttps://registry.npmmirror.…

ASP.NET汽车销售管理系统的设计与开发

摘 要 随着人们生活水平的不断提高&#xff0c;人们对汽车的消费和需求也越来越旺盛。很多汽车销售公司的业务环节仍然运用人工记账的传统方法&#xff0c;既容易出错又会导致账目混乱&#xff0c;查询和统计起来也非常不方便&#xff0c;费时又费力&#xff0c;严重时会给公…

stm32单片机开发二、定时器-内部时钟中断和外部时钟中断、编码器

定时器本质就是一个计数器 案例&#xff1a;定时器定时中断 内部时钟中断 Timer_Init(); //定时中断初始化 /*** 函 数&#xff1a;定时中断初始化* 参 数&#xff1a;无* 返 回 值&#xff1a;无*/ void Timer_Init(void) {/*开启时钟*/RCC_APB1PeriphClockCmd(RCC…

CSS-复合选择器

作用&#xff1a; 后代选择器&#xff1a; 子代选择器 并集选择器 用逗号隔开&#xff0c;在style里面写的时候&#xff0c;每一个标签空一行。 <title>Document</title><style>p,div,span{color: aqua;}</style> </head> <body><p>…