版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python程序设计基础第3章程序结构第3章程序结构3.1程序结构3.2选择结构3.3循环结构3.4机器龟图形库3.1控制结构1.控制结构:为了控制一级语句的执行顺序而引入的逻辑结构2.程序的结构一般有三种:顺序结构选择结构(也称分支结构)循环结构
顺序结构(sequencestructure)结构的特点是:程序从入口点a开始,按语句的顺序执行所有操作,直到出口点b处,所以称为顺序结构。选择结构(selectionstructure)decisionstructure它需要根据某一特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。循环结构(repetitionstructure)表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。3.1控制结构示例:计算贷款支付额第1阶段:需求分析必须由用户键入利率、贷款数以及贷款的年限必须计算出每月还贷和总还款数第2阶段:系统分析输出是月供和总还款数,可以通过下面的公式来获取:
示例:计算贷款支付额第3阶段:系统设计第1步:提示用户输入年利率、贷款年限和总贷款数目第2步:输入的年利率是百分比格式的数字,除以100转换为小数,再除以12得到月利率。第3步:使用公式计算月供第4步:通过将月供乘以12再乘以贷款年限求出总还款总额。第5步:显示月供和还款总额。示例:计算贷款支付额第4阶段:实现过程编写代码,其中要写成:(1+月利率)**(年限*12)第5阶段:测试过程利用几组样本输入数据来验证输出是否正确顺序结构:程序流程图输入年利率输入年数输入总贷款额计算月利率
计算月供
计算总还款数
输出结果开始结束代码示例:#计算贷款支付额#输入年利率,如7.25annualInterestRate=eval(input("输入年利率:"))#输入年数numberOfYears=eval(input("输入年数:"))#输入总贷款额loanAmount=eval(input("输入总贷款额:"))#计算月利率monthlyInterestRate=annualInterestRate/1200#计算月供monthlyPayment=(loanAmount*monthlyInterestRate)/\(1-1/(1+monthlyInterestRate)**(numberOfYears*12))#计算总还款数totalPayment=monthlyPayment*numberOfYears*12#显示结果print("月供是:",int(monthlyPayment*100)/100)#保留两位小数print("总还款数是:",int(totalPayment*100)/100)3.2.1.单分支选择结构3.2.2.双分支选择结构3.2.3多分支选择结构3.2.4嵌套选择结构3.2选择结构3.2选择结构基本的条件语句有分支的条件语句多分支if-elif-else嵌套选择结构if条件:
语句块1
if条件:
语句块1else:
语句块2if条件1:
语句块1elif条件2:
语句块2…elif条件n:
语句块nelse:
语句块n+1
if条件:
语句块1else:
语句块2语句块中包含选择结构语句a=3ifa:print(“true”)else:
print(“false”)a=3ifa=2:print(“true”)else print(“false”)a=Trueifa:print(“true”)else print(“false”)示例:求某年某月包含多少天开始输入年year输入月month是2月?是闰年?29天YYNN28天1,3,5,7,8,10,12月?31天YN30天结束示例#输入年、月year=int(input("年:"))month=int(input("月:"))ifmonth==2:#判断该年是否是闰年else:print(str(year)+"年"+str(month)+"月是"+str(days)+"天")ifmonth==1ormonth==3ormonth==5ormonth==7ormonth==8ormonth==10ormonth==12:days=31else:days=30if(year%4==0andyear%100!=0)or(year%400==0):days=29else:days=28#也可以用标记
leap=(year%4==0andyear%100!=0)or(year%400==0)ifleap:days=29else:days=28Ifa=3:
如同程序结构中有分支结构,在人生的道路上也不会一直是一条直道,会面临着很多的选择,但只要你认准了方向,做你认为正确的选择,勇往直前,就一定能到达你的目标。注:max=aifa>belseb这是一种类似于其它编程语言中三目运算符?:的写法。Python是一种极简主义的编程语言,它没有引入?:这个新的运算符,而是使用已有的ifelse关键字来实现相同的功能。3.3.1单分支选择结构格式:
if条件:
语句块1#分支语句块,书写时必须缩进。语句块1条件TrueFalse只有一条选择执行的路径,如果条件不是True,退出结构3.3.1单分支选择结构一个基本的条件语句由一个关键字if开头,跟上一个表示条件的逻辑表达式,然后是一个冒号:。从下一行开始,所有缩进了的语句就是当条件成立(逻辑表达式计算的结果为True)的时候要执行的语句。如果条件不成立,就跳过这些语句不执行,而继续下面的其他语句。3.3.1单分支选择结构3.3.1单分支选择结构(1)输入一个学生的成绩,判断其是否及格了输入成绩scorescore>=60YN输出及格了结束开始3.3.1单分支选择结构score=int(input("请输入分数:"))ifscore>=60:print("恭喜!"+str(score)+"分及格了!")print("恭喜!",score,"分及格了!")3.3.1单分支选择结构x=int(input())y=z=0ifx>20:y=100 #书写缩进,当x>20时执行z=200 #书写缩进,当x>20时执行print(y+z) #if语句后续的语句3.3.2双分支选择结构(2)输入一个学生的成绩,判断其是及格还是不及格输入成绩scorescore>=60YN输出及格了结束开始输出不及格3.3.2双分支选择结构格式:if条件:
语句块1#条件成立时执行。else:
语句块2#条件不成立时执行。if-else的流程图
语句块1条件TrueFalse语句块23.3.2双分支选择结构score=int(input("请输入分数:"))ifscore>=60:print("恭喜!"+str(score)+"分及格了!")else:print("很遗憾!"+str(score)+"分不及格!")3.3.2双分支选择结构num1=int(input())num2=int(input())ifnum1>num2:
max=num1
else:
max=num2
print(max)例
比较2个数的大小语句块2(条件不成立时执行)语句块1(条件成立时执行)3.3.3多分支选择结构if-elif-else
语句if
condition_1:
statement(s)elif
condition_2:
statement(s)elif
condition_3:
statement(s)else:statement(s)根据需要可以插入多个elif从句3.3.3多分支选择结构x=1;y=2;ifx==1:print("true")elify==2:print("false")else:print("truefalse")3.3.3多分支选择结构(3)输入一个学生的成绩,判断其是优秀、良好、中等、及格还是不及格3.3.3多分支选择结构score=int(input("请输入分数:"))ifscore>=90:print(str(score)+"分是优秀!")elifscore>=80:print(str(score)+"分是良好!")elifscore>=70:print(str(score)+"分是中等!")elifscore>=60:print(str(score)+"分是及格!")else:print("很遗憾!"+str(score)+"分不及格!")3.3.4嵌套的选择结构3.3.4嵌套的选择结构在嵌套if语句里,最重要的问题是else的匹配。else总是根据它自己所处的缩进和同列的最近那个if匹配。编写嵌套的if语句时应遵守下列规则:确保每一个else从句都与它对应的if从句对齐。确保每一个语句块内的语句都保持一致的缩进3.3.4嵌套的选择结构score=int(input("请输入分数:"))ifscore>=70:ifscore>=80:ifscore>=90:print(str(score)+"分是优秀!")else:print(str(score)+"分是良好!")else:print(str(score)+"分是中等!")else:ifscore>=60:print(str(score)+"分是及格!")else:print("很遗憾!"+str(score)+"分不及格!")第3章循环结构3.3.1.while循环3.3.2for循环语句3.3.3嵌套循环3.3.4跳转语句使用循环目的:告诉程序重复执行某些语句。示例:计算1~5之间数的和num=1,sum=0num<=5?Ysum=sum+numN输出累加和sum开始结束num=1sum=0whilenum<=5sum=sum+num
num=num+1print(“1-5的和为:"+str(sum))num=1sum=0whilenum<=5:sum=sum+num
num=num+1print(“1-5的和为:"+str(sum))num=num+1指出程序中的错误3.3.1while循环语句while循环也称为先测试循环,一个循环体单次执行被称作循环的一次迭代。注:条件表达式永远为true,无限循环(死循环)
。3.3.1while循环语句累加和:通过循环的每一次迭代累加得到一组数据的和。3.3.1while循环语句while条件:
语句块1#书写缩进else:
语句块2#书写缩进条件语句块1TrueFalse语句块23.3.1while循环语句执行while语句的流程:判断条件是否成立如果条件成立,则执行语句块1回到第1步如果条件不成立,若有else子句,执行语句块2结束循环语句书写必须缩进在循环体内部,应该有改变循环条件的语句,以控制循环的次数,避免产生无限循环(死循环)。示例:成绩输入错误重新输入输入一个学生的成绩,首先判断输入的分数是否是0和100之间#判断输入的成绩是否正确score=int(input("请输入分数:"))whilescore<0orscore>100:score=int(input("请重新输入分数:"))ifscore>=90:print(str(score)+"分是优秀!")elifscore>=80:print(str(score)+"分是良好!")elifscore>=70:print(str(score)+"分是中等!")elifscore>=60:print(str(score)+"分是及格!")else:print("很遗憾!"+str(score)+"分不及格!")输入成绩scorescore>=0并且score<=100YN判断成绩等级结束开始示例:计算1~100内的偶数累加和sum=0num=0;whilenum<=100: sum=sum+numnum=num+2print("sum="+str(sum))示例:计算1~100内的偶数累加和sum=0num=1;whilenum<=100:ifnum%2==0:sum=sum+numnum=num+1print("sum="+str(sum))判断一个数是否为完全立方数num=int(input("输入一个整数:"))ans=0whileans**3<abs(num):ans=ans+1ifans**3==num:ifnum<0:ans=-ansprint(str(ans)+"是"+str(num)+"的立方根")else:print(str(num)+“不是完全立方数“)示例:成绩统计输入一个班级的成绩,统计及格的人数和不及格的人数,并求出平均成绩。注:事先不知道班级人数,成绩输入-1结束总人数count=0总分total=0及格人数passNums=0不及格人数nopassNums=0平均成绩average=0总人数count=0总分total=0及格人数passNums=0不及格人数nopassNums=0平均成绩average=0输入成绩scorescore!=-1?count+=1,total+=scorescore>=60?passNums+=1nopassNums+=1输入成绩score输出信息average=total/countYYNN3.3.2for循环语句:计数控制循环循环迭代执行的次数是确定的
一般格式:
for变量in[值1,值2,…]:
语句块示例:计算1~5之间数的累加和(for循环)num=1,sum=0num<=5?Ysum=sum+numN输出累加和sum开始结束sum=0fornumin[1,2,3,4,5]:sum=sum+numprint("1-5的累加和为:"+str(sum))num=1sum=0whilenum<=5:sum=sum+numnum=num+1print("1-5的累加和为:"+str(sum))3.3.2for循环语句forweekin['Sun','Mon','Tues','Wed','Thur','Fri','Sat']:print(week)SunMonTuesWedThurFriSatfornumin[1,2,3,4,5]:print(num,end=',')1,2,3,4,5,3.3.2for循环语句fornumin[1,2,3,4,5]:fornuminrange(5):fornuminrange(1,end+1):sum=0fornumin[1,2,3,4,5]:sum=sum+numprint("1-5的累加和为:"+str(sum))3.3.2for循环语句range函数可以简化计数控制的for循环的编写过程
range
返回一个称为iterable(迭代器)对象迭代器:包含了供迭代处理的一组数据
range
参数含义:一个参数:上限值两个参数:初始和上限值三个参数:初始值、上限值、步长3.3.2for循环语句fornuminrange(1,10,2)示例:计算1~100内的偶数累加和#第二种方法:for方法sum2=0fornum2inrange(1,100+1):ifnum2%2==0:sum2=sum2+num2print("sum2="+str(sum2))#第三种方法:for方法sum3=0fornum3inrange(2,100+1,2):sum3=sum3+num3print("sum3="+str(sum3))#第一种方法:while方法sum1=0num1=1;whilenum1<=100:ifnum1%2==0:sum1=sum1+num1num1=num1+1print("sum1="+str(sum1))num1=2,sum=0whilenum1<=100:sum1=sum1+num1num1=num1+2示例:打印图案54***************************************************
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高科技行业创新报告及壁挂炉智能温控技术突破报告
- 2026年智慧农业机器人创新报告
- 降阶梯治疗对医院感染控制的意义
- 高中网络安全教育中的网络安全教育案例库建设研究教学研究课题报告
- 2026年小班美术测试题及答案
- 2026年游泳培训测试题及答案
- 2026年设计素描表现测试题及答案
- 2026年实体结构检测试题及答案
- 高中2025珍惜时间说课稿
- 2026年处级干部测试题及答案
- 第四章 《金瓶梅》
- 传感器技术与应用-说课
- GB/T 3452.4-2020液压气动用O形橡胶密封圈第4部分:抗挤压环(挡环)
- GB/T 13816-1992焊接接头脉动拉伸疲劳试验方法
- 2022年养老护理员理论考试题库(600题)
- 碳捕集、利用与封存技术课件
- 翰威特-绩效管理理论与操作实务
- 新生儿听力筛查(共29张)课件
- 《消防安全技术实务》课本完整版
- (精心整理)数学史知识点及答案
- 王家岭煤矿初设说明书201204
评论
0/150
提交评论