2026/5/19 10:17:23
网站建设
项目流程
做信息发布类网站,深圳市室内设计公司,小程序内容编辑,无锡网站优化✅ 包含编程资料、学习路线图、源代码、软件安装包等#xff01;【[点击这里]】#xff01; 第一部分#xff1a;for循环
什么是for循环#xff1f;
for循环用于重复执行某项操作或遍历数据集中的每个元素。
在什么时候需要用到循环#xff1f;
遍历字符串中的每个字符…✅包含编程资料、学习路线图、源代码、软件安装包等【[点击这里]】第一部分for循环什么是for循环for循环用于重复执行某项操作或遍历数据集中的每个元素。在什么时候需要用到循环遍历字符串中的每个字符重复执行某项操作指定次数for循环基本语法1for临时变量in可迭代序列:2循环中的执行语句13循环中的执行语句24...语法分解说明forPython中的关键字用于声明一个for循环。临时变量在每次迭代中这个变量会被指向某个数据中的下一个元素。它是一个局部变量仅在循环体内有效。inPython中的关键字用于指定循环将遍历的序列。可迭代序列任何可以迭代的数据如列表、元组、字符串、字典等。本节课仅涉及字符串和range函数的使用循环中的执行语句在每次迭代中执行的代码块。可以是一条或多条语句它们被缩进以表示它们属于循环体。比如如果某一个数据中的元素,需要被逐个循环调用。1aabcefgh2foriina:# i是临时变量a是可迭代序列3print(i)遍历结果比如如果某一项操作,需要重复执行。1aabcefgh2foriina:3print(我爱编程)操作结果根据运行结果的图片可以看到a这个字符串有 7 个字符print(“我爱编程”)就被执行了 7 次。循环次数由数据集的元素个数决定。下面介绍一个range()函数它用于生成一个指定范围的有序整数数组方便指定循环次数。range()函数作用生成一个指定范围内的有效整数数组方便指定循环次数。语法range(开始数字, 结束数字)两个参数示例1foriinrange(1,10):2print(i)示例运行结果可以看到使用for循环从range(1, 10)中获取了1~9的数字。因此可以得到range()函数有范围要求。范围range()函数包头不含尾左闭右开区间。range()函数是可以只传递一个数据的。上面的示例已经展示了两个参数的用法。下面是单个参数的情况单个参数示例1foriinrange(5):2print(i)运行结果从运行结果可知。range(5)生成从0开始到4的整数序列。从而得知range()函数没有指定开始值的时候默认从0开始一直到指定值前一个值结束符合包头不含尾的特性。综合案例讲解1.反转字符串使用 for 循环来反转一个字符串。1# 定义一个需要反转的字符串。2aI love Python3# 在定义一个空字符串用于存储反转后的字符。4b56# 利用for循环将字符串种的每个字符添加到b的前面7foriina:8bib# 注意i每次都加在b前面。所以最新拿到的字符会出现在字符串最前面实现反转。910# 打印反转后的字符串。11print(b)运行结果为2.过滤字符串中的空格上一节课学习了if判断我们结合for循环使用。完成字符串过滤。1aHello World 哈哈哈哈哈哈2b34foriina:5ifi! :#只有当i不等于空格时才会进行判断里面的拼接操作6bi78print(过滤后的字符串:,b)运行结果3.计算连续整数的累加和累乘使用 for 循环和 range() 函数来计算连续整数的累加和累乘。1# 连续整数的累加: 1-1002sum_03foriinrange(1,101):4sum_i# 等价于sum_ sum_ i56print(总和:,sum_)78# 连续整数的累乘9product110foriinrange(1,101):11product*i# 等价于product product * i1213print(累乘结果:,product)这里插入介绍一下两个赋值运算符加法赋值运算符和*乘法赋值运算符 加法赋值运算符a b 等价于 a a b。这个运算符用于将变量的当前值与右侧的值相加并将结果重新赋值给该变量。例如1# 初始化变量 a 为 12a13print(f初始值: a {a})45# 使用 运算符将 a 的值增加 26a27print(f使用 后: a {a})# 输出为 3运行结果可以看到效果等同于a a 2。* 乘法赋值运算符a * b 等价于 a a * b。这个运算符用于将变量的当前值与右侧的值相乘并将结果重新赋值给该变量。示例1# 初始化变量 a 为 22a23print(f初始值: a {a})45# 使用 * 运算符将 a 的值乘以 36a*37print(f使用 * 后: a {a})# 输出应该是 6运行结果可以看到效果等同于 a a * 3。我们继续看累加和累乘的结果4.结合 if 语句进行条件判断使用 for 循环和 if 语句找出1到100之间的3、5、7的倍数。1fornuminrange(1,101):2ifnum%30:3print(num,是3的倍数~)4ifnum%50:5print(num,是5的倍数~)6ifnum%70:7print(num,是7的倍数~)运行结果将为第二部分交换变量变量交换是编程中常见的操作。在Python中变量交换可以通过下面的方式实现。错误的变量交换见示例直接使用a b 和 b a进行交换会怎样呢1# 错误的交换变量2a13b24# 要求a,b值互换,怎么实现?5ab# a 变成 2原始值 1 丢失6ba# b 也变成 2此时 a 已经是 27print(a)# 输出 28print(b)# 输出 2运行结果可以看到a和b的结果都是2错误分析代码中 a b 后a 的值变为 2此时 a 的原始值 1 丢失。接着 b a 时a 已经是 2因此 b 也被赋值为 2导致交换失败。正确用法第一种-使用临时变量引入一个临时变量用来存储其中一个变量的值然后进行交换。1a12b334# 使用临时变量交换5tempa6ab7btemp89print(a ,a)# 输出: a 310print(b ,b)# 输出: b 1运行结果从运行结果可以看到变量交换成功。正确用法第二种-利用python语法语法a, b b, a1a12b334# 利用Python语法特点。5a,bb,a67print(a ,a)# 输出: a 38print(b ,b)# 输出: b 1运行结果第三部分异常捕获案例讲解1.捕获类型转换错误示例将用户输入的字符串转换为整数。但如果用户输入的是非整型的数据在不使用try语句的情况下系统会在控制台提示错误原因。1ainput(输入一个数字)2aint(a)# 转换为整数类型3接下来我们在控制台内输入非整数字类型的运行结果会出现如图所示报错。其中ValueError是错误类型invalid literal for int() with base 10: aaa’是对错误类型的解释。我们接下来使用try语句对异常错误进行捕获。1ainput(输入一个数字)23try:4aint(a)5exceptValueErrorasv:# 从前面的运行代码中可以知道错误类型是ValueError所以使用了这个类型并用as重命名错误类型为v6print(v)# 打印捕获的错误信息7print(您输入的数据无法转换)# 其它的处理...8我们再次输入非整数字类型的观察运行结果运行结果在使用了异常捕获语句的情况下成功捕获异常让程序正常结束。最后我们使用try…except…else…finally的语句进行其它操作见完整示例1ainput(请输入1个数字:)2try:3aint(a)4print(a)# 打印输入的内容5exceptExceptionase:# Exception-是用来捕获所有错误类型的取别名为e6print(e)# 打印捕获的错误7print(该元素不能转换为整数类型)8else:9ba1# 简单对a变量进行操作10print(b)# 打印b11finally:12print(运行结束)输入正确数字的运行结果输入错误数据的运行结果总结在这个示例中程序尝试将用户输入的字符串转换为整数。如果转换失败例如用户输入了非数字字符则会引发ValueError异常。except块捕获这个异常并打印错误信息和提示信息。else块在没有异常发生时执行而finally块无论是否发生异常都会执行。通过案例我们总结下异常捕获语法1try:2# 可能引发异常的代码3exceptExceptionTypease:# ExceptionType-指具体的错误类型可以使用as语句重命名为ee是一个自定义的变量名。4# 报错发生后运行的代码。5else:6# 如果try块中没有发生异常执行这里的代码7finally:8# 不管有没有发生异常都会执行的代码使用异常捕获语句的意义我们在运行代码的时候会因为错误而终止运行。使用try语句捕获异常,代码不会因为报错而停止运行。还可以利用try语句将错误提示通过用户易于理解的方式展示。【案例】for循环 异常捕获语句获取字符串中数字的倒数字符串为strs ‘abc123def456’什么是倒数一个数的倒数是指这个数相乘结果为1的数假设某数为x不能是0那么它的倒数就是1/x比如2的倒数就是1/2等于0.5。0.5的倒数就是2。1strsabc123def45602foriinstrs:3try:4iint(i)5result1/i6exceptExceptionase:# Exception包含所有错误。也可以分别获取使用ValueError和ZeroDivisionError。7print(i,不能得到倒数)8# print(i)9else:10print(倒数:,result)11finally:12print(计算结束)1314分开Exception的写法15foriinstrs:16try:17# 尝试将字符转换为整数18numint(i)19# 计算倒数20result1/num21exceptValueError:22# 如果字符不是数字则会抛出ValueError异常23print(字符,i,不是数字不能计算倒数)24exceptZeroDivisionError:25# 如果数字是0则会抛出ZeroDivisionError异常26print(数字,i,的倒数无法计算因为除以零是不允许的)27else:28# 成功计算了倒数29print(num,的倒数是:,result)30finally:31# 无论是否发生异常都会执行32print(计算结束)运行结果不同异常的对应处理为什么需要捕获特定的错误类型在异常处理中使用精准的错误类型如 TypeError、ValueError而非笼统的 Exception是编写健壮代码的关键。例如a.它可以精准的修复问题不同的错误不同的处理比如1try:2numint(input(请输入数字))3exceptValueError:# 明确处理非数字输入4print(输入的不是数字)b.避免因为使用Exception隐藏了严重错误。i.比如内存不足的错误MemoryError应让程序崩溃以便及时调试。c.如果有多种错误类型捕获使用分层捕获的方式能让代码结构清晰易于维护。1# 分层捕获一目了然2try:3num1int(input(请输入第一个数字))# 可能触发 ValueError如输入abc4num2int(input(请输入第二个数字))5resultnum1/num2# 可能触发 ZeroDivisionError如 num206exceptValueError:7print(错误请输入整数不要输入文字)8exceptZeroDivisionError:9print(错误除数不能为零)总结精准捕获 快速定位问题 避免意外崩溃 代码简洁。接下来我们具体学习部分常见错误类型的处理方法。1.TypeError类型错误当操作或函数应用于不适当类型的对象时引发譬如1try:2a5103exceptTypeErrorase:4print(e)运行结果数字类型和字符串类型是不可相加的所以他们操作会引发TypeError。异常捕获时使用TypeError这个名称。2.ValueError(值错误)当函数或操作的参数具有正确的类型但不合法时引发。譬如1try:2numint(abc)3exceptValueErrorase:4print(e)运行结果abc’是字符串类型int()函数是无法转换字符串类型的所以引发ValueError。异常捕获时使用ValueError这个名称。3.NameError名称错误当尝试访问一个未定义的变量时会抛出NameError异常。1try:2print(x)3exceptNameErrorase:4print(e)运行结果假设x是一个变量但是前面对它并没有任何定义。这里尝试访问它引发NameError的错误。异常捕获时使用NameError这个名称。4.IndexError索引错误当尝试访问列表、元组或字符串中不存在的索引时引发。列表、元组的数据类型讲解后面的课程有这里只了解这个错误类型1a[1,2,3]2try:3print(a[3])4exceptIndexErrorase:5print(e)运行结果在这个示例中列表a只有三个元素索引为0到2尝试访问索引为3的元素将引发IndexError。异常捕获时使用IndexError这个名称。5.KeyError键错误当尝试访问字典中不存在的键时引发字典数据类型在后面的课程中会讲解这里了解这个错误类型异常捕获时使用KeyError这个名称。1d{a:1,b:2}2try:3print(d[c])4exceptKeyErrorase:5print(e,不存在的键)运行结果字典d中没有键’c’尝试访问它将引发KeyError。6.ZeroDivisionError除零错误当尝试除以零时引发。1try:2a5/03exceptZeroDivisionErrorase:4print(e)运行结果除数为0会引发ZeroDivisionError。所以异常捕获时使用ZeroDivisionError进行捕获。7.IOError输入/输出错误当尝试读取不存在的文件或无法访问文件时引发。1try:2fopen(test.txt,r)# 这个test.txt在项目中不存在3exceptIOErrorase:4print(e)运行结果打开一个不存在的文件’test.txt’引发IOError。使用IOError捕获异常。8.ImportError导入错误当尝试导入不存在的模块或包时引发。导入一个不存在的模块hahahaha会引发ImportError。1try:2importhahahaha3exceptImportErrorase:4print(e)运行结果9.AttributeError属性错误当尝试访问对象不存在的属性时引发。字符串对象s没有hahahaha方法尝试调用它将引发AttributeError。1saaa2try:3s.hahahaha()4exceptAttributeErrorase:5print(e)运行结果使用AttributeError捕获。10.KeyboardInterrupt键盘中断当用户中断程序执行时引发。1input(请输入:)# 不捕获,中断输入的报错2try:3input(请输入:)4exceptKeyboardInterruptase:5print(e)运行结果用户在程序等待输入时按下中断的程序引发KeyboardInterrupt。使用异常捕获语句捕获结果中断方式KeyboardInterrupt报错捕获KeyboardInterrupt➕其它错误类型python中的异常类型还有许多甚至可以自定义异常类型。可以通过官方文档了解异常处理机制和各种异常类型。这里就不细细讲解了。官网文档链接https://docs.python.org/3.9/tutorial/errors.html注意点不要使用错误的类型取捕获异常如果是不确定的异常可以使用Exception。下面我使用ValueError捕获TypeError的异常示例1下面这个示例在上面【TypeError类型错误】有讲解2这里用ValueError的错误类型尝试运行3try:4a5105exceptValueErrorase:6print(e)运行结果可以看到捕获失败因为try语句块中没用ValueError的错误。因此仍然会在程序中出错。这时我可以使用Exception捕获错误1try:2a5103exceptExceptionase:4print(e)运行结果捕获怎样的错误类型与自己写的程序有关。如果有些异常你并不需要精准的捕获具体的错误类型只需要把当前的错误捕获并处理那么使用Exception就好。如果需要精准捕获到特定类型的错误那就可以使用对应错误类型进行捕获。例如ValueError、TypeError、NameError【最后】-拓展复合赋值运算符我们在for循环的案例讲解中简单了解到了两个复合赋值运算符即加法赋值运算符和*乘法赋值运算符。这里在增加讲解下其它的赋值运算符注意事项示例先计算后赋值。先计算“”右边的再复合赋值计算。算术运算符的优先级高于赋值运算符例如1a22a*23# 等价于a a * (2 3)3print(a)# 输出: 10运行结果运算前您可能以为是a 2 * 2 3 7实际上是先计算了235然后在是a 25也就是等于 a (a2) 3输出结果为10。总结最后希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力相信自己文末福利最后这里免费分享给大家一份Python全套学习资料希望能帮到那些不满现状想提升自己却又没有方向的朋友也可以和我一起来学习交流呀。包含编程资料、学习路线图、源代码、软件安装包等【点击这里】领取① Python所有方向的学习路线图清楚各个方向要学什么东西② 100多节Python课程视频涵盖必备基础、爬虫和数据分析③ 100多个Python实战案例学习不再是只会理论④ 华为出品独家Python漫画教程手机也能学习✅可以扫描下方二维码领取【保证100%免费】