【python基础知识】5.for循环和while循环
文章目录
- 前言
- for...in...循环语句
- for循环:空房间
- for循环:一群排队办业务的人
- range()函数
- for循环:办事流程
- while循环
- while循环:放行条件
- while循环:办事流程
- 两种循环对比
前言
上一关,我们学习了两种新的数据类型:列表和字典。
这一关,我们要学习的主题是【循环】。循环的意思是:把一件事重复执行很多遍。

每个人的生活和工作都充满了循环,很多时候,循环意味着重复和枯燥。比如你要手动输入200个员工的个人信息,比如她要一遍一遍地给不认真的人费劲口舌解释同样的事情,又比如他一成不变、如同一潭死水般的生活。
一成不变的生活终归需要你自己去打破循环,但工作的事,就大可让计算机帮一帮我们了。与人类不同,计算机不怕苦也不怕累,无聊的事情可以重复上千遍,只要能追寻到你想要的答案。
这恰恰就是编程解放人类的地方。比如你需要下载很多很多张图片,本来你是要手动操作的,而计算机通过【循环】,就可以依照某些规则,帮你一张一张地下载图片,你在一旁歇着就好。计算机干重复性的工作比你拿手。
再比如作为运营,可能需要去解散很多的用户群,本来要一个一个手动点击,而计算机通过【循环】,就可以依照某些规则,帮人一个一个解散。计算机干重复性的工作比你省力。
现在你再看“循环”这两个字,是不是跟开始不太一样了?
为什么计算机就特别擅长做重复性工作呢?注意,是“超擅长、速度超快”,而不只是“能干活、不抱怨”。
究其原理,其实是因为代码中的【循环语句】,让计算机能够重复性地、自动地执行指令。

要实现“重复、自动地执行代码”,有两种循环语句可供我们选择使用:一种是for…in…循环语句,另一种是while循环语句。
“循环”在计算机中是非常重要,是最基础的编程知识,为了讲解得更加清楚,我们将循环这一章节分成了上下两关。这一关,我们将对两种循环语句形成初步的了解,并学会简单的应用。
话不多说,我们先一起来看看第一种循环的方式:for…in…循环,它也被简称为for循环。
for…in…循环语句
还记得前一关里,班主任点名的例子吗?本来要重复50次才能完成的任务,最后变成了3行代码。
student = ['党志文', '浦欣然', '罗鸿朗', '姜信然', '居俊德', '宿鸿福', '张成和', '林景辉', '戴英华', '马鸿宝', '郑翰音', '厉和煦', '钟英纵', '卢信然', '任正真', '翟彭勃', '蒋华清', '双英朗', '金文柏', '饶永思', '堵宏盛', '濮嘉澍', '戈睿慈', '邰子默', '于斯年', '扈元驹', '厍良工', '甘锐泽', '姚兴怀', '殳英杰', '吴鸿福', '王永年', '宫锐泽', '黎兴发', '朱乐贤', '关乐童', '养永寿', '养承嗣', '贾康成', '韩修齐', '彭凯凯', '白天干', '瞿学义', '那同济', '衡星文', '公兴怀', '宫嘉熙', '牧乐邦', '温彭祖', '桂永怡']
for i in student:print(i+'在不在?')
这里的第2-3行就是for循环。
先看一段最简单的for循环代码,了解它的格式:

来,先运行一下图中的示例代码。
for i in [1,2,3,4,5]:print(i)
运行结果:
1
2
3
4
5
终端上依次出现了列表里的所有数字,对吧?我们用大白话来打个比方,以便更好地理解这段代码的意义:

for i in [1,2,3,4,5]:print(i)#有一群数字在排队办业务,也就是列表[1,2,3,4,5]
#它们中的每一个被叫到号的时候(for i in),就轮流进去一个空房间办业务
#每一个数字进去房间之后,都对计算机说:“喂,我要办这个业务:帮忙把我自己打印出来”,也就是print(i)
#然后计算机忠实的为每一个数字提供了打印服务,将1,2,3,4,5都打印在了屏幕上
for循环的3个要点即是:1.空房间;2.一群等着办业务的人;3.业务流程
我们一个一个来看:
for循环:空房间
for i in [1,2,3,4,5]: #i是“空房间”print(i)
空房间的学名叫【元素】(item),你可以把它当成是一个变量。那么首先,我们需要给房间取一个名字,也就是“变量名”。
为什么我总是用i?因为英文是item,所以i是常用名嘛。但其实你给这个房间取什么名字都行。
来,直接运行一下代码试试。
for i in [1,2]:print(i)for number in [1,2]:print(number)for LOVE in [1,2]:print(LOVE)
运行结果:
1
2
1
2
1
2
是不是三种结果都一样?这就对啦,不必拘束姓名。
在for循环结束之后,我们还能使用这个房间,不过这时候房间里的人是谁呢?请运行代码体验一下:
for i in [1,2,3,4,5]:print(i)print('事情全部办完了!现在留在空房间里的人是谁?')
print(i)
运行结果:
1
2
3
4
5
事情全部办完了!现在留在空房间里的人是谁?
5
原来,业务结束之后,最后一个走进去的5留在了房间里,被打印了出来。
搞清楚了什么是“空房间”,我们再看看下一个要点:
for循环:一群排队办业务的人

我们刚刚看到的“一群排队办业务的人”,都是以列表的形式出现:[1,2,3,4,5]。还有哪些数据类型也属于“一群排队办业务的人”呢?
我觉得你已经猜到了,就是字典。来直接体验一下代码运行效果:
dict = {'日本':'东京','英国':'伦敦','法国':'巴黎'}for i in dict:print(i)
运行结果:
日本
英国
法国
我们用print(i)把“空房间”i打印了出来,发现i会逐个接待字典中的每一个【键】。
那什么不属于“一群排队办业务的人”呢?请你猜一猜:
请问以下哪个选项的数据不能放在for i in a:循环中?
A.a =[1,3,50,9]
B.a=5
C.a ={‘师父’:‘唐僧’,‘大师兄’:‘孙悟空’,‘二师兄’:‘猪八戒’,‘三师弟’:‘沙和尚’}
D.a=‘吴承恩’
答案是:B
字典、列表和字符串’吴承恩’都是一群排队办业务的人,但a = 5并不是。
哈哈,是不是做题时有点犹豫,看到答案后有些疑惑:为什么’吴承恩’也可以?
不要怀疑,字符串也属于“一群排队办业务的人”。打个比方,'吴承恩’三个字就像一家三口,但走进空房间办业务时,这家人是可以一个一个进去的。来试试吧。
for i in '吴承恩':print(i)
运行结果:
吴
承
恩
而整数、浮点数是不属于“一群排队办业务的人”的,如果把它们放在for循环里,代码会报错。
请你体验一下报错的代码,遇到报错后,可以把代码修改成正确的(把a和b都变为字符串类型即可),或者直接跳过。
a = 100
b = 0.01for i in a:print(i)for i in b:print(i)
现在我们理解了:列表,字典,字符串都可以是“一群排队办业务的人”。
for i in [1,2,3,4,5]: print(i)
还是这段代码,代码的运行结果你应该已经了然于心,是1,2,3,4,5依次出现。也就是说,当这一群排队的人依次序走进空房间,每个人都会把业务办完。
这个过程,在Python中的学名就叫做【遍历】。
其实,遍历这个词在古代汉语中就已经出现过了:

只不过古人是遍历名山大川,一一寻访学问;而Python是遍历数据结构(列表、字典等),一一访问其中的数据。
除了列表,字典,字符串三种数据类型,我们还可以遍历其他的数据集合。比如和for循环常常一起搭配使用的:range() 函数。
range()函数
# 请直接运行代码
for i in range(3):print(i)
运行结果:
0
1
2
运行后,你看到了整数0,1,2,是不是?使用range(x)函数,就可以生成一个从0到x-1的整数序列。
它还有更多用法,再来看这段代码,并运行:
for i in range(13,17):print(i)
运行结果:
13
14
15
16
使用range(a,b) 函数,你可以生成了一个【取头不取尾】的整数序列。
你可能会想问,我没事儿取这些整数出来干嘛?嗯,这是个好问题。再来看一段代码,并运行:
for i in range(1,10):for j in range(1,10):print(str(i)+'*'+str(j)+'='+str(i*j))
print('我很棒')
运行结果:
1*1=1
1*2=2
1*3=3
1*4=4
1*5=5
1*6=6
1*7=7
1*8=8
1*9=9
2*1=2
2*2=4
2*3=6
2*4=8
2*5=10
2*6=12
2*7=14
2*8=16
2*9=18
3*1=3
3*2=6
3*3=9
3*4=12
3*5=15
3*6=18
3*7=21
3*8=24
3*9=27
4*1=4
4*2=8
4*3=12
4*4=16
4*5=20
4*6=24
4*7=28
4*8=32
4*9=36
5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
5*6=30
5*7=35
5*8=40
5*9=45
6*1=6
6*2=12
6*3=18
6*4=24
6*5=30
6*6=36
6*7=42
6*8=48
6*9=54
7*1=7
7*2=14
7*3=21
7*4=28
7*5=35
7*6=42
7*7=49
7*8=56
7*9=63
8*1=8
8*2=16
8*3=24
8*4=32
8*5=40
8*6=48
8*7=56
8*8=64
8*9=72
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
我很棒
重要的事情说三遍,哈哈。像这样,有了range()函数之后,当你想把一段代码固定重复n次时,就可以直接使用for i in range(n)解决问题。
来练习一下:如果你要重复打印“书桓走的第n天,想他”,n为0到10,你会怎么写?
参考答案:
for i in range(11):print('书恒走的第'+str(i)+'天,想他')
运行结果:
书桓走的第0天,想他
书桓走的第1天,想他
书桓走的第2天,想他
书桓走的第3天,想他
书桓走的第4天,想他
书桓走的第5天,想他
书桓走的第6天,想他
书桓走的第7天,想他
书桓走的第8天,想他
书桓走的第9天,想他
书桓走的第10天,想他
你做对了吗?
range()函数还有一种用法,我们来直接运行体验一下:
for i in range(0,10,3):print(i)
运行结果:
0
3
6
9
你观察出规律了么?这里range(0,10,3)的意思是:从0数到9(取头不取尾),步长为3。

好啦,我们来实战一下:请你用for循环完成1到100的整数分别乘以5的计算,并打印出来,效果就像这样:
5
10
15
20
……(中间过程省略)
490
495
500
你会怎么写出for循环代码呢?
开始写代码前,我们要先创建一个从1到100的整数列表,请问写法正确的是?
range(1,101 )
没错!range(1,101 )表示从1-100的整数列表,不包括101。
请开始写代码吧:
参考答案:
for i in range(1,101):print(i*5)
我们最后来理解一下for循环的第三个要点:
for循环:办事流程

我们以下面的代码为例:
for i in [1,2,3,4,5]:
print(i*5)
这两行代码中,in表示从“一群排队办业务的人”(字符串、列表、字典等)中依次取值,这个刚才我们已经学过了。
在循环的过程中,“一群排队办业务的人”会被依次取出,然后走进房间i去办理业务。
但办事流程呢?在这里流程很简单,都是print(i*5)。然后在i=1的情况下,执行一遍流程;在i=2的情况下,再执行一遍流程……一直执行到i=5,也就把这群人的事情全部办完了:

“办事流程”的学名是【for子句】。格式是【冒号】后另起一行,【缩进】写命令。
格式对于编程来说是一件再怎么强调也不为过的“小事”,所以在这里我们再强调一下for循环的格式:

到这里,你已经掌握for循环的基本语法了,我们再做一些练习。
假设你要做大采购,让小明买醋,小红买油,小白买盐,小张买米;我们先把这堆事情写成一个字典:d = {‘小明’:‘醋’,‘小红’:‘油’,‘小白’:‘盐’,‘小张’:‘米’}
如果我们把这四个人要买的东西依次print出来,要写4句print语句:
d={'小明':'醋','小红':'油','小白':'盐','小张':'米'}
print(d['小明'])
print(d['小红'])
print(d['小白'])
print(d['小张'])
请你来动手用for循环代替以上重复性代码,并起到同样的效果。
参考答案:
#请直接运行代码
d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}for i in d:print(d[i])
你做对了吗?如果有点不确定,可以回头补一补上一关“字典”的相关知识。
到这里,for循环的3个要点都讲解完毕:

好了,我们学完了for循环,我们来看看另一种循环方式。
while循环
先来看看while循环长啥样:

你猜一猜,图中代码的运行结果会是怎么样的呢?
#请直接运行代码
a = 0
while a < 5:a = a + 1print(a)
运行结果:
1
2
3
4
5
还是1,2,3,4,5依次出现,对吧?我们也用大白话去解释一下这段代码。
和for循环语句不同,while语句没有“空房间”,也不是“把一群排队办业务的人做完”。它是“在一定的条件下”,“按照流程办事”。

a = 0 #先定义变量a,并赋值
while a < 5: #设定一个放行条件:a要小于5,才能办事a = a + 1 # 满足条件时,就办事:将a+1print(a) # 继续办事:将a+1的结果打印出来
很明显,while循环有2个要点:1.放行条件;2.办事流程。咱们先看第一个。
while循环:放行条件
while在英文中表示“当”,while后面跟的是一个条件。当条件被满足时,就会循环执行while内部的代码(while子句)。
所以while循环本质上像是一个哨卡:只要事情符合条件,那就一遍又一遍的“按流程办事”。
就像在上面的例题中,只要a<5这个条件成立,就不停地办事(把a+1的结果打印出来),直到条件不成立,办事流程就停止。
a = 0
while a < 5:a = a + 1print(a)
同样,while语句也要注意代码规范:

和for循环一样,冒号和内部代码的缩进都是必不可少的。╭(╯^╰)╮写不规范的话计算机又给你报错,然后你又卡在莫名其妙的地方很久噢…
下面,我们用一个好玩儿的案例来说明while的具体用法,不晓得同学们有没有看过金庸的武侠小说《神雕侠侣》?
小说里的主角小龙女(古墓派掌门人)自小在终南山上的古墓里生活。这个门派有个规定,除非有男人愿意为掌门人死,否则掌门人永远不能出墓门半步。
在Python中,这个故事的逻辑就被翻译成:当(while)没有男人愿意为小龙女去死的时候,小龙女要一直一直一直生活在古墓里,这就是一种循环。只有当条件(没有男人愿意为小龙女去死)为假的时候,就可以打破循环,小龙女就能出古墓下山了。
这段代码我先写出来,你看看~
man = '' # 注:''代表空字符串
while man != '有': #注:!=代表不等于
man = input('有没有愿意为小龙女死的男人?没有的话就不能出古墓。')
print('小龙女可以出古墓门下山啦~')
第1行代码:定义了变量man为空的字符串。使用变量前要先定义变量并为变量赋值,下面我们还会继续用到变量man。
第2行代码:while后面有一个条件,当这个条件被满足时,即man != '有’时,放行、办事。开始执行循环内部代码,即第3行的代码,开始询问。
第3行代码:询问现在有男人愿意为小龙女死吗?输入完信息后,回到第2行代码,重新判断条件真假。直到条件被判断为假,即man == ‘有’,while循环才结束。
第4行代码:while 循环结束后的代码,也是循环外部的代码。因为当有男人愿意为小龙女死的时候,while 后面的条件就为假,此时,程序会结束循环,去运行第4行代码。
我们来运行一下好了,同样需要你输入内容。你可以先随便输入几个数据,只要你输入的不是有,代码就会一直循环;直到你输入有,循环会结束。
man = '' # 注:这个''代表空字符串
while man != '有':man = input('有没有愿意为小龙女死的男人?没有的话就不能出古墓。')
print('小龙女可以出古墓门下山啦~')
运行结果:
有没有愿意为小龙女死的男人?没有的话就不能出古墓。1
有没有愿意为小龙女死的男人?没有的话就不能出古墓。hah
有没有愿意为小龙女死的男人?没有的话就不能出古墓。没有
有没有愿意为小龙女死的男人?没有的话就不能出古墓。有
小龙女可以出古墓门下山啦~
幸运的是,小说的男主角杨过在因缘际会下,来到了活死人墓,和小龙女互生情愫。杨过对小龙女用情很深,愿意为她而死,所以满足了师门的规定,小龙女就可以出古墓下山了。
好了,你感受过了while循环的逻辑之后,现在我想请你自己动手练一练。放心,没那么难,有疑问的话看看小龙女的例题。
这个画风突变的故事是这样的:你家的大门是密码门,密码是你的生日816。当输入密码错误的时候,会提示“请尝试输入密码:”。直到密码输入正确,就会提示“欢迎回家!”。
终端的运行效果应该差不多长这样:
请尝试输入密码:
123
请尝试输入密码:
456
请尝试输入密码:
789
请尝试输入密码:
……(中间过程省略)
816
欢迎回家!
请你补全这段代码吧:
怎么样,写出来了吗?
参考答案是这样的:
password = '' # 变量password用来保存输入的密码while password != '816':password = input('请尝试输入密码:')print('欢迎回家!')
那什么,或许你会有小小的疑惑(很可能也没注意到),816到底是谁的生日?偷偷告诉你,是95版《神雕侠侣》女主角李若彤的生日,永远的小龙女。

好啦,言归正传。我们再看看while循环的第二个要点:办事流程。
while循环:办事流程
while循环,在满足条件的时候,会一轮又一轮地循环执行代码。
我们来做道选择题,请看代码回答问题:
a = 0while a < 5:
a = a + 1
print(a)
请问终端运行的结果是啥?
Bingo!答对啦,a从0开始,每次循环都加1,当a被加到5的时候,就不会满足循环的条件哨卡就不会通过,于是循环就会结束。最后打印a,也就是5.
这道题跟一开始的例题非常相似,唯一的区别在于print(a)有没有缩进。
# 之前的例题
a = 0while a < 5:
a = a + 1print(a)# 本题
a = 0while a < 5:
a = a + 1
print(a)
有缩进的时候,print(a)也是循环中的“办事流程”,会将数字逐一打印。没有缩进的时候,循环中的“办事流程”就只有做加法,print(a)也就只会打印循环结束时的最后一个数字。
稍微有点费事是不?我们来做一下分解,看看每一行代码的含义:
a = 0 # 定义了一个变量awhile a < 5: # 当a小于5的时候,就自动执行后续缩进部分的语句print('现在a的值是:' + str(a)) #加一个print看看现在的a是多少a = a + 1 # 每执行一次循环,变量a的值都加1print('加1后a的值是:' + str(a)) #加一个print看看加1后的a是多少
print(a)
可以看到,最后一轮循环的时候a=4,然后最后a的值被加1后等于5:

所以,缩进后的【while子句】才是会被循环执行的“办事流程”,这一点,你应该差不多明白了吧~
那,我们再来做一个小练习。
之前,我们用for循环解过“1到100分别乘以5”的题目:
for i in range(1,101):print(i*5)
如果现在用while循环,应该怎么写呢?你来试试看。
参考答案:
i = 1
while i<101 :print (i*5)i = i+1
到这里,for循环和while循环的知识就都学完了~
for循环和while循环都可以帮我们完成重复性的劳动,那到底两个循环有什么区别,什么时候用for什么时候用while呢?让我们来对比一下。
两种循环对比
for循环和while循环最大的区别在于【循环的工作量是否确定】,for循环就像空房间依次办理业务,直到把【所有工作做完】才下班。但while循环就像哨卡放行,【满足条件就一直工作】,直到不满足条件就关闭哨卡。
所以说,当我们【工作量确定】的时候,我们就可以让for循环来完成重复性工作。反之,要【工作量不确定时】可以让while循环来工作:
# 适合用for...in...循环
for i in '神雕侠侣':
print(i)# 适合用while循环
password = ''
while password != '816':
password = input('请尝试输入密码:')
要把字符串’神雕侠侣’拆成一个个字符打印出来,这件事【工作量确定】,适合用for循环。
而对于“输入密码,判断输入的密码是否正确”这件事,我们并不知道要判断几遍才能得到正确密码,所以【工作量不确定】,适合用while循环。
不过有一种情况for循环和while循环都可以解决问题,那就是【把一件事情做N遍】:
# 直接运行代码即可#用for循环把诗句打印3遍
for i in range(3) :print('明日复明日,明日何其多。')#用while循环把诗句打印3遍
j = 0
while j<3 :print ('明日何其多,明日何其多。')j =j+1
你会看到,两者都能做。不过for循环的代码相对更简洁一些。
让我们总结一下什么时候用for什么时候用while:

好啦,到目前为止,最基础的知识,我们就讲完了。来到这一关的尾声,想说一说“循环”。
正如开头所说,计算机能帮我们做的,是许许多多繁杂重复的工作。当计算机为我们解放双手,这平凡的日子就空出了一些时间。
这些时间,你会用来做什么呢?
曾有一段日子,我选择让自己的思想任意驰骋,想看看哪里是我的边缘。
后来,我用那些多出来的时间回归生活,学习陪伴家人,学习表达我的珍惜。
而此时,此地,此刻的每一个你,就是现在的我,为这些时间所做出的选择。
路还长着呢,我们下一关再会。
相关文章:
【python基础知识】5.for循环和while循环
文章目录 前言for...in...循环语句for循环:空房间for循环:一群排队办业务的人range()函数for循环:办事流程 while循环while循环:放行条件while循环:办事流程 两种循环对比 前言 上一关,我们学习了两种新的…...
STM32CUBEMX_创建时间片轮询架构的软件框架
STM32CUBEMX_创建时间片轮询架构的软件框架 说明: 1、这种架构避免在更新STM32CUBEMX配置后把用户代码清除掉 2、利用这种时间片的架构可以使得代码架构清晰易于维护 创建步骤: 1、使用STM32CUBEMX创建基础工程 2、新建用户代码目录 3、构建基础的代码框…...
vue 插槽Slots
vue插槽官网 <button class"fancy-btn"><slot></slot> <!-- 插槽出口 --> </button><slot> 元素是一个插槽出口 (slot outlet),标示了父元素提供的插槽内容 (slot content) 将在哪里被渲染。 // 定义一个Child.vue…...
论文阅读《Nougat:Neural Optical Understanding for Academic Documents》
摘要 科学知识主要存储在书籍和科学期刊中,通常以PDF的形式。然而PDF格式会导致语义信息的损失,特别是对于数学表达式。我们提出了Nougat,这是一种视觉transformer模型,它执行OCR任务,用于将科学文档处理成标记语言&a…...
较难的换根dp:P6213 「SWTR-04」Collecting Coins
传送门 前题提要:感觉这道换根dp可以说是集中了换根dp的所有较高难度的操作和思想,以及较高的一些实现细节,可以说能够完全写出这道题才叫真正理解了换根dp,非常值得一做. 首先读完题意,不难发现这道题有很多限制.点的访问次数限制,必须访问某一个点,想要获得最大的贡献,没有…...
Springboot - 15.二级分布式缓存集成-Caffeine
👀中文文档 Caffeine 👀使用Caffeine (本地缓存) 当与Spring Boot结合使用时,Caffeine提供了一个直观且功能强大的二级缓存解决方案。Spring Boot的缓存抽象使得整合Caffeine变得相当简单。以下是如何在Spring Boot…...
二叉树的介绍及二叉树的链式结构的实现(C语言版)
前言 二叉树是一种特殊的树,它最大的度为2,每个节点至多只有两个子树。它是一种基础的数据结构,后面很多重要的数据结构都是依靠它来进行实现的。了解并且掌握它是很重要的。 目录 1.二叉树的介绍 1.1概念 1.2现实中的二叉树 1.3特殊的二叉…...
不同写法的性能差异
“ 达到相同目的,可以有多种写法,每种写法有性能、可读性方面的区别,本文旨在探讨不同写法之间的性能差异 len(str) vs str "" 本部分参考自: [问个 Go 问题,字符串 len 0 和 字符串 "" ,有啥区别?](https://segmentf…...
Bytebase 2.7.0 - 新增分支(Branching)功能
🚀 新功能 新增支持与 Git 类似的分支(Branching)功能来管理 schema 变更。支持搜索所有历史工单。支持导出审计日志。 🎄 改进 变更数据库工单详情页面全新改版。优化工单搜索体验。SQL 审核规则支持针对不同数据库进行独立配…...
day55 动规.p15 子序列
- 392.判断子序列 cpp class Solution { public: bool isSubsequence(string s, string t) { vector<vector<int>> dp(s.size() 1, vector<int>(t.size() 1, 0)); for (int i 1; i < s.size(); i) { for (int j 1; …...
TypeScript DOM类型的声明
TS DOM类型的声明 lib.dom.d.ts HTMLInputElement <input type"text" change"handleChange" /> const handleChange (evt: Event) > {console.log((evt.target as HTMLInputElement).value); } HTMLElement const div: HTMLDivElement do…...
springboot找不到注册的bean
1、错误描述 A component required a bean named ‘fixedAssetsShareMapper’ that could not be found.Action:Consider defining a bean named ‘fixedAssetsShareMapper’ in your configuration.2、问题分析 1、该错误提示表明在你的应用程序中有一个组件(可能…...
MEMS传感器的原理与构造——单片式硅陀螺仪
一、前言 机械转子式陀螺仪在很长的一段时间内都是唯一的选项,也正是因为它的结构和原理,使其不再适用于现代小型、单体、集成式传感器的设计。常规的机械转子式陀螺仪包括平衡环、支撑轴承、电机和转子等部件,这些部件需要精密加工和…...
Redis集群服务器
集群简介 试想有一家餐厅,如果顾客人数较少,那么餐厅只需要一个服务员即可,如图1。但是,当顾客人数非常多时,一个服务员是绝对不够的,如图2。此时,餐厅需要雇用更多的服务员来解决大量访问&…...
动态维护直径 || 动态维护树上路径 || 涉及LCA点转序列 || 对欧拉环游序用数据结构维护:1192B
https://www.luogu.com.cn/problem/CF1192B 对于直径的求法,常用dp或两次dfs,但如果要动态维护似乎都不太方面,那么可以维护树上路径最大值。 树上路径为: d e p u d e p v − 2 d e p l c a ( u , v ) dep_udep_v-2\times de…...
MySQL 存储引擎,你了解几个?
引言 MySQL是一种流行的关系型数据库管理系统(RDBMS),它支持多种不同的数据库引擎。数据库引擎是用于存储、管理和检索数据的核心组件,它们直接影响着数据库的性能、可靠性和功能,接下来本文介绍下一些常见的MySQL数据…...
Java 动态规划 Leetcode 740. 删除并获得点数
题目 对于该题的题目分析,已经代码分析都一并写入到了代码注释中 代码 class Solution {public int deleteAndEarn(int[] nums) {//核心思路://由于我们获得 nums[i] 的点数之后,就必须删除所有等于 nums[i] - 1 和 nums[i] 1 的元素//假设…...
算法通关村十三关-青铜:数字与数学基础问题
1.数字统计专题 统计特定场景下的符号或数字个数等 1.1符号统计 LeetCode1822 数组元素积的符号 https://leetcode.cn/problems/sign-of-the-product-of-an-array/description/ 思路分析 如果将所有的数都乘起来,再判断正负,工作量大,还…...
猜拳游戏小程序源码 大转盘积分游戏小程序源码 积分游戏小程序源码
简介: 猜拳游戏大转盘积分游戏小程序前端模板源码,一共五个静态页面,首页、任务列表、大转盘和猜拳等五个页面 图片:...
【Python】爬虫练习-爬取豆瓣网电影评论用户的观影习惯数据
目录 前言 一、配置环境 1.1、 安装Python 1.2、 安装Requests库和BeautifulSoup库 1.3.、安装Matplotlib 二、登录豆瓣网(重点) 2.1、获取代理 2.2、测试代理ip是否可用 2.3、设置大量请求头随机使用 2.4、登录豆瓣网 三、爬取某一部热门电影…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
