版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主讲教师:单
位:Python程序设计第1章计算机与编程基础第1章计算机与编程基础1.1导论1.2硬件与软件1.3存储数据1.4运行程序1.5使用Python1.6总结第1章计算机与编程基础1.1导论1.1程序计算机是可以被编程的;计算机可以完成程序告诉他们做的任何工作;程序:计算机完成某种任务时执行的一组指令集合;程序通常也被称为软件;程序员:(经过培训后)具备一个设计,编写和测试计算机程序技能的人员;程序员也可以被称为软件开发人员或软件工程师;第1章计算机与编程基础1.2硬件与软件1.2硬件硬件:组成计算机的物理设备或组件;计算机是一个由多个设备组成,能够协同工作的系统;最典型的组件;中央处理器(CPU);内存;辅助存储设备;输入,输出设备;1.2中央处理器(一)中央处理器(CPU):是计算机中实际运行程序设备;最重要的设备,没有之一;没有中央处理器(CPU),计算机将无法运行软件;曾经是巨型设备;1.2中央处理器(二)中央处理器(CPU)发展的历程;真空管(1957年以前);晶体管(1958-1963年);集成电路(1964-1969年);大规模集成电路(1970年以后);微处理器:如今CPU是被称为微处理器的小芯片;1.2内存内存:是计算机在程序运行时存储程序代码以及程序正在处理数据的地方;内存通常被称为随机存取储存器(RAM);CPU能快速访问存储在RAM中任意位置的数据;RAM通常时一种易失性内存,仅在程序运行时用于临时存储;计算机关闭时,RAM的内容将被删除;1.2辅助存储设备辅组存储(简称辅存):可以长时间保存数据,即使在计算机关闭时,任能保存数据;程序通常存储在辅存中,并根据需要加载到内存中;辅助存储设备的种类;磁盘驱动器(简称硬盘):传统的硬盘(HDD)将数据通过磁编码写入旋转的圆盘上存储;固态驱动器(也称固态硬盘):固态硬盘(SSD)不存在移动的部件,运行速度比传统硬盘快;USB驱动器(闪存):是插入计算机USB(通用串行总线)端口的小型设备,携带方便,数据存储在称为闪存的特殊类型存储器上;光学设备:如CD(光盘)和DVD(数字多功能磁盘),数据通过一系列凹坑储存在光盘上,光驱通过激光检测凹坑读取编码数据;1.2输入设备输入:指计算机从人和其他设备手机的任何数据;输入设备:收集数据并将其发送到计算机系统的设备称为输入设备;例如,键盘,鼠标,扫描仪,麦克风和数码相机;磁盘驱动器和光盘驱动器也可以被视为输入设备,因为程序和数据从它们中获取并加载到计算机的内存中;1.2输出设备输出:是指计算机为人或其他设备生成的数据;输出可以是文本,图像,音频,或者是比特流(一串二进制代码);输出设备:能格式化和显示计算机生成数据的设备;例如,显示器和打印机;磁盘驱动器和CD刻录机也可以被视为输出设备,因为计算机系统将数据发送给它们以便保存;1.2软件从打开电源到关闭系统,计算机所有的操作都由软件控制;软件一般分为一下两类;例如,显示器和打印机;系统软件;应用软件;1.2系统软件控制和管理计算机基本操作的程序称为系统软件;操作系统:控制,管理计算机中所有硬件的运行;在台式机和笔记本电脑中的操作系统如Windows,MacOS,Linux,移动设备的操作系统如Android,iOS;实用工具:执行专门的任务,辅助计算机的运行或保护数据;如杀毒软件(McAfee),解压缩软件(winrar),数据备份软件;软件开发工具:程序员用来创建,修改和测试软件的程序,如编译程序,解释程序;1.2应用软件使计算机处理日常工作的程序称为应用软件;例如,文字处理程序(WPSWord),网页浏览器(Chrome,Firefox),游戏程序(Dota2,LOL,PUBG)等;第1章计算机与编程基础1.3存储数据1.3计算机如何存储数据?存储在计算机中的所有数据都被转换为0和1的序列;字节:1字节的内存只够存储字母或者小数字;每个字节被分成8个位(比特);位(比特):将其看作能保持正电荷或负电荷的电气元件,如可以开/关的微小开关;字节中位(比特)的开/关模式表示存储在字节中的数据;1.3存储数字(一)位(比特)有两个取值,分别是0和1;计算机使用二进制编码系统;二进制数中每个进位都代表一个值,从最右边往左,进位的值费别为1,2,4,8等;要确定二进制数的值,只需将所有值为1的进位值相加;1.3存储数字(二)一个字节的存储的数字大小范围为0到255;0表示所有位(比特)都是关(00000000),255表示所有位(比特)都是开(11111111);为了存储更大的数字,我们需要使用多个字节;1.3存储字符(一)存储在计算机内存中的任何数据都必须作为二进制数存储;一个字符被存储在内存中时,它首先被转换成一个数字编码,在把数字编码转化为二进制数存储在内存中;最重要的编码方案称为美国信息交换标准码(ASCII),例如A的ASCII码是65;ASCII只定义了128个字符的数字编码;Unicode编码方案与ASCII兼容,也可以表示世界上许多语言的字符1.3存储字符(二)计算机使用编码方案和二进制编号系统也能将负数和实数存储在内存中;负数使用二进制补码即使进行编码;实数使用浮点符号进行编码;1.3其他类型数据数字设备是可以与二进制数据一起工作的任何设备,以二进制形式存储的数据可以用来描述任何事物;数字图像由被称为像素(图像的元素)的小点构成;图像中的每个像素点都转换为代表像素的颜色的一个二进制数存储在内存中;数字歌曲由被称为样本的小块构成;每个样本都被转换成一个二进制数存储在内存中,歌曲分成的样本越多,播放时听起来就越像原始音乐;第1章计算机与编程基础1.4运行程序1.4程序如何运行?(一)CPU被设计用于对数据执行简单的操作,比如;从内存中读取数据,将两个数相加、相减、相乘、相除;理解由机器语言编写的指令及指令集(每个不用品牌的CPU都有自己独特的指令集),机器语言指令总是二进制的;因为CPU只知道如何执行最基本的操作,所以为了完成一项任务需要CPU执行许多操作才行;1.4程序如何运行?(二)程序存储在辅存中,每次CPU执行时都必须将其复制到内存中;1.4程序如何运行?(三)当CPU执行一个程序中的指令时,进行读取-解析-执行的指令周期过程;读取:将下一条待执行的指令从内存中读取到CPU中;解析:CPU解析刚从内存中取出的指令,以确认接下来应该执行的操作;执行:执行操作;1.4从机器语言到汇编语言(一)使用机器语言来编写程序是不切实际的(编写二进制代码非常烦琐和耗时);汇编语言:不使用二进制数来表示指令,而使用称为助记符的缩写来表示指令,从而也简化,方便了程序员的工作;add表示数据相加;mul表示数据相乘;mov表示将值移动到内存中的指定位置;1.4从机器语言到汇编语言(二)汇编器:将汇编语言程序翻译成CPU可直接执行的机器语言程序;汇编语言的缺点:与机器语言一样,必须对CPU的硬件结构和工作原理有一定的了解,最简单的程序也要编写大量汇编语言指令;1.4高级语言低级语言:类似于汇编语言之类的都称为低级语言,低级语言都是机器语言的直接替代品,其本质是上与机器语言非常接近的语言;高级语言:允许程序员专注于想要用程序执行的任务,而不是CPU如何执行这些程序的细节,同时也允许编写功能强大且复杂的程序;无需知道CPU如何工作,也无需编写大量的低级指令;大多高级语言使用易于理解的词语;从某种程度上说,机器语言和汇编语言都是一种机器友好型的语言,而高级语言则是人类友好型的语言;1.4关键字,操作符和语法关键字:在高级语言中用来编写程序的预定义字;每个关键字都有特定的意义;操作符:在高级语言程序中用来对数据执行各种操作;算数运算符、关系运算符等;语法:编写程序时必须严格遵循的一组规则;语句:高级语言中用于编写程序的单个指令;1.4编译器和解释器(一)使用高级语言编写的程序必须翻译成机器语言才能被执行;编译器;解释器;1.4编译器和解释器(二)编译器:将高级语言程序转换为独立机器语言程序的程序;转换后的机器语言程序可以随时执行;1.4编译器和解释器(三)解释器:翻译件并执行高级语言程序的特殊程序;读取程序中的每条独立指令后,会将其转换为机器语言指令,然后立即执行它们;不断重复上面的过程执行程序中的每个指令;解释器将翻译和执行两个过程合并在一起完成,不会创建独立的机器语言程序;1.4编译器和解释器(四)源代码:高级语言编写的语句;语法错误:在源代码中,不严格遵循语法而出现的能阻止程序被翻译的错误;第1章计算机与编程基础1.5使用Python1.5Python在运行Python程序之前,我们必须在确保Python已安装在计算机上且正确配置;下载地址:/downloads/在安装Pyhton时,安装的其中一项就是Python解释器;Python解释器可以在两种模式下使用:交互模式:在此模式下,Python解释器等待键盘上输入的Pyhton语句。一旦输入一条语句,解释器就是执行它,然后等待输入下一条语句;脚本模式:将Pyhton语句写入并保存在Python脚本中,解释器读取Python脚本中的每个语句并执行;1.5交互模式首先打开操作系统的命令行,然后输入python,即启动了Python的交互模式,我们将看到如下提示;表示解释器正在等待键入Python语句;在执行完上一条语句后,提示符>>>将重新出现;如果键入的语句不正确,则显示错误消息;交互模式是学习Python新知识的好方法;1.5在脚本模式下编写和运行Python程序(一)在交互模式输入的Python语句不会另存为程序,交互模式下Python语句只是简单的被执行且将结果显示在屏幕上;如果想创建Python程序,我们可以使用脚本模式;在脚本中保存一组Python语句;Python脚本文件的扩展名为.py;若要运行Python脚本,先在操作系统命令行中进入保存脚本的路径,然后输入以下命令,1.5在脚本模式下编写和运行Python程序(二)首先打开文本编辑器,在其中输入如下,然后保存该文件脚本,并命名为test.py;再打开操作系统的命令行,使用cd命令进入test.py的路径,比如,最后,在正确的文件路径下,使用python命令解释并运行test.py脚本,如下,1.5集成开发环境除了在交互模式和脚本模式启动Python解释器以外,还有另外一种方式编写,执行和测试Pyhton程序,即使用集成开发环境IDE;IDE是一个提供编写,执行和测试程序所需的所有工具的程序;PyCharm和JupyterNotebook都是比较主流的PythonIDE;在IDE中,关键词和程序其他部分以独特的颜色显示,易于程序的阅读;第1章计算机与编程基础1.6总结1.5总结本章所包含的内容有:计算机的主要硬件设备;软件的类型;如何在计算机中存储数据;CPU的基本操作和机器语言;读取-解析-操作的指令周期;如何将低级语言和高级语言翻译成机器语言;Python的安装及Python的解释器模式;Python程序设计第2章Python基础第2章Python基础1.1Python基本类型1.2Python基本运算1.3常量与变量1.4输入输出及处理1.5注释1.6turtle库简介2.1Python数据类型第2章Python基础2.1Python数据类型6类标准数据类型:Number(数字)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典)2.1Python数据类型表2-1Python中的数据类型2.1Python数据类型type()函数可在交互式环境中或脚本中获得该对象的类型信息2.1Python数据类型表2-2类型转换函数2.2Python基本运算1、算术运算表2-3算术运算2.2Python基本运算1、算术运算各运算符的优先级2.2Python基本运算2、关系运算表2-4关系运算符2.2Python基本运算3、逻辑运算表2-5逻辑运算符2.2Python基本运算3、逻辑运算交互模式下,逻辑运算测试如下:2.3常量和变量1、常量:在程序运行期间其值固定不变的量(如圆周率π)2、变量:引用计算机内存中特定位置所存储值的名称2.3常量和变量变量命名规则:(1)字符组成:变量名应由字母、数字和下划线组成,且首字符不得为数字。(2)下划线的使用:为提高可读性,推荐使用下划线分隔单词,如student_age而非studentage。(3)大小写敏感:Python区分大小写,Name、name、NAME被视为三个不同变量。2.3常量和变量变量命名规则:(4)避免关键字与函数名:确保变量名不与Python的保留关键字(如表3-6)或内置函数名冲突,以免引发语法错误。(5)命名规范:变量名应简短且富有描述性,如age优于s,student_name比s_n更能明确表达其意。(6)易混淆字符警告:避免使用容易与数字混淆的字符,如l(与1相似)和O(与0相似)作为变量名开头,以减少视觉误解。2.4输入输出及处理计算机程序执行的处理通常分为以下三个步骤:(1)接收输入;(2)对输入进行某种处理;(3)产生输出。2.4输入输出及处理1、print()函数显示输出(1)输出单一值2.4输入输出及处理1、print()函数显示输出(2)输出变量2.4输入输出及处理1、print()函数显示输出(3)输出多个值2.4输入输出及处理1、print()函数显示输出(4)定制输出格式2.4输入输出及处理2、input()函数接收输入input()函数是Python中用于接收用户键盘输入的内置函数#简单获取用户输入并打印message=input("请输入一些文字:")print("你输入的是:",message)#获取数值输入并进行数学运算num1=int(input("请输入第一个数字:"))num2=int(input("请输入第二个数字:"))sum=num1+num2print("两数之和为:",sum)2.4输入输出及处理2、input()函数接收输入input()函数是Python中用于接收用户键盘输入的内置函数#简单获取用户输入并打印radius=float(input("请输入圆的半径:"))#获取浮点数输入area=3.14*radius**2print("圆的面积为:",area)expression=eval(input(‘请输入表达式3+4并计算:’))print(‘3+4=’,expression)2.4输入输出及处理2、input()函数接收输入#提示用户输入多个以空格分隔的字符串myString=input("请输入三个以空格分隔的字符串:")#使用split()方法按空格分割字符串,得到三个字符串对象str1,str2,str3=myString.split()#打印出分割后的每个字符串print(str1,str2,str3,sep=’\n’)2.4输入输出及处理2、input()函数接收输入#提示用户输入多个以逗号分隔的整数myInteger=input("请输入三个以逗号分隔的整数:")#使用split()方法按逗号分割字符串,得到三个整数对象a,b,c=map(int,myInteger.split(‘,’))#打印出分割后的每个整数print(a,b,c,sep=’\n’)#如果多个数值之间以逗号隔开,上一功能也可以用如下代码分割a1,b1,c1=eval(myInteger)#打印出分割后的每个整数print(a1,b1,c1,sep=’\n’)2.4输入输出及处理3、应用实例【例2-1】编写一个计算身体质量指数BMI的程序。用户输入身高和体重的值,计算并输出身体质量指数BMI的值。name=input()print("你好!"+name)height=float(input("请输入你的身高(m):"))weight=float(input("请输入你的体总(kg):"))bmi=weight/height**2print("你的BMI的数值为:",bmi)2.4输入输出及处理3、应用实例【例2-1】编写一个计算身体质量指数BMI的程序。用户输入身高和体重的值,计算并输出身体质量指数BMI的值。2.4输入输出及处理3、应用实例【例2-2】编写一个程序,提示用户输入球的半径,计算并输出球的体积。#这是一个求球体积的程序。radius=float(input('请输入球的半径:'))pi=3.14volume=4/3*pi*radius**3print('球的体积为:',volume)2.4输入输出及处理3、应用实例【例2-2】编写一个程序,提示用户输入球的半径,计算并输出球的体积。2.4输入输出及处理3、应用实例【例2-3】在同一行依次输入三个值a,b,c,用空格分开,输出的值。a,b,c=map(int,input().split(''))print(b**2-4*a*c)2.4输入输出及处理4、格式化输出Python提供的三种格式化输出技术:百分号(%)格式化format()方法f-string(格式化字符串字面量)2.4输入输出及处理4、格式化输出(1)百分号(%)格式化1)基本格式化符号(1)%s-用于字符串或者任何可转换为字符串的对象。>>>print("名字:%s"%"张三")名字:张三(2)%d-用于整数。>>>print("年龄:%d"%25)年龄:252.4输入输出及处理4、格式化输出(1)百分号(%)格式化1)基本格式化符号(3)%f-用于浮点数,默认保留六位小数。>>>print("成绩:%f"%98.6)成绩:98.600000若要限制小数位数,可以在%f后加点和数字,如%.2f保留两位小数。>>>print("成绩:%.2f"%98.6)成绩:98.602.4输入输出及处理4、格式化输出(1)百分号(%)格式化1)基本格式化符号(4)%x和%X-分别用于以小写和大写形式输出十六进制整数。>>>print("十六进制:%x"%255)十六进制:ff(5)%o-用于八进制整数。>>>print("八进制:%o"%255)八进制:3772.4输入输出及处理4、格式化输出2)高级用法(1)宽度和对齐:可以在类型代码前指定宽度和对齐方式。默认右对齐,加-表示左对齐,例如:>>>print("编号:%5d"%42)#右对齐,总宽度5编号:42>>>print("编号:%-5d"%42)#左对齐,总宽度5编号:42(2)精度:对于浮点数,可以在%f之后指定精度(小数点后的位数),例如:>>>print("价格:%.2f"%3.14159)价格:3.142.4输入输出及处理4、格式化输出2)高级用法【例2-4】定义一个人的基本信息(包括姓名、年龄和身高),并以格式化的方式输出这些信息。name="Alice"age=30height=1.75print("姓名:%s,年龄:%d,身高:%.2f米"%(name,age,height))2.4输入输出及处理4、格式化输出(2)内置的format()函数(自Python2.6起被引入)1)基础应用:精确控制浮点数显示>>>print(format(12345.6789,'.2f'))12345.68'.2f'指定输出为浮点数形式,并保留两位小数。2)科学计数法与逗号分隔(1)科学计数法:>>>print(format(12345.6789,'e'))1.234568e+042.4输入输出及处理4、格式化输出(2)内置的format()函数(自Python2.6起被引入)(1)科学计数法>>>print(format(12345.6789,'.2e'))1.23e+04(2)插入逗号分隔符>>>print(format(12345.6789,',.2f'))12,345.682.4输入输出及处理4、格式化输出3)控制定位与宽度>>>print('Thenumberis',format(12345.6789,'12,.2f'))Thenumberis12,345.684)百分数格式>>>print(format(0.5,'%'))50.000000%>>>print(format(0.5,'.0%'))50%2.4输入输出及处理4、格式化输出5)整数格式化>>>print(format(123456,'10,d'))123,4566)参数化字符串格式化>>>name='张三'>>>age='20'>>>print('{}今年{}岁'.format(name,age))张三今年20岁>>>print('{1}的首都是{0},我是{1}人'.format('北京','中国'))中国的首都是北京,我是中国人2.4输入输出及处理4、格式化输出(3)f-string(格式化的字符串文本)(Python3.6及以上版本引入)1)占位符表达式name='Alice'age=30print(f"Mynameis{name}andIam{age-5}yearsold.")运行结果:MynameisAliceandIam25yearsold.2.4输入输出及处理4、格式化输出(3)f-string(格式化的字符串文本)(Python3.6及以上版本引入)2)格式化数值value=3.14159print(f"Thevalueis{value:.2f}.")运行结果:Thevalueis3.143)插入逗号分隔符number=123456789print(f"Numberwithcommas:{number:,}")Numberwithcommas:123,456,7892.4输入输出及处理4、格式化输出4)百分数形式percentage=0.25print(f"{percentage:.0%}complete.")运行结果:25%complete.5)科学计数法sci_num=123456789print(f"Scientificnotation:{sci_num:.2e}")运行结果:Scientificnotation:1.23e+082.4输入输出及处理4、格式化输出6)指定最小域宽和对齐方式width=10num=42print(f"Widthspecified:{num:<{width}}.")运行结果:Widthspecified:42.#42后面填充有8个空格2.4输入输出及处理4、格式化输出7)指示符的顺序在f-string中,多个指示符的正确顺序:[对齐][宽度][,][.][精度][数值类型]1num=123.4562print(f"Customorder:{num:<10.2f}.")运行结果:Customorder:123.46.如果上面的第2行代码改为:print(f"Customorder:{num:10<.2f}.")则运行结果:ValueError:Invalidformatspecifier2.5注释(1)行注释#在Python中,注释前面必须放一个#号。Python解释器看到#号后,它将忽略掉从#号开始到本行结束的所有内容。把注释写在出现在代码行末尾的注释称为行末注释。它是专门解释所在行的代码。2.5注释(2)段注释'''Python的段注释使用一对三引号('''或""")把需要注释的段落括起来。使用PyCharm这样的集成开发环境(IDE)时,选中需要注释的语句,再按快捷键"ctrl+/"可以把所选中的语句一起注释。再按一次"ctrl+/",可以取消刚才的注释。2.6turtle库简介1、模块导入标准导入方式为:importturtle为了简化后续调用,可赋予该模块一个别名:importturtleast采用从模块中导入所有函数方式,以直接调用函数而无需前缀模块名:fromturtleimport*但请注意:这种导入方式可能会导致命名空间冲突,故在编写复杂程序时应谨慎使用。2.6turtle库简介2、画布配置(1)turtle.screensize(canvwidth,canvheight,bg):此命令用于设定画布的尺寸与背景色。例如:turtle.screensize(500,600,'red')#设定画布为500x600像素,背景为红色(2)turtle.setup(width,height,startx=None,starty=None):此命令控制画布窗口的尺寸及屏幕上的初始位置。turtle.setup(width=0.6,height=0.4)turtle.setup(width=400,height=300,startx=200,starty=200)2.6turtle库简介3、画笔操作2.6turtle库简介4、turtle中的绘图命令(见表2-8,2-9,2-10)2.6turtle库简介5、turtle绘图实例【例2-5】绘制五角星,并在下面书写“爱国心”importturtleturtle.setup(400,400)turtle.speed(1)#设置画笔速度turtle.penup()turtle.goto(-60,60)turtle.pendown()turtle.pencolor('red')turtle.fillcolor('red')turtle.begin_fill()turtle.forward(100)turtle.right(144)turtle.forward(100)turtle.right(144)turtle.forward(100)turtle.right(144)turtle.forward(100)2.6turtle库简介5、turtle绘图实例turtle.right(144)turtle.forward(100)turtle.end_fill()turtle.penup()turtle.goto(-10,-60)turtle.pendown()font_style=("Arial",24,"bold")turtle.write(“爱国心”,align="center",font=font_style)turtle.hideturtle()turtle.done()2.6turtle库简介5、turtle绘图实例【例2-5】绘制五角星,并在下面书写“爱国心”2.6turtle库简介5、turtle绘图实例【例2-6】设置画布大小为300x300像素,绘制彩色环形图案,并在中央显示文字“CUZ”。importturtleturtle.setup(300,300)turtle.hideturtle()turtle.dot(200,"red")turtle.dot(180,"orange")turtle.dot(160,"yellow")turtle.dot(140,"violet")turtle.dot(120,"blue")turtle.dot(100,"indigo")turtle.dot(80,"green")turtle.dot(60,"white")turtle.write("CUZ",align="center",font=('Verdana',12,'bold'))turtle.done()2.6turtle库简介5、turtle绘图实例【例2-6】设置画布大小为300x300像素,绘制彩色环形图案,并在中央显示文字“CUZ”。2.6turtle库简介5、turtle绘图实例【例2-7】绘制一个贪吃蛇形状的图案。fromturtleimport*setup(600,350,200,200)penup()fd(-250)pendown()pensize(20)pencolor("purple")seth(-40)circle(40,80)circle(-40,80)circle(40,80/2)fd(40)circle(16,180)fd(40*2/3)done()2.6turtle库简介5、turtle绘图实例【例2-7】绘制一个贪吃蛇形状的图案。主讲教师:单
位: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示例:打印图案153*****************************************************************foriinrange(1,5+1):forjinrange(1,10+1)print(“*”,end=‘’)print()3.3.3嵌套循环语句嵌套循环:在一个循环内包含了另一个循环例如:打印如下图案row=int(input("请输入行数:"))col=int(input("请输入列数:"))foriinrange(row):forjinrange(col):print('*',end='')print()foriinrange(row):forjinrange(i+1):print('*',end='')print()3.3.3嵌套循环语句对外层循环的每一次迭代,内层循环都要完成全部的迭代。内层循环完成全部迭代的速度要比外层循环快。要想得到嵌套循环的总的迭代次数,需要将每一层循环的迭代次数相乘。示例:打印图案156print(“MultiplicationTable”)
print(“”,end=‘’)#空一行
forjinrange(1,9+1):
print("",j,"",end='')
print()
print("-----------------------------")foriinrange(1,9+1):
print(i,"|",end='')
forjinrange(1,9+1):
print(format(i*j,"3d"),end='')
print()示例:九九乘法表3.3.4跳出循环语句跳出整个循环:breakbreak语句的作用是跳出整个循环,并且break后面的语句都不执行。跳过一轮循环:continuecontinue语句作用是跳过一轮循环,continue后面的语句不执行。Python程序设计第4章函数和模块第4章函数和模块4.1引言4.2函数的基本概念4.3参数传递4.4参数类型4.5返回值4.6结构化程序设计4.7命名空间与作用域4.8匿名函数4.9内置函数4.10模块4.11递归4.12在turtle中使用函数第4章函数和模块4.1引言4.1引言函数是程序中执行特定任务的一组语句。使用函数封装每个任务所编写的程序称为模块化程序。使用函数模块化程序的好处:可读性好代码重用易于测试便于团队合作Python中的函数包括:内置函数标准库函数自定义函数第4章函数和模块4.2函数的基本概念4.2函数的基本概念4.2.1函数的定义函数三要素:输入、输出和处理函数定义的一般形式:函数体中的所有语句具有相同的缩进。def函数名(参数表):
函数体4.2函数的基本概念4.2.2函数的调用调用函数时,解释器跳转到该函数,并执行对应语句块中的语句。当到达语句块的末尾时,解释器跳回到当初调用该函数的位置,并在该处恢复执行。第4章函数和模块4.3参数传递4.3参数传递形参:定义函数时,函数名后面的小括号内的变量实参:调用函数时,函数名后面提供的值或变量不可变类型参数:字符串、元组和数值。如果在函数内部修改参数的值,则会生成一个新的对象,并不会影响到函数外变量的值。defchange(a):#这里a是形参,是不可变类型参数print(id(a))#指向的是同一个对象a=10print(id(a))#一个新对象a=1print(id(a))change(a)#这里a是实参###################################程序输出4379369136437936913643793691244.3参数传递可变类型参数:列表和字典。在函数内修改可变类型参数,函数外的对应变量也会受影响。defchangeme(mylist):mylist.append([1,2,3,4])print("函数内取值:",mylist)mylist=[10,20,30]changeme(mylist)print("函数外取值:",mylist)###################################程序输出函数内取值:[10,20,30,[1,2,3,4]]函数外取值:[10,20,30,[1,2,3,4]]第4章函数和模块4.4参数类型4.4参数类型调用函数时,可使用的参数类型有:位置参数关键字参数默认参数不定长参数4.4参数类型4.4.1位置参数也称必须参数,指参数必须以正确顺序传入函数,调用时数量必须和声明的数量一致。如果不一致,执行后会出错。例如:defprintme(str):print(str)#调用printme函数,不加参数会报错printme()###################################程序输出Traceback(mostrecentcalllast):File"C:\programming\Python\test.py",line6,in<module>printme()TypeError:printme()missing1requiredpositionalargument:'str'4.4参数类型4.4.2关键字参数指在函数调用时通过传递参数名=传递参数值的形式来传入参数。使用关键字参数允许函数调用时参数顺序与声明时不一致。defprintinfo(name,age):print("名字:",name)print("年龄:",age)printinfo(age=50,name="小明")###################################程序输出名字:小明年龄:504.4参数类型4.4.3默认参数定义函数时给参数赋默认值,这个参数就成了默认参数。调用函数时,默认参数可以不写,此时默认参数会使用默认值。defprintinfo(name,age=35):print("名字:",name)print("年龄:",age)#调用printinfo函数printinfo(age=50,name="lsy")print("------------------------")printinfo(name="lsy")###################################输出结果名字:lsy年龄:50------------------------名字:lsy年龄:354.4参数类型可以将参数值变化小的设置为默认参数。默认参数一般是不可变对象。如果是可变对象,在多次调用函数时,默认参数都指向同一对象。如果在函数内改变了默认参数的值,会在下次调用时使用上次默认参数的结果。4.4参数类型4.4.4不定长参数如果一个函数能处理比声明时更多的参数,这些参数就叫做不定长参数。不定长参数在声明时不会命名。不定长参数有两种导入类型:元组形式:加一个*号的参数会以元组的形式导入,存放所有未命名的参数。例如:defprintinfo(arg1,*vartuple):print("输出:")print(arg1)print(vartuple)#调用printinfo函数printinfo(70,60,50)###################################输出结果70(60,50)4.4参数类型字典形式:加了两个星号**的参数会以字典的形式导入。例如:defprintinfo(arg1,**vardict):print("输出:")print(arg1)print(vardict)#调用printinfo函数printinfo(1,a=2,b=3)###################################输出结果1{‘a’:2,’b’:3}4.4参数类型4.4.5命名关键字参数声明函数时,参数中*可以单独出现。若单独出现*,*右侧参数必须用关键字传入。此时这些参数也叫命名关键字参数。例如:>>>deff(a,b,*,c):...returna+b+c...>>>f(1,2,3)#报错Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:f()takes2positionalargumentsbut3weregiven>>>f(1,2,c=3)#正常6>>>4.4参数类型4.4.5命名关键字参数声明函数时,参数中*可以单独出现。若单独出现*,*右侧参数必须用关键字传入。此时这些参数也叫命名关键字参数。例如:>>>deff(a,b,*,c):...returna+b+c...>>>f(1,2,3)#报错Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:f()takes2positionalargumentsbut3weregiven>>>f(1,2,c=3)#正常6>>>4.4参数类型4.4.5命名关键字参数声明函数时,参数中*可以单独出现。若单独出现*,*右侧参数必须用关键字传入。此时这些参数也叫命名关键字参数。例如:>>>deff(a,b,*,c):...returna+b+c...>>>f(1,2,3)#报错 Traceback(mostrecentcalllast): File"<stdin>",li
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年食母生片行业分析报告及未来发展趋势报告
- 2026酒店业特许经营模式与加盟商管理策略研究报告
- 2026超高频PDA在医疗供应链管理中的应用与效益分析报告
- 2026肉牛养殖合作社运营模式与规模化效益提升专题报告
- 企业年度销售工作总结报告范本
- 2025年广告投影者助力中小企业打造沉浸式文化体验报告
- 宠物鲜食配行业市场细分产品供应链管理2025年报告
- 2026浙江省知识产权保护中心工作人员招聘6人备考题库及答案详解(夺冠)
- 2026山东临沂市郯城县部分医疗卫生事业单位招聘卫生类岗位工作人员40人备考题库附答案详解(b卷)
- 2026广西南宁市良庆区玉洞街道办事处招聘2人备考题库及参考答案详解1套
- 鄂托克前旗新寨子砖厂浓盐水处理项目环评报告书
- 国开计算机组网技术实训1:组建小型局域网
- 医院海姆立克急救操作考核评分标准
- 动力换档变速器设计课件
- (全)附着式升降脚手架监理实施细则
- 考生报名承诺书
- 逻辑学导论(中山大学)【超星尔雅学习通】章节答案
- DB51T 2880-2022建设放心舒心消费城市通用要求
- 新能源之氢能
- 37自动扶梯安全风险告知卡
- 市政道路养护工程施工组织设计
评论
0/150
提交评论