PYthon语言程序设计课件第3章 程序控制结构_第1页
PYthon语言程序设计课件第3章 程序控制结构_第2页
PYthon语言程序设计课件第3章 程序控制结构_第3页
PYthon语言程序设计课件第3章 程序控制结构_第4页
PYthon语言程序设计课件第3章 程序控制结构_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

3.1 控制结构概述3.1.1 处理模式【例3-1】生活中的处理现象。生活中很多例子表现出“顺序”、“选择”或“循环”的特征。3.1.2 算法的结构化表示1.传统流程图3.1.2 算法的结构化表示图3‑3例3-1的传统流程图表示3.1.2 算法的结构化表示2.N-S流程图图3‑4N-S流程图表示的三种处理模式3.1.2 算法的结构化表示图3‑5例3-1的N-S流程图表示3.1.3 算法的语言表示【例3-4】任意输入两个整数到变量x、y中,将x、y中的数据交换并输出。

图3‑6例3-4的N-S流程图表示3.1.3 算法的语言表示#liti3-4-1.pyx,y=eval(input('任意输入两个整数(用逗号间隔):'))x,y=y,x#交换x、y的值print('x={0},y={1}'.format(x,y))#liti3-4-2.pyx,y=eval(input('任意输入两个整数(用逗号间隔):'))t=x#用变量t来交换x、y的值x=yy=tprint('x={0},y={1}'.format(x,y))3.2 选择结构选择结构也称为分支结构,用于实现根据条件处理不同的问题。选择结构可分为单分支、双分支、多分支以及嵌套的分支结构等类型。3.2.1 双分支结构双分支结构是一种最常见的分支结构,N-S结构流程图如图3-7所示:

图3‑7双分支结构N-S流程图3.2.1 双分支结构对应的Python语句为:if<条件>:

语句块1else:

语句块2if和else后面的冒号(:)不能少,语句块1和语句块2两个分支都要有一致的缩进当条件为真时,执行语句块1,之后结束if语句当条件为假时,执行语句块2,之后结束if语句3.2.1 双分支结构【例3-5】输入成绩grade,分两种情况考虑,低于60输出“不合格”,60以上输出“合格”。#liti3-5-1.pygrade=eval(input('输入成绩:'))ifgrade<60:print('不合格')else:print('合格')程序运行如下:输入成绩:80合格再次运行该程序:输入成绩:50不合格3.2.1 双分支结构Python提供了一个三元条件运算符,语法为: <表达式1>if<条件>else<表达式2>当条件为真时,该三元表达式的值取表达式1的值,否则取表达式2的值。其实在此处的if…else…不是用于表示选择结构语句,而是作为一种特殊的三元运算符,用于构造一种特殊的表达式。3.2.1 双分支结构例3-5用三元运算符也可如下表示:#liti3-5-2.pygrade=eval(input('输入成绩:'))print('不合格'ifgrade<60else'合格')程序运行如下:输入成绩:80合格再次运行该程序:输入成绩:50不合格3.2.2 单分支结构单分支结构是一种特殊的选择结构,流程图如下:图3‑8单分支结构N-S流程图3.2.2 单分支结构对应的Python语句为:if<条件>:

语句块if后面的冒号(:)不能少,语句块要有缩进当条件为真时,执行语句块,之后结束if语句3.2.2 单分支结构#liti3-6.pygrade=eval(input('输入成绩:'))if0<=grade<60:print('差')if60<=grade<70:print('中')if70<=grade<80:print('良')if80<=grade<=100:print('优')程序运行如下:输入成绩:50差【例3-6】输入成绩grade,对成绩分四种情况考虑,若成绩在[0,60),输出“差”;成绩在[60,70),输出“中”;成绩在[70,80),输出“良”;成绩在[80,100],输出“优”。3.2.3 多分支结构多分支结构的语法格式如下:if<条件1>:

语句块1elif<条件2>:

语句块2……elif<条件n-1>:

语句块n-1[else:

语句块n]多分支结构的N-S图3.2.3 多分支结构#liti3-7-1.pygrade=eval(input('输入成绩:'))if0<=grade<60:print('差')elif60<=grade<70:print('中')elif70<=grade<80:print('良')elif80<=grade<=100:print('优')输入成绩:10差输入成绩:65中输入成绩:75良输入成绩:83优输入成绩:96优输入成绩:100优输入成绩:120>>>【例3-7】输入成绩grade,对成绩分四种情况考虑,若成绩在[0,60),输出“差”;成绩在[60,70),输出“中”;成绩在[70,80),输出“良”;成绩在[80,100],输出“优”。3.2.3 多分支结构#liti3-7-2.pygrade=eval(input('输入成绩:'))if0<=grade<60:print('差')elifgrade<70:print('中')elifgrade<80:print('良')else:print('优')输入成绩:-5中输入成绩:10差输入成绩:65中输入成绩:75输入成绩:100优输入成绩:120优【例3-7】

方法二。3.2.3 多分支结构#liti3-7-3.pygrade=eval(input('输入成绩:'))ifgrade<0orgrade>100:print("数据输入有误")elifgrade<60:print('差')elifgrade<70:print('中')elifgrade<80:print('良')else:print('优')输入成绩:-5数据输入有误输入成绩:10差输入成绩:65中输入成绩:75输入成绩:100优输入成绩:120数据输入有误【例3-7】

方法三增加一个条件对边界数据进行判断,使得程序更健壮!!!3.2.4 嵌套分支结构if<条件1>:……if<条件2>:

语句块2[else:

语句块3]……else:……if<条件4>:

语句块4[else:

语句块5]……嵌套的分支结构N-S图3.2.4 嵌套分支结构#liti3-8-1.pygrade=eval(input('输入成绩:'))if0<=grade<=100:ifgrade<60:print('差')elifgrade<70:print('中')elifgrade<80:print('良')else:print('优')else:print('成绩错误')程序运行如下:输入成绩:-5成绩错误输入成绩:110成绩错误输入成绩:88优【例3-8】对例3-7用嵌套的分支结构实现既强健又简洁的程序3.2.4 嵌套分支结构#liti3-8-2.pygrade=eval(input('输入成绩:'))if0<=grade<=100:ifgrade<60:print('差')else:ifgrade<70:print('中')else:ifgrade<80:print('良')else:print('优')else:print('成绩错误')程序运行如下:输入成绩:-5成绩错误输入成绩:110成绩错误输入成绩:88优【例3-8】方法二3.2.5 选择结构综合举例#liti3-9-1.pya=int(input('a='))b=int(input('b='))c=int(input('c='))ifa<b:a,b=b,aifa<c:a,c=c,aifb<c:b,c=c,bprint(“降序结果:”,a,b,c)程序运行如下:a=3b=8c=5降序结果:853【例3-9】任意输入三个整数a、b、c,按从大到小降序排列。(方法一)3.2.5 选择结构综合举例#liti3-9-2.pya=int(input('a='))b=int(input('b='))c=int(input('c='))a,b,c=sorted([a,b,c],reverse=True)print('降序结果:',a,b,c)程序运行如下:a=3b=8c=5降序结果:853【例3-9】任意输入三个整数a、b、c,按从大到小降序排列。(方法二)3.2.5 选择结构综合举例#liti3-10-1.pyy=int(input('输入年份:'))if(y%400==0):print('是闰年')elif(y%4==0andy%100!=0):print('是闰年')else:print('不是闰年')#liti3-10-2.pyy=int(input('输入年份:'))if(y%4==0andy%100!=0)or(y%400==0):print('是闰年')else:print('不是闰年')【例3-10】输入年份,判断是否为闰年。符合以下两个条件中的任何一个都是闰年:①能被400整除;②能被4整除但不能被100整除。3.2.5 选择结构综合举例#liti3-11-1.pya,b,c=eval(input('输入三条边(逗号间隔):'))ifa+b>canda+c>bandb+c>a:ifa==b==c:print('等边三角形')elifa==bora==corb==c:print('等腰三角形')elifa**2+b**2==c**2ora**2+c**2==b**2orb**2+c**2==a**2:print('直角三角形')else:print('普通三角形')else:print('不能构成三角形')#liti3-11-2.pya,b,c=sorted(eval(input('输入三条边(逗号间隔):')))ifa+b>c:ifa==c:print('等边三角形')elifa==borb==c:print('等腰三角形')elifa**2+b**2==c**2:print('直角三角形')else:print('普通三角形')else:print('不能构成三角形')【例3-11】输入三角形的三条边,判断其构成的是等边三角形、等腰三角形、直角三角形,或普通三角形。3.3 循环控制结构循环即往复回旋,指事物周而复始地运动或变化。在程序设计中,通过循环,可以使一组语句重复执行多次。在Python语言中通过for或while可以实现循环控制。3.3.1 while循环语句在Python中,while循环语句的语法格式如下:while循环条件:

循环体语句while循环语句的执行过程是:①计算循环条件,若条件为真,则转步骤②执行;否则结束循环。②执行循环体语句,执行完后转步骤①继续执行。图3‑11while执行流程图3.3.1 while循环语句#liti3-12.pysum=0i=2whilei<100:sum+=ii=i+2print("2+4+..+%d=%d"%(i-2,sum))在本例中请读者思考下面3个问题:①while后面的循环条件能否改为i<=100?②在print输出中,为什么用i-2,而不是i?③在程序liti3-12.py中使用循环变量i,从2遍历到98,如果要让循环变量i从98开始遍历到2,上述程序应如何修改?【例3-12】用while循环语句,编程求100以内(不包括100)的偶数和。3.3.1 while循环语句#liti3-13.pyrate=2.75bal=10000year=0whilebal<20000:year=year+1bal=bal+bal*rate/100print("year=%d,bal=%.2f"%(year,bal))【例3-13】小明现有10000元可以进行理财,准备存入银行。目前银行三年以上的定期年利率是2.75%,假设利率不变,可以利滚利,问至少存多少年后小明的账户余额可以翻倍?3.3.1 while循环语句使用while循环语句设计程序,需要注意以下事项:①在进入循环前要给循环控制变量赋初值,如例3-12中的i和例3-13中的bal。一般来说,循环变量的初值是循环开始的值,循环条件是用循环变量与终值进行比较。②在循环体内至少要有一条语句能够改变循环变量的值,使之趋向循环结束条件,否则,循环将永远不会结束,把永远不会结束的循环称之为“死循环”。③在格式上,循环条件后面一定要有冒号“:”,循环体语句一定要进行缩格,循环结束后的第一条语句一定要与while对齐,否则程序运行时会出错。3.3.2 for循环语句Python中的for循环语句用于遍历可迭代对象中的每一元素,并根据当前访问的元素做数据处理,其语法格式如下:for变量in可迭代对象:

循环体语句for循环语句的执行过程是:依次取可迭代对象中的每一个元素的值,如果有,取出赋给变量,执行循环体语句,否则循环结束。3.3.2 for循环语句for循环语句的执行过程可用图3-14表示3.3.2 for循环语句#liti3-14.pysum=0foriinrange(2,100,2):sum+=iprint("2+4+..+%d=%d"%(i,sum))程序运行结果为:2+4+..+98=2450#liti3-12.pysum=0i=2whilei<100:sum+=ii=i+2print("2+4+..+%d=%d"%(i-2,sum))程序运行结果为:2+4+..+98=2450【例3-14】分别用for和while循环语句,编程求100以内(不包括100)的偶数和。3.3.2 for循环语句#liti3-15.pyprint("华氏温度\t摄氏温度")forFinrange(0,101,10):C=5/9*(F-32)print("%d\t\t%0.2f"%(F,C))华氏温度 摄氏温度0 -17.7810 -12.2220 -6.6730 -1.1140 4.4450 10.0060 15.5670 21.1180 26.6790 32.22100 37.78【例3-15】已知华氏温度与摄氏温度之间的转换关系是:C=(5/9)*(F-32)其中F为华氏温度,C为摄氏温度。编写程序,分别显示华氏温度0,10,20,..,100与摄氏温度的对照表。3.3.2 for循环语句程序代码如下:#liti3-16.pylist1=["Python","C++","Basic","Java"]forlsinlist1:#遍历列表list1中的每一个元素print(ls)程序运行结果为:PythonC++BasicJava【例3-16】已知list1=["Python","C++","Basic","Java"],用for循环实现,一行输出一个元素。3.3.2 for循环语句使用for循环语句设计程序,需要注意以下事项:

①可迭代对象可以是列表、元组、字符串、集合和字典等序列数据,也可以是range等可迭代函数。如果是字典,每次遍历时获取的是元素的键,通过键可以再获取元素的值。②在格式上,for后面一定要有冒号“:”,循环体语句一定要进行缩格,循环结束后的第一条语句要与for对齐,否则程序运行时会出错。3.3.3 break语句break语句用于跳出for循环或while循环,转到循环后的第一条语句去执行。如果break用在多重循环中,则break语句只能跳出它所在的本层循环。其语法格式为: break3.3.3 break语句【例3-17】从键盘输入一个正整数n,判断n是否是素数。素数是指只能被1和它本身整除的数。可以使用反证法,用变量i遍历2..n-1,若n能被某个i整除,则说明n不是素数,提前结束循环,此时i一定小于n,输出“不是素数”,否则输出“是素数”。#liti3-17.pyn=int(input("请输入一个正整数:"))foriinrange(2,n+1):ifn%i==0:

#如果n能被i整除break#说明n不是素数,跳出循环,此时i小于nifi<n:print("%d不是素数!"%n)else:print("%d是素数!"%n)3.3.4 continue语句continue语句用于结束本次循环并开始下一次循环,对于多重循环情况,continue语句作用于它所在的本层循环。【例3-18】先阅读下列程序代码。程序代码如下:#liti3-18.pysum=0whileTrue:

n=eval(input('请输入一个整数(输入0结束程序):'))ifn==0:breakifn%3!=0:continuesum+=nprint("sum=%d"%sum)3.3.5 else语句在Python语言中,for循环和while循环可以有else分支语句。当for循环已经遍历完可迭代对象中的所有元素或while循环的条件为False时,就会执行else分支中的语句。也是就说,在for循环或while循环中,只要不是执行到break语句而退出循环的,如果有else语句,就要执行else分支语句块。3.3.5 else语句带else分支的for循环的语法格式如下:for变量in可迭代对象:

循环体语句else:

分支语句块带else分支的while循环的语法格式如下:while循环条件:

循环体语句else:

分支语句块3.3.5 else语句#liti3-19.pyn=int(input("请输入一个正整数:"))foriinrange(2,n):ifn%i==0:print("%d不是素数!"%n)breakelse:print("%d是素数!"%n)程序运行结果如下:请输入一个整数:1616不是素数!再运行一次:请输入一个整数:3737是素数!【例3-19】从键盘输入一个正整数,判断该数是否是素数。用带else分支的语句改写例3-17中的程序代码。3.3.6 多重循环结构在循环程序设计中,如果一个循环完全包含在另一个循环里面则称之为循环嵌套,也称多重循环。for循环和while循环可以相互嵌套,利用循环嵌套,可以实现更复杂的程序设计。3.3.6 多重循环结构#liti3-20-3.pyforiinrange(1,10):forjinrange(1,10):print("%d*%d=%d"%(i,j,i*j),end='\t')#在每个制表位上输出一个等式,不换行print()#输完了一行9个等式后换行3.3.6 多重循环结构上述程序运行后的结果为: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 3.3.6 多重循环结构该九九乘法表是沿对角线对称的,如果只需要输出沿对角线以下的乘法等式,即要输出如下的九九乘法表,程序应如何修改,请读者自行完成。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=813.3.6 多重循环结构【例3-21】编程,已知primelist=[],求100到200之间(包括100,不包括200)的所有素数,并把素数添加到列表primelist中去,输出该列表及列表的和。在例3-19中,已经知道了如何判断一个数是素数了,现在要判断100到200之间所有数是否是素数,只要在判断素数的代码外面再加上一层循环即可。上述程序的运行结果为:[101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199]sum=3167#liti3-21.pyprimelist=[]n=100whilen<200:foriinrange(2,n):ifn%i==0:break#跳出循环,转到n=n+1执行else:primelist.append(n)#是素数,添加到列表n=n+1print(primelist)print("sum=%d"%sum(primelist))3.3.7 循环结构综合举例利用循环结构来解决实际问题,常采用两种方法,一是迭代法,另一是穷举法。1. 迭代法迭代法也称辗转法,是一种不断用变量的原值递推新值的过程。类似数列中的通项。迭代算法是用计算机解决问题的一种基本方法,它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组语句进行重复执行,在每次执行这组语句时,都从变量的原值推出它的一个新值。利用迭代算法解决问题,需要做好以下三个方面的工作:①确定迭代变量;②建立迭代关系式;③对迭代过程进行控制;1. 迭代法迭代过程的控制又通常可分为两种情况:①一种是所需的迭代次数是个确定的值,可以计算出来;②另一种是所需的迭代次数无法确定。1. 迭代法

1. 迭代法程序代码如下:#liti3-22.pyscore=450r=0.001day=0whilescore<=640:day=day+1score=score*(1+r)print("%ddayslate,score=%.1f"%(day,score))程序运行结果为:353dayslate,score=640.42. 枚举法枚举法,又称穷举法。是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性的没有办法的办法。采用枚举算法解题的基本思路:①确定枚举对象、枚举范围和判定条件;②枚举可能的解,验证是否是问题的解。2. 枚举法#liti3-23.pyprint("Cock\tHen\tChicken")foriinrange(1,20):forjinrange(1,33):k=100-i-jif15*i+9*j+k==300:print("%d\t%d\t%d"%(i,j,k))上述程序运行结果如下:Cock Hen Chicken4 18 788 11 8112 4 843.4 异常处理结构异常是指程序在运行过程中出现的错误而产生的信号。一般情况下,出现了异常,程序将停止运行,程序崩溃,并抛出异常信息,告诉用户出错的原因。异常处理就是为了保证程序的稳定性和容错性,在可能发生异常的程序段加上异常处理结构,捕获异常并对其进行处理,从而使得程序不会因为出现异常而意外停止程序的运行。3.4.1 异常的分类程序的异常主要有两种,一种是语法错误,另一种是逻辑错误。3.4.1 异常的分类异常名称描述AttributeError当访问一个属性失败时引发该异常ImportError当导入一个模块失败时引发该异常IndexError当访问序列数据的下标越界时引发该异常KeyError当访问一个映射对象(如字典)中不存在的键时引发该异常MemoryError当一个操作使内存耗尽时引发该异常NameError当引用一个不存在的标识符时引发该异常OverflowError当算术运算结果超出表示范围时引发该异常RuntimeError当产生其他所有类别以外的错误时引发该异常StopIteration当迭代器没有下一个可获取的元素时引发该异常3.4.1 异常的分类异常名称描述TabError当使用不一致的缩进方式时引发该异常TypeError当传给操作或函数的对象类型不符合要求时引发该异常UnboundLocalError引用未赋值的局部变量时引发该异常ValueError当内置操作或函数接收到的参数具有正确类型、但不正确的值时引发该异常ZeroDivisionError当除法或求模运算的第2个操作数为0时引发该异常FileNotFoundError当要访问的文件或目录不存在时引发该异常FileExistsError当要创建的文件或目录已存在时引发该异常3.4.2 try…except…语句语法格式如下:try:<可能引发异常的程序代码>except[<异常名称11>[,<异常名称12>[,<异常名称13>[,…]]]]:<处理异常的代码1>[except[<异常名称21>[,<异常名称22>[,<异常名称33>[,…]]]]:<处理异常的代码2>…]执行该段程序,若没有异常,则执行完后,结束try语句的执行,转到其后的语句继续运行。若在执行该段代码时触发了异常,则用触发异常产生的异常名称依次与except后面提供的异常名称进行比对,若为同一名称,则运行其后的“处理异常的代码”若产生的异常名称与第一个except中的异常名称不同,则依次与后面的except中的异常名称比对,若相同,则执行其后的处理异常的代码,否则还会抛出异常3.4.2 try…except…语句【例3-24】多次运行下列程序,观察程序运行结果。#liti3-24.pyx,y=eval(input("输入两个整数(suchas5,3):"))try:ifx>y:z=x/yelse:z=y/Xprint("z={0:.3f}".format(z))exceptZeroDivisionError:print("产生除零异常,退出程序!")print("TheEnd!")第一次运行:输入两个整数(suchas5,3):5,3z=1.667TheEnd!第二次运行:输入两个整数(suchas5,3):5,0产生除零异常,退出程序!TheEnd!第三次运行:输入两个整数(suchas5,3):3,5Traceback(mostrecentcalllast):File"D:/myPython/liti3-24.py",line7,in<module>z=y/XNameError:name'X'isnotdefined3.4.2 try…except…语句【例3-26】多次运行下列程序,观察程序运行结果。#liti3-26观察程序运行结果x,y=eval(input("输入两个整数(suchas5,3):"))try:ifx>y:z=x/yelse:z=y/Xprint("z={0:.3f}".format(z))except(ZeroDivisionError,NameError):print("产生异常,退出程序!")print("TheEnd!")【例3-27】多次运行下列程序,观察程序运行结果。#liti3-27.pyx,y=eval(input("输入两个整数(suchas5,3):"))try:ifx>y:z=x/yelse:z=y/Xprint("z={0:.3f}".format(z))except:print("产生异常,退出程序!")print("TheEnd!")3.4.3 try…except…else…语句try…except…else…语句的语法格式如下:try:<可能引发异常的程序代码>except[<异常名称11>[,<异常名称12>[,<异常名称13>[,…]]]]:<处理异常的代码1>[except[<异常名称21>[,<异常名称22>[,<异常名称33>[,…]]]]:<处理异常的代码2>…]else:<没有触发异常执行的代码>else子句是try…except…语句的一个可选项,如果try子句执行时没有触发异常,则在try子句执行完后执行else子句。如果触发了异常,则不会执行else子句。3.4.3 try…except…else…语句【例3

温馨提示

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

评论

0/150

提交评论