Python 循环与判断(详解)

news2024/12/25 2:35:01

❄️作者介绍:奇妙的大歪❄️

🎀个人名言:但行前路,不负韶华!🎀

🐽个人简介:云计算网络运维专业人员🐽

前言

       在Python中,循环语句有两个,一个是for循环,一个是while循环。

       for循环是按指定的次数进行循环,而while循环是根据条件进行循环,不满足条件时就停止循环。
      下面,详细介绍Python中十分常用的for循环语句和while循环语句。

目录

逻辑控制与循环

逻辑判断--True &False

输入代码:

比较运算(Comparison)

比较运算的一些小问题

布尔运算符(Boolean Operators)

 条件控制

循环(Loop)

嵌套循环

while 循环


逻辑控制与循环

逻辑判断--True &False

       逻辑判断是编程语言最有意思的地方,如果要实现一个复杂的功能或程序,逻辑判断必不可少。if-else 结构就是常见的逻辑控制的手段,当你写出这样的语句的时候,就意味着你告诉了计算机什么时候该怎么做,或者什么是不用做的。学完了前面几章内容之后,现在的你也许早已对逻辑控制摩拳擦掌、跃跃欲试,但是在这之前我们需要先了解逻辑判断的最基本准则--布尔类型(Boolean Type)。
       在开始前,想强调一点,如果你怀疑自己的逻辑能力,进而对本章的内容感到畏惧,请不要担心,我可以负责任地说,没有人是“没有逻辑的”,正如我们可以在极其复杂的现实世界中采取各种行动一样,你所需要的只不过是一些判断的知识和技巧而已。
       布尔类型(Boolean)的数据只有两种,True 和False(需要注意的是首字母大写)。人类以真伪来判断事实,而在计算机世界中真伪对应着的则是1和0。
       接下来我们打开命令行/终端进入 Python 环境,敲入这些代码,或者直接在 PyCharm 中选择 Python Console,这样会更方便展示结果。True&False 这一小节的内容我们都在命令行/终端环境里输入代码。

注:此处使用命令行/终端只为更快展现结果在IDE返回布尔值仍旧需要使用print 函数来实现。

输入代码:

1>2
1<2<3
42 != '42'
'Name' == 'name'
'M' in 'Magic'
number = 12
number is 12

        我们每输入一行代码就会立即得到结果,这几行代码的表达方式不同,但是返回结果却只有 True 和 False 这两种布尔类型,因此我们称但凡能够产生一个布尔值的表达式为布尔表达式(Boolean Expressions)。

1 > 2             # False
1 < 2 <3          # True
42 != '42'        # True
'Name' == 'name'  # False
'M' in 'Magic'    # True
number = 12
number is 12      # True

       可以看到,上面这些能够产生布尔直的方法或者公式不尽相同,那么我们来一一讲解这些运算符号的意义和用法。

比较运算(Comparison)

       对于比较运算符,顾名思义,如果比较交式成立那么则返回True,不成立则返回 False。 

 

 

       除了一些在数学上显而易见的事实之外,比较运算还支持更为复杂的表达方式。例如:
       多条件的比较。先给变量赋值,并在多条件下比较大小:

middle = 5
1 < middle < 10

       变量的比较。将两个运算结果储存在不同的变量中,再进行比较: 

two = 1 + 1
three = 1 + 3
two < three

       字符串的比较。其实就是对比左右两边的字符串是否完全一致,下面的代码就是不一致的,因为在 Python 中有着严格的大小写区分:
 

'Eddie Van Helen' == 'eddie van helen'

     两个函数产生的结果进行比较:比较运算符两边会先行调用函数后再进行比较,其结果等价于10 >19:

abs(-10) > len('length of this word')

注:abs()是一个会返回输入参数的绝对值的函数。

比较运算的一些小问题

       不同类型的对象不能使用“<,>,<=,>=”进行比较, 却可以使用'==’和’!=’例如字符串和数字:

42 > 'the answer'   无法比较
42 == 'the answer'  #False
42 != 'the answer'  #True

       需要注意的是,浮点和整数虽是不同类型,但是不影响到比较运算:

5.0 == 5    #True
3.0 > 1     #True

 

       你可能会有一个疑问,“为什么1=1要写作1==1?”,前面提及过 Python 中的符号在很多地方都和数学中十分相似,但又不完全一样。“=”在 Python 中代表着赋值,并非我们熟知的“等于”。所以,“1 = 1”这种写法并不成立,并且它也不会给你返回一个布尔值。使用“==”这种表达方式,姑且可以理解成是表达两个对象的值是相等的,这是一种约定俗成的语法,记得就可以了。
       比较了字符串、浮点、整数….还差一个类型没有进行比较:布尔类型,那么现在实验一下:

True > False
True + False > False + False

       这样的结果又怎么理解呢?还记得前面说过的吗,True 和 False 对于计算机就像是1和0一样,如果在命令行中敲入True +True+False 查看结果不难发现,True=1,False = 0 也就是说,上面这段代码实际上等价于:

1 > 0
1 + 0 > 0 + 0


       至于为什么是这样的原因,我们不去深究,还是记得即可。
       最后一个小的问题,如果在别的教材中看到类似 1<>3 这种表达式也不要大惊小怪,它其实与 1!=3 是等价的,仅仅知道就可以,并不是要让你知道“茴字的四种写法”。

 

       成员运算符和身份运算符的关键词是 in 与is。把in放在两个对象中间的含义是,测试前者是否存在于in 后面的集合中。说到集合,我们先在这里介绍一个简单易懂的集合类型--列表(List)。
       字符串、浮点、整数、布尔类型、变量甚至是另一个列表都可以储存在列表中,列表是非常实用的数据结构,在后面会花更多篇幅来讲解列表的用法,这里先简单了解一下。

       创建一个列表,就像是创建变量一样,要给它起个名字:

album = []

       此时的列表是空的,我们随便放点东西进去,这样就创建了一个非空的列表了:

album = ['Black Star','David Bowie',25,True]

       这个列表中所有的元素是我们一开始放好的,那当列表创建完成后,想再次往里面添加内容怎么办?使用列表的 append 方法可以向列表中添加新的元素,并且使用这种方式添加的元素会自动地排列到列表的尾部:

album.append('new song')

       接着就是列表的索引,如果在前面的章节你很好地掌握了字符串的索引,相信理解新的知识应该不难。下面代码的功能是打印列表中第一个和最后一个元素:

print(album[0],album[-1])

       接下来我们使用 in 来测试字符串'Black Star’是否在列表 album 中。如果存在则会显示True,不存在就会显示False了:

'Black Star' in album

       是不是很简单?正如前面看到的那样,in 后面是一个集合形态的对象,字符串满足这种集合的特性,所以可以使用 in 来进行测试。
       接下来再来讲解 is 和 isnot,它们是表示身份鉴别(ldentifyOperator)的布尔运算符,in 和 not in 则是表示归属关系的布尔运算符号(Membership Operator)。
       在 Python 中任何一个对象都要满足身份(ldentity)、类型(Type)、值(Value)这三个点,缺一不可。is 操作符号就是来进行身份的对比的。试试输入这段代码:

the_Eddie = 'Eddie'
name = 'Eddie' 
the_Eddie == name
the_Eddie is name

       你会发现在两个变量一致时,经过 is 对比后会返回 True。

 

 

       其实在 Python 中任何对象都可判断其布尔值,除了 0、None和所有空的序列    
与集合(列表,字典,集合)布尔值为 False 之外,其它的都为 True,我们可以使用函数 bool()进行判别:

bool(0)     #False
bool([])    #False
bool('')    #False
bool(False) #False
bool(None)  #False

       可能有人不明白,为什么一个对象会等于None。还记得在函数那章的敏感词过滤器的例子吗?在定义函数的时候没有写return 依然可以使用,但如果调用函数,企图把根本就不存在的“返回值”储存在一个变量中时,变量实际的赋值结果将是 None.
       当你想设定一个变量,但又没想好它应该等于什么值时,你就可以这样:

a_thing = None

布尔运算符(Boolean Operators)

      and、or 用于布尔值的之间的运算,具体规则如下:

 

     and 和 or 经常用于处理复合条件,类似于1<n<3,也就是两个条件同时满足。

1 < 3 and 2 < 5   #True
1 < 3 and 2 > 5   #False
1 < 3 or 2 > 5    #True
1 > 3 or 2 > 5    #False

 条件控制

条件控制其实就是if...else 的使用。先来看下条件控制的基本结构:

 

       用一句话概括if..else 结构的作用:如果….条件是成立的,就做.….;反之,就做...
       所谓条件(condition)指的是成立的条件,即是返回值为True 的布尔表达式知道了这点后使用起来应该不难。
       我们结合函数的概念来创建这样一个函数,逐行分析它的原理 :

def account_login():
password = input('Password:')
if password == '12345':
print('Login success!')
else:
print('Wrong password or invalid input!') 
account_login()
account_login()

 

       第1行:定义函数,并不需要参数:
       第2行:使用input 获得用户输入的字符串并储存在变量password中;
       第3、4行:设置条件,如果用户输入的字符串和预设的密码12345相等时,就执行打印文本'Loain success!';
       第5、6行:反之,一切不等于预设密码的输入结果,全部会执行打印错误提示并且再次调用函数,让用户再次输入密码;
       第7行:运行函数。第8行:调用函数

       值得一提的是,如果if后面的布尔表达式过长或者难于理解,可以采取给变量赋值的办法来储存布尔表达式返回的布尔值 True或False。因此上面的代码可以写成这样:

def account_login():
 password = input('Password:')
 password_correct = password == '12345' #HEREѺ
 if password_correct:
print('Login success!')
 else:
print('Wrong password or invalid input!')
account_login()
account_login()

       一般情况下,设计程序的时候需要考虑到逻辑的完备性,并对用户可能会产生困扰的情况进行预防性设计,这时候就会有多条件判断。
       多条件判断同样很简单,只需在 if 和else 之间增加上 elif,用法和 if 是一致的。而且条件的判断也是依次进行的,首先看条件是否成立,如果成立那么就运行下面的代码,如果不成立就接着顺次地看下面的条件是否成立,如果都不成立则运行else 对应的语句。 

       接下来我们使用elif 语句们给刚才设计的函数增加一个重置密码的功能:

password_list = ['*#*#','12345'] 
def account_login(): 
password = input('Password:') 
password_correct = password == password_list[-1] 
password_reset = password == password_list[0] 
if password_correct: 
print('Login success!') 
elif password_reset: 
new_password = input('Enter a new password:') 
password_list.append(new_password) 
print('Your password has changed successfully!') 
account_login() 
else: 
print('Wrong password or invalid input!') 
account_login() 
account_login()

      第1行:创建一个列表,用于储存用户的密码、初始密码和其他数据(对实际数据库的简化模拟);
      第2行:定义函数;
      第3行:使用input获得用户输入的字符串并储存在变量password 中;
      第4行:当用户输入的密码等于密码列表中最后一个元素的时候(即用户最新设定)的密码),登录成功;
      第5~9行:当用户输入的密码等于密码列表中第一个元素的时候(即重置密码的“口令”)触发密码变更,并将变更后的密码储存至列表的最后一个,成为最新的用户密码;
      第10行:反之,一切不等于预设密码的输入结果,全部会执行打印错误提示,并且再次调用函数,让用户再次输入密码;
      第11行:调用函数。
      在上面的代码中其实可以清晰地看见代码块(Code Block)。代码块的产生是由于缩进,也就是说,具有相同缩进量的代码实际上是在共同完成相同层面的事情,这有点像是编辑文档时不同层级的任务列表。 

循环(Loop)

       for 循环
       我们先来看一个例子,输入代码:

for every_letter in 'Hello world':
 print(every_letter)
H
e
l
l
o

w
o
r
l
d

       这两行代码展示的是:使用for 循环打印出“hello world”这段字符串中的每一个字符。for 循环作为编程语言中最强力的特性之一,能够帮助我们做很多重复性的事情,比如批量命名、批量操作等等。
       把for循环所做的事情概括成一句话就是:于…其中的每一个元素,做…事情。

 

       🌞for 是关键词,而后面紧接着的是一个可以容纳“每一个元素”的变量名称,至于变量起什么名字自己定,但切记不要和关键词重名。
       🍎在关键词 in 后面所对应的一定是具有“可迭代的”(iterable)或者说是像列表那样的集合形态的对象,即可以连续地提供其中的每一个元素的对象。

       为了更深入了解 for 循环,试着思考下面这个问题,如何打印出这样的结果?

1 + 1 = 2
2 + 1 = 3
.
.
10 + 1 = 11

       这需要用到一个内置函数--range。我们只需要在 range函数后面的括号中填上数字,就可以得到一个具有连续整数的序列,输入代码:

for num in range(1,11): #不包含11 因此实际范围是1~10
 print(str(num) + ' + 1 =',num + 1)

       这段代码表达的是:将1~10范围内的每一个数字依次装入变量num 中,每次展示一个num +1的结果。在这个过程中,变量num被循环赋值10次,你可以理解成等同于:

num = 1
print(str(num) + ' + 1 =',num + 1)
num = 2
print(str(num) + ' + 1 =',num + 1)
.
.
num = 10
print(str(num) + ' + 1 =',num + 1)


       现在我们试着解决更复杂的问题,把 for 和if结合起来使用。实现这样一个程序:歌曲列表中有三首歌“Holy DiverThunderstruck,Rebel Rebel”,当播放到每首时,分别显示对应的歌手名字“Dio,AC/CD,David Bowie”。
       代码如下:

songslist = ['Holy Diver', 'Thunderstruck', 'Rebel Rebel']
for song in songslist:
 if song == 'Holy Diver':
print(song,' - Dio')
 elif song == 'Thunderstruck':
print(song,' - AC/DC')
 elif song == 'Rebel Rebel':
print(song,' - David Bowie')

      在上述代码中,将songslist列表中的每一个元素依次取出来,并分别与三个条件做比较,如果成立则输出相应的内容。

嵌套循环

       在编程中还有一种常见的循环,被称之为嵌套循环(Nested Loop),其实这种循环并不复杂而且还非非常实用。我们都学过乘法口诀表,又称“九九表”,接下来我们就用嵌套循环实现它:

for i in range(1,10):
 for j in range(1,10):
 print('{} X {} = {}'.format(i,j,i*j))

       正如代码所示,这就是嵌套循环。通过观察,我们不难发现这个嵌套循环的原
理:最外层的循环依次将数值1~9    存储到变量i中,变量i每取一次值,内层循环就    
要依次将1~9中存储在变量j中    最后展示当前的 i、j与ij 的结果。

while 循环

        Python 中有两种循环,第一种 for 循环我们已经介绍过了,第二种则是 while 循环。它们的相同点在于都能循环做一件重复的事情,不同点在于 for 循环会在可迭代的序列被穷尽的时候停止,while则是在条件不成立的时候停止,因此 while的作用概括成一句话就是:只要….条件成立,就一直做…。
       看一个简单的例子:

while 1 < 3:
 print('1 is smaller than 3')

       在这里先行提醒一下,一定要记得及时停止运行代码 

 注:在终端或者命令行中按 Ctrl+C停止运行,在PyCharm中则点击红色的X停止

       因为在 while 后面的表达式是永远成立的,所以 print 会一直进行下去直至你的 cpu 过热。这种条件永远为 True 的循环,我们称之为死循环(Infinite Loop)。

       但如果while 循环不能像for循环那样,在集合被穷尽之后停下来,我们又怎么样才能控制 while 循环呢?其中一种方式就是:在循环过程中制造某种可以使循环停下来的条件,例如: 

count = 0
while True:
 print('Repeat this line !')
 count = count + 1
 if count == 5:
 break

       在上面这段代码中,有两个重要的地方,首先是我们给一个叫count的变量赋值为 0,其目的是计数。我们希望在循环次数为 5 的时候停下来。接下来的是 break同样作为关键词写在if下面的作用就是告诉程序在上面条件成立的时候停下来,仅此而已。
       然而你也一定发现了什么奇怪的地方,没错,就是这个count=count+1!其实我已经不止一次强调过编程代码和数学公式在某些地方很相似,但又不完全相同而这又是一个绝好的例子。首先在 Python 中“=”并非是我们熟知的“等于”的含义,所以我们不必按照数学公式一样把重复的变量划掉。其次count被赋值为0count=count +1 意味着count被重新赋值!等价于count=0+1,随着每次循环往复, count 都会在上一次的基础上重新赋值,都会增加+1,直至count 等于5 的时候 break, 跳出最近的一层循环,从而停下来。
       利用循环增加变量其实还是一个挺常见的技巧,随着循环不仅可以增加,还可以随着循环减少(n=n-1),甚至是成倍数增加(n=n*3)。
       除此之外,让while 循环停下来的另外一种方法是:改变使循环成立的条件。为了解释这个例子,我们在前面登录函数的基础上来实现,给登录函数增加一个新功能:输入密码错误超过3次就禁止再次输入密码。

password_list = ['*#*#','12345']
 
def account_login():
tries = 3
while tries > 0: 
password = input('Password:')
password_correct = password == password_list[-1]
password_reset = password == password_list[0]
 
if password_correct:
print('Login success!')

elif password_reset:
new_password = input('Enter Dnew password :')
password_list.append(new_password)
print('Password has changed successfully!')
account_login()
else:
print('Wrong password or invalid input!')
tries = tries - 1 
print( tries, 'times left')

else:
print('Your account has been suspended') 
 
account_login()

       这段代码只有三处与前面的不一样:
       第4~5行:增加了while 循环,如果tries>0这个条件成立,那么便可输入密码,从而执行辨别密码是否正确的逻辑判断;
       第20~21行:当密码输入错误时,可尝试的次数 tries 减少1;
       第23~24行:while 循环的条件不成立时,就意味着尝试次数用光,通告用户账户被锁。
       在这里 while 可以理解成是 if 循环版,可以使用 while-else 结构,而在 while代码块中又存在着第二层的逻辑判断,这其实构成了嵌套逻辑(Nested Condition)。

 🎀看都看到这里啦留个三连再走吧!!你们的支持就是我的动力!!!🎀🎀🎀

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

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

相关文章

Redis缓存穿透-击穿-雪崩详细分析加解决办法

Redis 缓存穿透 问题描述-如图 缓存穿透的原因 key 对应的数据在数据源并不存在&#xff0c;每次针对此key 的请求从缓存获取不到&#xff0c;请求都会压到数据源, 可能压垮数据源比如: 用一个不存在的用户id 获取用户信息&#xff0c;不论缓存还是数据库都没有&#xff0c;…

Spring Boot 集成 Redisson分布式锁(拿来即用版)

Redisson 是一种基于 Redis 的 Java 驻留集群的分布式对象和服务库&#xff0c;可以为我们提供丰富的分布式锁和线程安全集合的实现。在 Spring Boot 应用程序中使用 Redisson 可以方便地实现分布式应用程序的某些方面&#xff0c;例如分布式锁、分布式集合、分布式事件发布和订…

JSON5的作用、安装及使用

JSON5是对JSON的扩展&#xff0c;让人可以更容易手工编写和维护&#xff0c;用来减少一些JSON的限制&#xff0c;诸如json语法不支持注释&#xff0c;不支持字符串换行&#xff0c;所有的key都必须双引号&#xff0c;末尾不能有多余的逗号…等等&#xff0c;一大堆极其严格的要…

chatgpt赋能python:Python的退役与SEO

Python的退役与SEO 随着Python编程语言的流行和普及&#xff0c;越来越多的人开始使用它来开发各种类型的应用程序。但是&#xff0c;就像我们所知道的&#xff0c;所有技术都会发生变化&#xff0c;包括编程语言。因此&#xff0c;Python程式员可能会感到困惑和担忧&#xff…

JavaScript对象 (八):对象类型的使用、值类型和引用类型、函数的this指向、工厂方法创建对象、构造函数和类、new创建对象

1. 对象类型的使用 1.1 认识对象类型 基础数据类型可以存储一些简单的值&#xff0c;但是现实世界的事物抽象成程序时&#xff0c;往往比较复杂。 比如一个人&#xff0c;有自己的特性&#xff08;比如姓名、年龄、身高&#xff09;&#xff0c;有一些行为&#xff08;比如跑…

课程17:菜单管理功能实现

🚀前言 本文是《.Net Core从零学习搭建权限管理系统》教程专栏的课程(点击链接,跳转到专栏主页,欢迎订阅,持续更新…) 专栏介绍:以实战为线索,基于.Net 7 + REST + Vue、前后端分离,不依赖任何第三方框架,从零一步一步讲解权限管理系统搭建。 专栏适用于人群:We…

为什么运行时安全性重新流行起来?

容器通过以更高效和可扩展的方式创建、打包和部署应用程序&#xff0c;彻底改变了软件开发过程。 然而&#xff0c;能力越大&#xff0c;责任越大&#xff0c;对“左移安全性”的高度关注为那些在运行时忽视安全性的组织带来了风险。 通过对容器运行时安全采取多层次、全面的…

云服务器ECS_云主机_服务器托管_弹性计算-阿里云

阿里云服务器ECS&#xff08;Elastic Compute Service&#xff09;是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;阿里云提供多种云服务器ECS实例规格&#xff0c;如通用算力型u1、ECS计算型c7、通用型g7、GPU实例等&#xff0c;阿里云服务器网分享阿里云服务器ECS详细介…

Linux文件操作四剑客

目录 一、grep &#xff08;一&#xff09;作用 &#xff08;二&#xff09;格式 &#xff08;三&#xff09;选项 &#xff08;四&#xff09;案例 1、查看/etc目录下所有包含bash的文件名&#xff1a;grep -rl bash /etc 2、查看/var/log目录下所有包含error的文…

读发布!设计与部署稳定的分布式系统(第2版)笔记04_集成点

1. 第一个拥有10亿用户的网站 1.1. 2016年&#xff0c;Facebook宣布其每日活跃用户数量为11.3亿 1.2. 对整个应用程序来说&#xff0c;“五个9”的可靠性远远不够&#xff0c;这每天会让成千上万的用户失望 1.3. 假如按照六西格玛质量标准来衡量&#xff0c;那么Facebook每天…

LIN-网络管理:休眠(Go To Sleep)和唤醒(Wake up)

文章目录 一、LIN总线的两种状态二、休眠模式&#xff08;Go To Sleep&#xff09;①利用诊断帧中的主机请求帧 0x3C 作休眠命令②当总线静默(没有显性和隐性电平之间的切换)4s&#xff5e;10s 时&#xff0c;节点自动进入休眠状态。 三、唤醒模式&#xff08;Wake up&#xff…

智能图片降噪-Topaz Photo AI

今天给各位小伙伴们测试了一款可以使视频智能无损放大的软件——Topaz Photo AI。 小编在很早之前也有了解过Topaz系列的软件&#xff0c;都是通过人工智能处理的&#xff0c;对小白新手们很适用&#xff0c;由于使用人工智能方面的软件或程序对硬件要求都比较高&#xff0c;因…

交通指南系统

一、实验目的 1. 掌握图的基本存储方法&#xff1b; 2. 掌握有关图的操作算法并用高级语言实现&#xff1b; 3. 熟练掌握图的两种搜索路径的遍历方法。 二、实验内容 假设以一个带权有向图表示某一区域的公交线路网&#xff0c;图中顶点代表一些区域中的重要场所&#xff0…

设计模式(二十二):行为型之备忘录模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二、三)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(四)&#xff1a;创建型之原型模式 设计模式(五)&#xff1a;创建型之建造者模式 设计模式(六)&#xff1a;结构型之代理模式 设计模式…

【C】转义字符以及注释的介绍

转义字符 转义字符顾名思义就是转变意思。就是把原来字符的意思转变了&#xff0c;让它拥有别的意思。 如果我们想要在屏幕上打印&#xff1a;c:\code:\test.c 这样一串文字的话&#xff0c;我们代码肯定会这样写&#xff1a; #include<stdio.h> int main() {printf(&q…

压缩感知入门④基于总体最小二乘的扰动压缩感知重构算法

压缩感知系列博客&#xff1a;压缩感知入门①从零开始压缩感知压缩感知入门②信号的稀疏表示和约束等距性压缩感知入门③基于ADMM的全变分正则化的压缩感知重构算法压缩感知入门④基于总体最小二乘的扰动压缩感知重构算法 文章目录 1. Problem2. 仿真结果3. MATLAB算法4. 源码地…

Bean 的六种作用域

观前提示:本篇博客演示使用的 IDEA 版本为2021.3.3版本,使用的是Java8(又名jdk1.8) 前端使用VSCode(Visual Studio Code1.78.2) 电脑使用的操作系统版本为 Windows 10 目录 前言 Bean Spring 容器在初始化⼀个 Bean 的实例时&#xff0c;同时会指定该实例的作⽤域。 1. …

chatgpt赋能python:Python怎样能通过值找到键

Python怎样能通过值找到键 Python是一种高级编程语言&#xff0c;它在工业、医疗、科学、财务等多个行业中被广泛使用&#xff0c;是数据科学、人工智能和深度学习等领域的首选语言。在Python编程中&#xff0c;有时候我们需要在字典中根据值查询对应的键&#xff0c;本文将介…

chatgpt赋能python:Python排序算法大全

Python排序算法大全 导言 排序是程序员日常工作中最常见的操作之一。Python提供了许多实现排序算法的库和函数&#xff0c;本文将带您了解这些排序方法。 初级排序算法 冒泡排序 Bubble Sort 冒泡排序是一种简单的排序算法。它通过不断交换相邻的元素&#xff0c;将大的元…

【微服务架构设计和实现】4.2 服务边界的定义和划分

第一章&#xff1a;【云原生概念和技术】 第二章&#xff1a;【容器化应用程序设计和开发】 第三章&#xff1a;【基于容器的部署、管理和扩展】 第四章&#xff1a;【4.1 微服务架构概述和设计原则】 4.2 服务边界的定义和划分 4.2 服务边界的定义和划分4.2.1 什么是服务边…