Day 05 python学习笔记

news/2025/2/14 1:52:52/

循环

应用:循环轮播图 最基础、最核心

循环:周而复始,谓之循环   (为了代码尽量不要重复)

while循环

while的格式

索引定义

while 表达式(只要结果为布尔值即可):

                循环体

通过条件的不断变化,从而确定循环体是否继续执行

例:

死循环(无限循环)

while Ture:     (非0即为真)

           循环体    

循环中断

continue:终端本次循环,直接进入下一次循环

break:直接结束循环,遇见break,直接全部gameover

例:

输出0-100   

index = 0
while index <= 100:print(index)index += 1

让其在输出49后终止循环

index = 1
while index <= 100:if index == 50:break     #直接跳出循环print(index)index += 1index = 1
while index <= 100:    #continue会使代码回到这if index == 50:continue     #回到循环判断条件处print(index)index += 1      #本代码会输出0-49后卡住,因为陷入死循环index = 0
while index < 100:   #注意代码这边改为 < 无 =index += 1       #顺序改变,结果会输出0-49,51-100(无50)if index == 50:continue     print(index)   
print("循环结束")    #只会在最后执行一次(只有在while后且缩进的才归其管)

while……else

while condition:代码
else:代码

else后面的代码:当循环正常结束之后要执行的代码

例:
i = 1
while i <= 5:if i == 3:print('不真诚')i += 1break          #直接跳出循环包括elseprint('我错了,思密达~')i += 1
else:print('她原谅我了')    #不打印,循环未正常结束结果:
我错了,思密达~
我错了,思密达~
不真诚i = 1
while i <= 5:if i == 3:print('不真诚')i += 1continue        #循环继续进行,只暂停一次循环print('我错了,思密达~')i += 1
else:print('她原谅我了')结果:
我错了,思密达~
我错了,思密达~
不真诚
我错了,思密达~
我错了,思密达~
她原谅我了

只有代签执行完毕了,才会被原谅
中途break,else下边缩进的代码不会执行
中途continue,else下边缩进的代码执行

规划好条件
练习:求1-100的累加和(终止条件 1-100)

count = 0
index = 0
while index <= 100:count += indexindex += 1
print(count)结果:
5050

循环嵌套

举例:

坚持每天送10朵花100天,然后就可以表白成功

i = 1
while i <= 7:print(f"今天是第{i}天,准备表白思密达~")j = 1while j <= 10:print(f"送她第{j}朵花花")j += 1i += 1
print(f"坚持到{i-1}天表白成功")结果:
。。。
送她第9朵花花
送她第10朵花花
今天是第6天,准备表白思密达~
送她第1朵花花
送她第2朵花花
送她第3朵花花
送她第4朵花花
送她第5朵花花
送她第6朵花花
送她第7朵花花
送她第8朵花花
送她第9朵花花
送她第10朵花花
今天是第7天,准备表白思密达~
送她第1朵花花
送她第2朵花花
送她第3朵花花
送她第4朵花花
送她第5朵花花
送她第6朵花花
送她第7朵花花
送她第8朵花花
送她第9朵花花
送她第10朵花花
坚持到7天表白成功

内层添加break

i = 1
while i <= 7:print(f"今天是第{i}天,准备表白思密达~")j = 1while j <= 10:print(f"送她第{j}朵花花")if j == 2:break     #只结束包含break最近(里)的一个循环j += 1i += 1
print(f"坚持到{i-1}天表白成功")结果:   #外层循环不结束
今天是第1天,准备表白思密达~
送她第1朵花花
送她第2朵花花
今天是第2天,准备表白思密达~
送她第1朵花花
送她第2朵花花
今天是第3天,准备表白思密达~
送她第1朵花花
送她第2朵花花
今天是第4天,准备表白思密达~
送她第1朵花花
送她第2朵花花
今天是第5天,准备表白思密达~
送她第1朵花花
送她第2朵花花
今天是第6天,准备表白思密达~
送她第1朵花花
送她第2朵花花
今天是第7天,准备表白思密达~
送她第1朵花花
送她第2朵花花
坚持到7天表白成功

练习:

打印:

*
**
***
****
*****

i = 1
n = int(input("请输入打印的层数:"))
while i <= n:j = 1while j <= i:     #打印一行print("*", end="")   #end去除换行j += 1print()    #一行结束换行i += 1结果:
请输入打印的层数:5
*
**
***
****
*****

练习:

99乘法表

i = 1
while i <= 9:   #控制列数j = 1while j <= i:    #打印一行print(f"{i}*{j}={i*j}\t",end="" )   #\t水平制表符(相当于8个空格)j += 1                              #end取消换行i += 1print()结果:
1*1=1	
2*1=2	2*2=4	
3*1=3	3*2=6	3*3=9	
4*1=4	4*2=8	4*3=12	4*4=16	
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	
6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81	

for循环

基础语法:

for 临时变量 in 待处理数据集:

循环满足条件时执行的代码

轮询机制

对一批内容进行挨个处理---待办事项逐个完成的机制

 遍历循环,一次取出
无法定义循环条件,理论上,无法构建无限循环

迭代容器中每一个元素

例:
#while循环      缺点:不能对无索引下标的容器进行迭代(例:集合)
list = [3,4,5,6]
i = 0             #i作为索引下标
while i < len(list):print(list[i])i +=1#for遍历
for i in list:   #i为临时变量,从list中取出元素依次放入i中print(i)结果:
3
4
5
6
3
4
5
6例:
#for既能遍历有序的容器,也能遍历无须的
set_01 = {1,2,3,"l love you"}
for i in set_01:print(i)结果:
1
2
3
l love you

练习:

 ”l love you“ 判断是否有o几个

name = 'l love you'
count = 0
for i in name:if i == "o":count += 1
print(f"一共有{count}个o")结果:
一共有2个o

不止能迭代容器,还可以完成普通循环

rang语句

range语句:获得一个简单的数字序列(生成一系列连续的整数)

格式:

range(start,end,step)

例:
range(num) :[0,num)   (左闭右开,序列0 - num-1)从0开始,到5结束的数字序列,不包含5本身
range(5)===>[0,1,2,3,4]    默认从0开始
range(1,5)===>[1,2,3,4] 从1-5,不包含5
range(1,10,2)===>[1,3,5,7,9]第三个数字代表数字之间的步长,不含10本身
特别:
for i in range(100,0,-2):  #step为复数,注意start与end也须反过来print(i)结果:
100
98
96
...
10
8
6
4
2

练习:

1、求1-100的累加和(终止条件 1-100)

例:
sum = 0
for i in range(0,101):sum += i
print(sum)结果:
5050

2、

例:
num = int(input("请输入遍历终止值:"))
count = 0
for i in range(1, num+1):if i % 2 == 0:count += 1
print(f"有{count}个偶数")结果:
请输入遍历终止值:5
有2个偶数

for循环变量的作用域

临时变量在编程规范上,作用范围,只限定在for循环内部
实际上,for循环外部可以访问到,编程规范上,是不允许,不建议的

例:(不规范)

 想要使用,在循环之前将该变量定义

例:
for i in range(5):print(i)
print(i)结果:
0
1
2
3
4
4i = 2
for i in range(5):print(i)
print(i)   #所以建议不要用到临时变量结果:
0
1
2
3
4
4

for循环的嵌套使用

空格缩进

练习:

for循环打印九九乘法表

i = 1
while i < 10:j = 1while j < i+1:print(f'{j}* {i} = {i * j}\t', end=' ')j += 1i += 1print()1*1=1	
2*1=2	2*2=4	
3*1=3	3*2=6	3*3=9	
4*1=4	4*2=8	4*3=12	4*4=16	
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	
6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81

练习:

# 打印几层:5
#     *
#    **
#   ***
#  ****
# *****
layer = int(input("请输入打印的层数:"))
for i in range(1, layer+1):#先打印空格space_nums = layer - i    #空格数 = 总行数 - 第几行(即 * 数)  for j in range(space_nums): #或者(1,space_nums+1),两相同print(" ", end="")#打印 *for j in range(i):   #j临时变量,两个j互不影响print("*", end="")print()结果:
请输入打印的层数:5**********
*****

循环中断

continue:终端本次循环,直接进入下一次循环

break:直接结束循环,遇见break,直接全部gameover

循环综合案例

     

import random
money = 10000
for i in range(1, 21): score = random.randint(1, 10)  #1-10的随机数生成if score < 5:print(f"员工{i}绩效为{score},不发工资")continue# 判断余额if money >= 1000:money -= 1000print(f"员工{i}发放工资1000,公司账户剩余{money}")else:print(f"当前余额剩余{money},不发了,下个月吧")break结果:
员工1绩效为3,不发工资
员工2发放工资1000,公司账户剩余9000
员工3绩效为1,不发工资
员工4发放工资1000,公司账户剩余8000
员工5发放工资1000,公司账户剩余7000
员工6发放工资1000,公司账户剩余6000
员工7发放工资1000,公司账户剩余5000
员工8绩效为1,不发工资
员工9发放工资1000,公司账户剩余4000
员工10发放工资1000,公司账户剩余3000
员工11绩效为1,不发工资
员工12发放工资1000,公司账户剩余2000
员工13发放工资1000,公司账户剩余1000
员工14绩效为4,不发工资
员工15绩效为1,不发工资
员工16发放工资1000,公司账户剩余0
当前余额剩余0,不发了,下个月吧

for……else

同while......else

else后面的代码:当循环正常结束之后要执行的代码·
中途break,else下边缩进的代码不会执行
中途continue,else下边缩进的代码会执行


http://www.ppmy.cn/news/1149318.html

相关文章

windows10系统-15-markdown编辑器和文本复制工具Textify

1 markdown编辑器 Markdown是一种轻量级标记语言&#xff0c;创始人为约翰格鲁伯。 它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的XHTML&#xff08;或者HTML&#xff09;文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。 1.1 Typo…

XSS、CSRF、sql注入

sql注入 就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串&#xff0c;最终达到欺骗服务器执行恶意的SQL命令。 sql注入防范 1.永远不要信任用户的输入&#xff0c;要对用户的输入进行校验&#xff0c;可以通过正则表达式&#xff0c;或限制长度&#x…

01Linux基础

附件:day26–linux入门.pdf Linux是 基于Unix 的开源免费的操作系统&#xff0c;由于系统的稳定性和安全性几乎成为程序代码运行的最佳系统环境。 &#xff08;程序基本上在Linux上发布&#xff09; Linux系统的应用非常广泛&#xff0c;不仅可以长时间的运行我们编写的程序代…

【web实现右侧弹窗】JS+CSS如何实现右侧缓慢弹窗动态效果『附完整源码下载』

文章目录 写在前面涉及知识点页面效果1、页面DOM创建1.1创建底层操作dom节点1.2 创建存放弹窗dom节点 2、页面联动功能实现&#xff08;关闭与弹出&#xff09;2.1 点击非右侧区域实现关闭2.2 点击叉叉及关闭按钮实现关闭功能 3、完整源码包下载3.1百度网盘3.2 123云盘3.3邮箱留…

LCR 078. 合并 K 个升序链表

LCR 078. 合并 K 个升序链表 题目链接&#xff1a;LCR 078. 合并 K 个升序链表 代码如下&#xff1a; class Solution { public:ListNode* mergeKLists(vector<ListNode*>& lists) {ListNode *lsnullptr;for(int i0;i<lists.size();i){lsmergeList(ls,lists[i])…

我用了多年的前端框架,强烈推荐!

大家好&#xff0c;我是鱼皮&#xff0c;今天给大家分享一个我自己用了多年、现在团队也在用的前端框架 —— Ant Design Pro。 什么是 Ant Design Pro&#xff1f; Ant Design Pro 是由蚂蚁金服开发的、基于 Ant Design 组件库的开发框架&#xff0c;专门用于构建企业级管理…

ros之乌龟做圆周运动and订阅乌龟的位姿信息

一 .基于乌龟显示节点&#xff0c;通过话题发布&#xff0c;编码实现控制小乌龟做圆周运动 打开终端1&#xff0c;进入工作空间 ros_ws cd ros_ws启动节点(ros服务器) roscore新开终端2&#xff0c;启动乌龟节点&#xff08;turtlesim &#xff09; rosrun turtlesim turtl…

Linux:redis集群(3.*版本 和 5.*版本)搭建方法

介绍 至少6个实例才能组成集群。3主3从会自动分配 Redis集群原理 Redis集群架构 Redis Cluster采用虚拟槽分区&#xff0c;将所有的数据根据算法映射到0~16383整数槽内 Redis Cluster是一个无中心的结构 每个节点都保存数据和整个集群的状态 集群角色 Master&#xff1a;Master…