《python数据分析及其在水利工程中的应用》课件(中)_第1页
《python数据分析及其在水利工程中的应用》课件(中)_第2页
《python数据分析及其在水利工程中的应用》课件(中)_第3页
《python数据分析及其在水利工程中的应用》课件(中)_第4页
《python数据分析及其在水利工程中的应用》课件(中)_第5页
已阅读5页,还剩305页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

⽔滴⽯穿之法while循环-条件重复whileloop-Conditionrepetition⽔滴⽯穿-条件重复Constantdrippingwearsawayastone-repeatedconditions⻓⽼的任务:疏导之术—智水长老上次汝已学会判断岔路,然治⽔亦需耐⼼重复。此番便传授汝“水滴石穿”之法——while循环,以应对需反复疏导之⽔情。当前任务任务:⽔滴⽯穿-while循环进行中>>>升级任务进度TheprogressoftheUpgradetask当前任务任务:⽔滴⽯穿-while循环进行中>>>升级任务进度TheprogressoftheUpgradetask任务:遍历江河-for循环与range任务:九曲连环-嵌套循环与列表推导式后续任务待解锁完成本任务,成为【导流师】!01第一节初识while循环Firstencounterwiththewhileloop基本结构Basicstructurewhile

条件

:#循环体

(条件为真时执⾏的代码块)#注意:

循环体内部通常需要有能改变"条件"的操作while循环的基本结构基本结构Basicstructurewhile

条件

:#循环体

(条件为真时执⾏的代码块)#注意:

循环体内部通常需要有能改变"条件"的操作while循环的基本结构各部分释义while

——Python的关键字,宣告循环开始基本结构Basicstructurewhile

条件

:#循环体

(条件为真时执⾏的代码块)#注意:

循环体内部通常需要有能改变"条件"的操作while循环的基本结构各部分释义while

——Python的关键字,宣告循环开始基本结构Basicstructurewhile

条件

:#循环体

(条件为真时执⾏的代码块)#注意:

循环体内部通常需要有能改变"条件"的操作while循环的基本结构各部分释义条件

——产⽣True或False结果的判断基本结构Basicstructurewhile

条件

:#循环体

(条件为真时执⾏的代码块)#注意:

循环体内部通常需要有能改变"条件"的操作while循环的基本结构各部分释义条件

——产⽣True或False结果的判断基本结构Basicstructurewhile

条件

:#循环体

(条件为真时执⾏的代码块)#注意:

循环体内部通常需要有能改变"条件"的操作while循环的基本结构各部分释义:(冒号)

——

表示循环头的结束基本结构Basicstructurewhile

条件

:#循环体

(条件为真时执⾏的代码块)#注意:

循环体内部通常需要有能改变"条件"的操作while循环的基本结构各部分释义:(冒号)

——

表示循环头的结束基本结构Basicstructurewhile

条件

:#循环体

(条件为真时执⾏的代码块)#注意:

循环体内部通常需要有能改变"条件"的操作while循环的基本结构各部分释义循环体

——缩进的代码块,需要重复执⾏的操作基本结构Basicstructurewhile

条件

:#循环体

(条件为真时执⾏的代码块)#注意:

循环体内部通常需要有能改变"条件"的操作while循环的基本结构各部分释义循环体

——缩进的代码块,需要重复执⾏的操作基本结构Basicstructure#数值⽐较#

当计数器⼩于5时循环while

count<

5:#执⾏循环体条件表达举例基本结构Basicstructure#数值⽐较#

当计数器⼩于5时循环while

count<

5:#执⾏循环体条件表达举例基本结构Basicstructure#数值⽐较#

当计数器⼩于5时循环while

count<

5:#执⾏循环体条件表达举例基本结构Basicstructure#

逻辑条件#

当⽔位不安全时循环while

water_level>safe_level:#执⾏循环体条件表达举例基本结构Basicstructure#

逻辑条件#

当⽔位不安全时循环while

water_level>safe_level:#执⾏循环体条件表达举例基本结构Basicstructure#

逻辑条件#

当⽔位不安全时循环while

water_level>safe_level:#执⾏循环体条件表达举例基本结构Basicstructure#⽆限循环(

需要在循环体内有break语句)whileTrue:#执⾏循环体if

exit_condition:break条件表达举例基本结构Basicstructure#⽆限循环(

需要在循环体内有break语句)whileTrue:#执⾏循环体if

exit_condition:break条件表达举例法诀运转——执⾏流程Magicformulaoperation-Executionprocesswhile循环的执⾏流程检查条件条件为True是执行循环体开始法诀运转——执⾏流程Magicformulaoperation-Executionprocesswhile循环的执⾏流程是执行循环体开始继续执行后续代码检查条件条件为True跳出循环否⼩试⽜⼑——计数循环Let'sgiveitatry-countingcycles#初始化—个计数器,

如同记录疏导次数count

=

0#只要疏导次数⼩于5

次while

count<

5:#显示当前的疏导次数print(f"当前计数:

{count}")#关键:

计数加1,

否则条件永远满⾜!count

+=

1#循环结束后的提示print("循环结束")计数循环示例⼩试⽜⼑——计数循环Let'sgiveitatry-countingcycles#初始化—个计数器,

如同记录疏导次数count

=

0#只要疏导次数⼩于5

次while

count<

5:#显示当前的疏导次数print(f"当前计数:

{count}")#关键:

计数加1,

否则条件永远满⾜!count

+=

1#循环结束后的提示print("循环结束")计数循环示例02第二节精通while循环Beproficientinwhileloops修炼要诀——注意事项Keypointsofcultivation-Precautions避免⽆限循环#危险!

⽆限循环count

=

0while

count<

5:print(f"当前计数:

{count}")#忘记更新count,条件永远为True!#

count

+=

1错误示例#正确的循环count

=

0while

count<

5:print(f"当前计数:

{count}")#

忘记更新count,条件永远为True!count

+=

1正确示例修炼要诀——注意事项Keypointsofcultivation-Precautions

避免⽆限循环#危险!

⽆限循环count

=

0while

count<

5:print(f"当前计数:

{count}")#忘记更新count,条件永远为True!#

count

+=

1错误示例#正确的循环count

=

0while

count<

5:print(f"当前计数:

{count}")#

忘记更新count,条件永远为True!count

+=

1正确示例修炼要诀——注意事项Keypointsofcultivation-Precautions

避免⽆限循环#危险!

⽆限循环count

=

0while

count<

5:print(f"当前计数:

{count}")#忘记更新count,条件永远为True!#

count

+=

1错误示例#正确的循环count

=

0while

count<

5:print(f"当前计数:

{count}")#

忘记更新count,条件永远为True!count

+=

1正确示例修炼要诀——注意事项Keypointsofcultivation-Precautions条件为Ture改变条件变量条件变为False设计while循环时,确保循环体内部操作修炼要诀——注意事项Keypointsofcultivation-Precautions条件为Ture改变条件变量条件变为False设计while循环时,确保循环体内部操作修炼要诀——注意事项(2)Keypointsofcultivation-Precautions(2)#排⽔直到达到⽬标⽔位current_level=

100.0target_level=80.0

while

current_level>target_level:print(f"当前⽔位

:{current_level}⽶

")current_level-=

0.5print(f"已达到⽬标⽔位

:{current_level}⽶

")更新条件变量修炼要诀——注意事项(2)Keypointsofcultivation-Precautions(2)#排⽔直到达到⽬标⽔位current_level=

100.0target_level=80.0

while

current_level>target_level:print(f"当前⽔位

:{current_level}⽶

")#每次循环降低⽔位current_level-=

0.5print(f"已达到⽬标⽔位

:{current_level}⽶

")更新条件变量

#

当前⽔位#

⽬标⽔位修炼要诀——注意事项(2)Keypointsofcultivation-Precautions(2)#排⽔直到达到⽬标⽔位current_level=

100.0target_level=80.0

while

current_level>target_level:print(f"当前⽔位

:{current_level}⽶

")#每次循环降低⽔位current_level-=

0.5print(f"已达到⽬标⽔位

:{current_level}⽶

")更新条件变量

#

当前⽔位#

⽬标⽔位修炼要诀——注意事项(2)Keypointsofcultivation-Precautions(2)循环体操作:代码缩进:whileTrue:

其他注意事项确保循环体内的代码是需要重复执⾏的。Python用缩进定义代码块,循环体必须正确缩进(通常4个空格)。慎用whileTrue:,除⾮循环体内部有break语句可以跳出。应⽤场景Applicationscenario1当不知道具体要重复多少次,

只知道满⾜某个条件就继续,不满⾜就停⽌时。应⽤场景:循环次数未知时Applicationscenario:Whenthenumberofcyclesisunknown#要求⽤户输⼊

,

直到输⼊符合要求valid_input=

Falsewhilenot

valid_input:user_input=input("请输⼊1-100的数字

:

")if

user_input.isdigit():num=

int(user_input)if

1<=

num

<=

100:valid_input=Trueprint(f"有效输⼊

:{num}")else:print("数字必须在1-100之间")else:print("请输⼊数字")应⽤场景:循环次数未知时Applicationscenario:Whenthenumberofcyclesisunknown#要求⽤户输⼊

,

直到输⼊符合要求valid_input=

Falsewhilenot

valid_input:user_input=input("请输⼊1-100的数字

:

")if

user_input.isdigit():num=

int(user_input)if

1<=

num

<=

100:valid_input=Trueprint(f"有效输⼊

:{num}")else:print("数字必须在1-100之间")else:print("请输⼊数字")应⽤场景Applicationscenario1当不知道具体要重复多少次,

只知道满⾜某个条件就继续,不满⾜就停⽌时。2当循环的持续依赖于某个外部事件或程序内部状态的改变时。应⽤场景:基于事件或状态循环Applicationscenario:Basedoneventorstateloops#模拟监测系统运⾏import

randomsystem_on=

Truealarm_triggered=

Falsewater_level=

50while

system_on

and

not

alarm_triggered:#模拟⽔位变化water_level+=

random.randint(-5,8)print(f"当前⽔位

:{water_level}")#检查警报条件if

water_level>

80:alarm_triggered=Trueprint("警报!

⽔位过⾼!

")#模拟系统可能关闭if

random.random()<

0.1:system_on=

Falseprint("系统关闭")应⽤场景:基于事件或状态循环Applicationscenario:Basedoneventorstateloops#模拟监测系统运⾏import

randomsystem_on=

Truealarm_triggered=

Falsewater_level=

50while

system_on

and

not

alarm_triggered:#模拟⽔位变化water_level+=

random.randint(-5,8)print(f"当前⽔位

:{water_level}")#检查警报条件if

water_level>

80:alarm_triggered=Trueprint("警报!

⽔位过⾼!

")#模拟系统可能关闭if

random.random()<

0.1:system_on=

Falseprint("系统关闭")应⽤场景Applicationscenario1当不知道具体要重复多少次,

只知道满⾜某个条件就继续,不满⾜就停⽌时。2当循环的持续依赖于某个外部事件或程序内部状态的改变时。3⾮常适合实现"做某事,直到某个条件达成"的逻辑。应⽤场景:实现'直到...'逻辑Applicationscenario:Achieve"until...""Logic"#排⽔直到达到安全⽔位water_level=

120#

当前⽔位(⽶)safe_level=

100

#安全⽔位(⽶)pump_rate=2

#

⽔泵每次运⾏排⽔量(⽶)runs=

0

#记录⽔泵运⾏次数while

water_level>safe_level:#

运⾏⽔泵water_level-=

pump_rateruns

+=

1print(f"⽔泵运⾏{runs}次,

"

+

f"当前⽔位

:{water_level}⽶

")print(f"已达到安全⽔位,

"+

f"⽔泵共运⾏{runs}次")应⽤场景:实现'直到...'逻辑Applicationscenario:Achieve"until...""Logic"#排⽔直到达到安全⽔位water_level=

120#

当前⽔位(⽶)safe_level=

100

#安全⽔位(⽶)pump_rate=2

#

⽔泵每次运⾏排⽔量(⽶)runs=

0

#记录⽔泵运⾏次数while

water_level>safe_level:#

运⾏⽔泵water_level-=

pump_rateruns

+=

1print(f"⽔泵运⾏{runs}次,

"

+

f"当前⽔位

:{water_level}⽶

")print(f"已达到安全⽔位,

"+

f"⽔泵共运⾏{runs}次")总结:⽔滴⽯穿之⼒已习得Summary:Thepowerofwaterdrippingthroughastonehasbeenlearned下⼀课:遍历江河-for循环与rangeG当前任务任务:⽔滴⽯穿-while循环已完成试炼!遍历江河-循环流动之道orloopandrangefunctionfor循环与range函数疏导之术-任务继续TheartofGuidance-Thetaskcontinues⻓⽼的指引—智水长老吾辈治⽔,不仅要懂得条件判断,更要精通循环往复之道。继while如⽔滴⽯穿,今⽇汝需掌握for循环,如巡查江河,与continue之法,

掌控数据流向,收放⾃如。此乃“疏导之术”关键—步!遍历万物。更需习得range()函数,凭空造尺,丈量序列。辅以break已完成任务任务:岔路抉择-条件语句任务:⽔滴⽯穿-while循环已完成升级任务进度TheprogressoftheUpgradetask当前任务任务:遍历江河-for循环与range进行中>>>已完成任务任务:岔路抉择-条件语句任务:⽔滴⽯穿-while循环已完成升级任务进度TheprogressoftheUpgradetask当前任务任务:遍历江河-for循环与range进行中>>>完成本任务,成为【导流师】!01第一节认识for循环:遍历序列Understandingtheforloop:Traversingasequence什么是for循环?Whatisaforloop?for循环不同于while循环依赖条件持续执⾏,for循环专注于<strong>遍历</strong>—个序列或其他可迭代对象中的每—个元素。列表

元组

字符串什么是for循环?Whatisaforloop?for循环不同于while循环依赖条件持续执⾏,for循环专注于<strong>遍历</strong>—个序列或其他可迭代对象中的每—个元素。列表

元组

字符串什么是for循环?Whatisaforloop?智水长老夫for循环,犹河总历访水文诸站,序中之数,皆依次而至。““什么是for循环?Whatisaforloop?for循环的特点专注于逐个处理序列中的元素不需要⼿动设置、更新计数器不需要⼿动检查结束条件代码更简洁、可读性更强适⽤于处理有限集合的情况什么是for循环?Whatisaforloop?for循环的特点专注于逐个处理序列中的元素不需要⼿动设置、更新计数器不需要⼿动检查结束条件代码更简洁、可读性更强适⽤于处理有限集合的情况什么是for循环?Whatisaforloop?for循环与while循环对⽐特性for循环while循环主要用途遍历序列条件驱动执行计数器自动管理手动管理适用场景已知次数/序列未知次数/条件for循环的基本结构Thebasicstructureofaforloopfor

变量

in

可迭代对象

:#循环体:#对可迭代对象中的每个元素执⾏这⾥的代码基本语法for循环的基本结构Thebasicstructureofaforloop

for

变量

in

可迭代对象

:#循环体:#对可迭代对象中的每个元素执⾏这⾥的代码for循环的基本结构ThebasicstructureofaforloopPython

中常见的可迭代对象:类型示例列表(List)["三峡⼤坝","葛洲坝","⼩浪底"]字符串(String)"Hydraulics"(遍历每个字符)字典(Dict){"river":"⻓江","dam":"三峡"}(遍历键)range()对象range(5)(⽣成0,1,2,3,4)元组(Tuple)("春","夏","秋","冬")02第二节使⽤for循环:巡查数据Useaforloop:Inspectthedata示例:遍历⼤坝列表Example:TraversethelistofDAMS#假设这是我们的⽔利枢纽列表dams=

["三峡⼤坝","葛洲坝",

"⼩浪底"]#使⽤

for循环依次打印每个⼤坝的名字print("开始巡查各⼤坝:

")for

dam_name

in

dams:print(f"正在检查

:{dam_name}")print("所有⼤坝巡查完毕。

")代码示例示例:遍历⼤坝列表Example:TraversethelistofDAMS#假设这是我们的⽔利枢纽列表dams=

["三峡⼤坝","葛洲坝",

"⼩浪底"]#使⽤

for循环依次打印每个⼤坝的名字print("开始巡查各⼤坝:

")for

dam_name

in

dams:print(f"正在检查

:{dam_name}")print("所有⼤坝巡查完毕。

")代码示例输出结果示例:遍历⼤坝列表Example:TraversethelistofDAMS输出结果#假设这是我们的⽔利枢纽列表dams=

["三峡⼤坝","葛洲坝",

"⼩浪底"]#使⽤

for循环依次打印每个⼤坝的名字print("开始巡查各⼤坝:

")for

dam_name

in

dams:print(f"正在检查

:{dam_name}")print("所有⼤坝巡查完毕。

")代码示例开始巡查各⼤坝:正在检查

:三峡⼤坝正在检查

:葛洲坝正在检查

:⼩浪底所有⼤坝巡查完毕示例:遍历⼤坝列表Example:TraversethelistofDAMS#假设这是我们的⽔利枢纽列表dams=

["三峡⼤坝","葛洲坝",

"⼩浪底"]#使⽤

for循环依次打印每个⼤坝的名字print("开始巡查各⼤坝:

")for

dam_name

in

dams:print(f"正在检查

:{dam_name}")print("所有⼤坝巡查完毕。

")代码示例关键特点:for循环会⾃动处理遍历的开始和结束,⽆需像while那样⼿动管理计数器或检查结束条件。输出结果开始巡查各⼤坝:正在检查

:三峡⼤坝正在检查

:葛洲坝正在检查

:⼩浪底所有⼤坝巡查完毕遍历其他类型的序列Traversesequencesofothertypes#遍历字符串中的每个字符river_name=

"⻓江"print("字符分析:

")for

character

in

river_name:print(f"字符

:{character}")遍历字符串字符分析:字符

:

⻓字符

:

江输出结果遍历其他类型的序列Traversesequencesofothertypes#遍历字符串中的每个字符river_name=

"⻓江"print("字符分析:

")for

character

in

river_name:print(f"字符

:{character}")遍历字符串字符分析:字符

:

⻓字符

:

江输出结果遍历其他类型的序列Traversesequencesofothertypes#⽔库及其所在河流reservoirs=

{"三峡":

"⻓江","⼩浪底":

"黄河","丹江⼝

":

"汉江"}#默认遍历字典的键for

reservoir

in

reservoirs:print(f"⽔库

:{reservoir}")print(f"河流

:{reservoirs

[reservoir]}")#也可以使⽤

items()同时获取键和值for

reservoir,

river

in

reservoirs.items():

print(f"⽔库

:{reservoir},河流

:

{river}")遍历字典遍历其他类型的序列Traversesequencesofothertypes#⽔库及其所在河流reservoirs=

{"三峡":

"⻓江","⼩浪底":

"黄河","丹江⼝

":

"汉江"}#默认遍历字典的键for

reservoir

in

reservoirs:print(f"⽔库

:{reservoir}")print(f"河流

:{reservoirs

[reservoir]}")#也可以使⽤

items()同时获取键和值for

reservoir,

river

in

reservoirs.items():

print(f"⽔库

:{reservoir},河流

:

{river}")遍历字典03第三节range()函数:⽣成数字序列Therange()function:Generatesasequenceofnumbers为何需要range()?Whyisrange()needed?““

欲循环有定数,或次第而行(若测河道百丈),当用range()。此函数可生整数序列,以定循环之度。为何需要range()?Whyisrange()needed?range()的作⽤⽣成—个有序的整数序列常⽤于执⾏固定次数的循环不需要事先创建完整的数字列表内存使⽤⾼效(惰性计算)相⽐列表更适合表示⼤范围的数字序列应用场景执⾏固定次数的操作创建按特定间隔分布的数据点配合索引访问序列中的元素⽣成数字列表迭代固定范围内的数字range()返回的不是列表,⽽是一个可迭代的range对象,

只在需要时才⽣成值。range()的三种⽤法Threeusagesofrange()range(stop)1——range()的三种⽤法Threeusagesofrange()range1——(stop)⽣成从0开始,到stop-1结束的整数序列range()的三种⽤法Threeusagesofrange()#⽣成0

到4

的序列for

i

in

range(5):#会输出0,

1,

2,

3,

4print(i)01234range(5)⽣成的序列⽣成从0开始,到stop-1结束的整数序列range(stop)1——range()的三种⽤法Threeusagesofrange()range(start,stop)2——range()的三种⽤法Threeusagesofrange()range2⽣成从start开始,到stop-1结束的整数序列——(start,stop)range()的三种⽤法Threeusagesofrange()#⽣成

2

到

5

的序列for

i

in

range(2,6):#会输出2,

3,

4,

5print(i)2345range(start,stop)2⽣成从start开始,到stop-1结束的整数序列——range(2,6)⽣成的序列range()的三种⽤法Threeusagesofrange()range(start,stop,step)3——range()的三种⽤法Threeusagesofrange()range3——⽣成从start开始,到stop-1结束,步⻓为step的整数序列(start,stop,step)range()的三种⽤法Threeusagesofrange()13579range(start,stop,step)3——⽣成从start开始,到stop-1结束,步⻓为step的整数序列range(1,10,2)⽣成的序列#⽣成

1

到9

的奇数序列for

i

in

range(1,

10,2):#会输出

1,

3,

5,

7,

9print(i)range()与for结合:测量江河Thecombinationofrange()andfor:measuringriversprint("计算数字1到5

的平⽅:")for

number

in

range(1,

6):square=

number

**

2print(f"{number}的平⽅是{square}")计算1到5的平⽅range()与for结合:测量江河Thecombinationofrange()andfor:measuringriversprint("计算数字1到5

的平⽅:")for

number

in

range(1,

6):square=

number

**

2print(f"{number}的平⽅是{square}")计算1到5的平⽅计算数字1到5的平⽅:1

的平⽅是

12

的平⽅是43

的平⽅是94

的平⽅是165

的平⽅是25输出结果range()与for结合:测量江河Thecombinationofrange()andfor:measuringrivers#⽔库及其蓄⽔量(亿⽴⽅⽶)reservoirs=

["三峡","丹江⼝

",

"⼩浪底"]capacities=

[393,

290,

126]#使⽤range和索引同时访问两个列表print("⽔库蓄⽔量统计:")for

i

in

range(len(reservoirs)):print(f"{reservoirs

[i]}⽔库的蓄⽔量为"f"{capacities

[i]}亿⽴⽅⽶

")使⽤索引访问列表元素range()与for结合:测量江河Thecombinationofrange()andfor:measuringrivers#⽔库及其蓄⽔量(亿⽴⽅⽶)reservoirs=

["三峡","丹江⼝

",

"⼩浪底"]capacities=

[393,

290,

126]#使⽤range和索引同时访问两个列表print("⽔库蓄⽔量统计:")for

i

in

range(len(reservoirs)):print(f"{reservoirs

[i]}⽔库的蓄⽔量为"f"{capacities

[i]}亿⽴⽅⽶

")使⽤索引访问列表元素range()与for结合:测量江河Thecombinationofrange()andfor:measuringrivers#⽔库及其蓄⽔量(亿⽴⽅⽶)reservoirs=

["三峡","丹江⼝

",

"⼩浪底"]capacities=

[393,

290,

126]#使⽤range和索引同时访问两个列表print("⽔库蓄⽔量统计:")for

i

in

range(len(reservoirs)):print(f"{reservoirs

[i]}⽔库的蓄⽔量为"f"{capacities

[i]}亿⽴⽅⽶

")使⽤索引访问列表元素⽔库蓄⽔量统计:三峡⽔库的蓄⽔量为393亿⽴⽅⽶丹江⼝⽔库的蓄⽔量为290亿⽴⽅⽶⼩浪底⽔库的蓄⽔量为126亿⽴⽅⽶输出结果04第四节控制循环:break与continueControlloop:breakandcontinuebreak:中断巡查break:Interrupttheinspection“

如同巡查河道时,若发现重⼤险情,⽴刻停⽌巡查,上报处理,⽆需再看其他地⽅。“break语句⽴即终⽌最内层的循环,跳出循环体,执⾏循环后的代码break:中断巡查break:Interrupttheinspection

#查找列表中的第—个偶数numbers=

[1,

3,

5,

6,

7,

9]print("开始查找第—个偶数

...")for

num

in

numbers:print(f"检查数字

:{num}")if

num%

2

==

0:示例:查找列表中的第⼀个偶数break:中断巡查break:Interrupttheinspectionprint("查找结束。

")#查找列表中的第—个偶数numbers=

[1,

3,

5,

6,

7,

9]print("开始查找第—个偶数

...")for

num

in

numbers:print(f"检查数字

:{num}")if

num%

2

==

0:示例:查找列表中的第⼀个偶数

开始查找第—个偶数

...

检查数字

:

1检查数字

:

3检查数字

:

5检查数字

:

6找到了第—个偶数

:6

查找结束。输出结果print(f"找到了第—个偶数

:{num}")break

#找到后⽴刻跳出循环print("查找结束。

")continue:绕⾏障碍continue:Bypassobstacles“

如同巡查时遇到—处⼩的淤积,暂时⽆法处理,便记录下来,绕过此处,继续巡查下游。“continue语句跳过当前循环的剩余部分,直接开始下—次迭代continue:绕⾏障碍continue:Bypassobstacles

#打印列表中的所有奇数numbers=

[1,

2,

3,

4,

5,

6]print("打印列表中的奇数:")for

num

in

numbers:if

num%

2==

0:

continue

print(num)print("打印完毕。

")示例:打印列表中的所有奇数continue:绕⾏障碍continue:Bypassobstacles#这⾏只在num是奇数时执⾏#打印列表中的所有奇数numbers=

[1,

2,

3,

4,

5,

6]print("打印列表中的奇数:")for

num

in

numbers:if

num%

2==

0:continueprint(num)print("打印完毕。

")示例:打印列表中的所有奇数

打印列表中的奇数

:135打印完毕。输出结果#

如果是偶数#跳过本次循环的print语句,直接开始下—次#这⾏只在num是奇数时执⾏合理使⽤break和continueUse"break"and"continue"reasonably使⽤

break

的场景搜索任务:—旦找到⽬标元素,不需要继续搜索验证任务:—旦发现不符合条件的情况,⽴即结束验证出现错误或异常情况:

需要⽴即停⽌当前处理达到特定阈值:如找到⾜够数量的结果合理使⽤break和continueUse"break"and"continue"reasonably使⽤

break

的场景搜索任务:—旦找到⽬标元素,不需要继续搜索验证任务:—旦发现不符合条件的情况,⽴即结束验证出现错误或异常情况:

需要⽴即停⽌当前处理达到特定阈值:如找到⾜够数量的结果使⽤

continue

的场景过滤数据:跳过不符合处理条件的元素处理特殊情况:某些特殊值需要不同的处理路径避免嵌套条件判断:使代码更清晰跳过⽆效或空数据合理使⽤break和continueUse"break"and"continue"reasonably总结:遍历江河的能⼒已掌握Summary:Theabilitytotraverserivershasbeenmastered"任务完成!汝已掌握for循环遍历序列之法,如同拥有了巡视江河湖海图卷的能⼒。更习得range()函数⽣成序列之道,可丈量天地,计数万物。同时,break与continue如同控⽔令牌,让你能灵活掌控数据流的⾛向。善⽤这些⼯具,汝在疏导数据洪流的道路上⼜迈进了坚实—步!"⻓⽼⽈总结:遍历江河的能⼒已掌握Summary:Theabilitytotraverserivershasbeenmastered下⼀课:九曲连环-嵌套循环与列表推导式G当前任务任务:遍历江河-for循环与range已完成试炼!索引⼭河之术九曲连环-嵌套循环与列表推导式Nine-bendChain-NestedLoopandlistderivationformula疏导之术-升级任务最终篇TheArtofGuidance-Theultimateupgrademission今⽇是⻓⽼的指引—智水长老“疏导之术”治⽔之道,在于因势利导。遇岔路需判断(条件),遇重复需疏通(循环)。

掌握此术,⽅能控制数据流向。当你掌握了循环中再循环的奥妙,以及⽤—⾏代码创建列表的最后—环【导流师】!九曲连环之法。的精妙,⽅可称为真正的升级任务进度TheprogressoftheUpgradetask任务:岔路抉择-条件语句任务:⽔滴⽯穿-while循环任务:遍历江河-for循环与range已完成任务已完成任务:九曲连环-嵌套循环与列表推导式当前任务进行中>>>完成本任务,成为【导流师】!任务目标本次任务:九曲连环-嵌套循环与列表推导式LessonTask:IndexingMountainsandRivers-DetailedExplanationoftheDictionary理解嵌套循环的概念与执⾏流程掌握嵌套循环在⼆维数据中的应⽤学习列表推导式的基本语法掌握带条件的列表推导式理解嵌套列表推导式能够合理应⽤嵌套循环与列表推导式解决实际问题任务目标本次任务:九曲连环-嵌套循环与列表推导式LessonTask:IndexingMountainsandRivers-DetailedExplanationoftheDictionary理解嵌套循环的概念与执⾏流程掌握嵌套循环在⼆维数据中的应⽤学习列表推导式的基本语法掌握带条件的列表推导式理解嵌套列表推导式

能够合理应⽤嵌套循环与列表推导式解决实际问题01第一节嵌套循环:循环中的循环Nestedloop:Aloopwithinaloop嵌套循环的概念Theconceptofnestedloops什么是嵌套循环?嵌套循环是指—个循环结构内部完整地包含另—个循环结构。好⽐整理—个有多个抽屉的柜⼦:外层循环:遍历每—个抽屉内层循环:在当前打开的抽屉⾥

,检查每—件物品嵌套循环的概念Theconceptofnestedloopsfor

外层变量

in

外层序列

:#外层循环的操作for

内层变量in

内层序列

:#

内层循环的操作嵌套循环的基本结构嵌套循环的概念Theconceptofnestedloops嵌套循环的基本结构for

外层变量

in

外层序列

:#外层循环的操作for

内层变量in

内层序列

:#

内层循环的操作嵌套循环的概念Theconceptofnestedloopswhile外层条件:

#外层循环的操作

while内层条件:

#内层循环的操作嵌套循环的基本结构for

外层变量

in

外层序列

:#外层循环的操作while

条件:#

内层循环的操作嵌套循环的概念Theconceptofnestedloops开始外层循环第一次迭代内层循环完整执⾏外层循环下—次迭代外层循环是否结束?结束否嵌套循环的执行逻辑嵌套循环的执⾏流程Theexecutionprocessofnestedloops执⾏流程核心特点外层循环每执⾏—次,

内层循环会完整地执⾏其所有迭代。内层循环对于外层循环的每—次迭代都会重新执⾏—遍。嵌套循环的执⾏流程Theexecutionprocessofnestedloops#外层循环控制⾏for

i

in

range(3):#

内层循环控制列forj

in

range(2):

#

j

将会是

0,

1print(f"外层迭代i=

{i},

内层迭代j

=

{j}")简单示例嵌套循环的执⾏流程Theexecutionprocessofnestedloops#外层循环控制⾏for

i

in

range(3):#

内层循环控制列forj

in

range(2):

#

j

将会是

0,

1print(f"外层迭代i=

{i},

内层迭代j

=

{j}")简单示例#

i将会是0,

1,

2嵌套循环的执⾏流程Theexecutionprocessofnestedloops#外层循环控制⾏for

i

in

range(3):#

i将会是0,

1,

2#

内层循环控制列forj

in

range(2):

#

j

将会是

0,

1print(f"外层迭代i=

{i},

内层迭代j

=

{j}")简单示例外层迭代i

=

0,

内层迭代

j

=

0外层迭代i

=

0,

内层迭代

j

=

1外层迭代i

=

1,

内层迭代

j

=

0外层迭代i

=

1,

内层迭代

j

=

1外层迭代i

=

2,

内层迭代

j

=

0外层迭代i

=

2,

内层迭代

j

=

1输出结果嵌套循环的应⽤场景Theapplicationscenariosofnestedloops示例嵌套循环最常见的应⽤是处理⼆维数据,如矩阵或表格。处理⼆维数据结构嵌套循环的应⽤场景Theapplicationscenariosofnestedloopsmatrix

=

[[1,

2,

3],[4,

5,

6],[7,

8,

9]]示例嵌套循环最常见的应⽤是处理⼆维数据,如矩阵或表格。处理⼆维数据结构for

row

in

matrix:

#

外层循环遍历每—⾏

for

item

in

row:#

内层循环遍历⾏中每个元素print(item,end="

")print()#每⾏结束后换⾏嵌套循环的应⽤场景Theapplicationscenariosofnestedloops示例嵌套循环最常见的应⽤是处理⼆维数据,如矩阵或表格。123456789输出结果处理⼆维数据结构matrix

=

[[1,

2,

3],[4,

5,

6],[7,

8,

9]]for

row

in

matrix:

#

外层循环遍历每—⾏

for

item

in

row:#

内层循环遍历⾏中每个元素print(item,end="

")print()#每⾏结束后换⾏嵌套循环的应⽤场景Theapplicationscenariosofnestedloops其他应⽤场景#⽣成⽹格坐标for

x

in

range(3):for

y

in

range(3):print(f"坐标

:

({x},{y})")⽣成坐标对#九九乘法表foriinrange(1,10):forjinrange(1,i+1):print(f"{j}×{i}={i*j}",end="")print()#换⾏打印九九乘法表嵌套循环的注意事项Precautionsfornestedloops

可读性过多的嵌套(通常超过三层)会使代码难以理解和维护。当嵌套太深时,考虑将部分逻辑提取到函数中,或使⽤其他技术如列表推导式。性能考虑嵌套循环的执⾏次数是内外层循环次数的乘积。层数过多或单层循环次数过⼤,可能导致程序运⾏缓慢。

break和continue这些语句只影响其所在的最内层循环。循环变量确保内外层循环使⽤不同的变量名,避免混淆。常⽤的内外层循环变量名:i和j、x和y、outer和inner等。02第二节列表推导式:优雅创建列表Listderivation:Createlistsgracefully什么是列表推导式Whatisalistderivation概念定义列表推导式是—种更简洁、更具可读性的创建列表的⽅法。通常⽤于根据一个已存在的可迭代对象(如列表、元组、字符串、range)来创建新的列表。对⽐传统⽅法squares

=

[]for

x

in

range(1,

6):squares.append(x**2)#squares

结果

:

[1,

4,

9,

16,

25]传统⽅法创建平⽅数列表squares=

[x**2

forx

in

range(1,

6)]#squares

结果

:

[1,

4,

9,

16,

25]使⽤列表推导式列表推导式的基本语法Thebasicsyntaxoflistderivations基本形式与注释1expression:对item进⾏处理的表达式,其结果将成为新列表的元素。[expression

for

item

in

iterable]2item:从iterable中取出的每个元素。3iterable:任何可迭代的对象,如列表、

字符串、range()等。列表推导式:基本示例Listderivation:Basicexampletext=

"Python"uppercase_chars=

[char.upper()for

char

in

text]#uppercase_chars结果

:

['P',

'Y',

'T',

'H',

'O',

'N']将字符串中的每个字符转为⼤写:列表推导式:添加条件Listderivation:Addconditions带条件的列表推导式[expression

for

item

in

iterable

if

condition]condition:—个布尔表达式,

只有当其为True时,expression才会被计算并加⼊新列表。条件筛选放在for循环后⾯,⽤于过滤元素列表推导式:条件筛选示例Listderivation:Anexampleofconditionalfilteringdams

=

{"三峡⼤坝":

185,"葛洲坝":

70,"⼩浪底":

154,"丹江⼝

":

97}tall_dams=

[name

for

name,

height

in

dams.items()

if

height

>

100]#tall_dams结果

:

['三峡⼤坝',

'⼩浪底']筛选⾼度超过100⽶的⼤坝:列表推导式:条件表达式(if-else)Listderivation:Conditionalexpression(if-else)[expression_if_true

if

condition

else

expression_if_false

for

item

in

iterable]带if-else的列表推导式注意:if-else条件在for循环前⾯!与纯if条件过滤不同,

这⾥的if-else是条件表达式,⽤于决定每个元素的值,⽽不是过滤元素。列表推导式:条件表达式示例Listderivation:Examplesofconditionalexpressions条件表达式示例这相当于:numbers=

[1,

2,

3,

4,

5]labels=

["Even"if

num%

2

==

0

else

"Odd"

for

num

in

numbers]#

labels结果

:

['Odd',

'Even',

'Odd',

'Even',

'Odd']将数字列表中的偶数标记为"Even",

奇数标记为"Odd":列表推导式:条件表达式示例Listderivation:Examplesofconditionalexpressions条件表达式示例labels

=

[]for

num

in

numbers:这相当于:numbers=

[1,

2,

3,

4,

5]labels=

["Even"if

num%

2

==

0

else

"Odd"

for

num

in

numbers]#

labels结果

:

['Odd',

'Even',

'Odd',

'Even',

'Odd']将数字列表中的偶数标记为"Even",

奇数标记为"Odd":if

num%

2

==

0:labels.append("Even")

else:labels.append("Odd")列表推导式:条件表达式

Listderivation:Conditionalexpression)[xfor

x

in

data

if

condition]对⽐两种不同的列表推导式条件⽤法过滤元素(if在for后⾯):[xif

condition

else

y

for

x

in

data]转换元素(if-else在for前⾯):列表推导式:嵌套Listderivation:Nesting嵌套的for循环按照从左到右的顺序,相当于外循环在前,

内循环在后。嵌套列表推导式列表推导式也可以嵌套,⽤于处理多层可迭代对象,或实现类似嵌套循环的功能。[expression

for

outer_item

in

outer_iterable

for

inner_item

in

inner_iterable]两层嵌套示例语法:列表推导式:嵌套示例Listderivation:Nestedexample扁平化—个⼆维列表flattened=

[numfor

row

in

matrix

for

num

in

row]#flattened

结果

:

[1,

2,

3,

4,

5,

6,

7,

8,

9]matrix=

[

[1,

2,

3],

[4,

5,

6],

[7,

8,

9]]列表推导式的注意事项Precautionsforlistderivationexpressions

虽然列表推导式很强⼤

但过于复杂的推导式(尤其是多层嵌套或复杂条件)会降低代码的可读性。可读性

副作⽤列表推导式主要⽤于创建新列表,不应在表达式中包含有副作⽤的操作(如打印、修改外部变量等)。

对于⾮常复杂的操作,性能差异可能不明显,应优先考虑代码的清晰度。性能何时使⽤列表推导式Whentouselistderivations推荐使⽤的场景简单的映射和过滤操作代码更简洁且更具可读性

处理较⼩的数据集⽆副作⽤的操作不推荐使用场景复杂的多层嵌套逻辑包含复杂条件的操作需要副作⽤的操作需要详细注释才能理解的操作总结:九曲连环之法已成Summary:Themethodofthenine-bendchainconnectionhasbeencompleted智水长老汝已习得'九曲连环'之法!通过嵌套循环,汝能处理层叠复杂的⽔⽂结构;凭借列表推导式,汝更能以精妙之笔,凝练数据处理的奥义。此⼆者,皆为疏导数据洪流之利器!

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论