Python程序设计基础 课件 王朝晖 项目1-4 编写简单输出语句-编写基于序列结构的学生信息管理系统_第1页
Python程序设计基础 课件 王朝晖 项目1-4 编写简单输出语句-编写基于序列结构的学生信息管理系统_第2页
Python程序设计基础 课件 王朝晖 项目1-4 编写简单输出语句-编写基于序列结构的学生信息管理系统_第3页
Python程序设计基础 课件 王朝晖 项目1-4 编写简单输出语句-编写基于序列结构的学生信息管理系统_第4页
Python程序设计基础 课件 王朝晖 项目1-4 编写简单输出语句-编写基于序列结构的学生信息管理系统_第5页
已阅读5页,还剩243页未读 继续免费阅读

下载本文档

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

文档简介

Python程序设计

项目1编写简单输出语句1.1学习目标学习基础知识:Python发展历程Python特点Python应用领域搭建Python开发环境Python基本编程规范通过编写输出“欢迎使用学生信息管理系统”具体项目掌握Python简单程序的建立和运行1.2基础知识1.2.1Python发展历程Python是一门面向对象的解释型编程语言,适合于初学者的编程语言,由荷兰人吉多·范罗苏姆(GuidovanRossum)发明。1991年,Python的第一个解释器诞生。1994年1月,Python1.0版本发布。2000年10月,Python2.0版本发布。2008年12月,Python3.0版本发布。值得一提的是,Python3.x不向后兼容Python2.x,这意味着Python3.x可能无法运行Python2.x的代码。2014年11月,Python2.7被确定为最后一个Python2.x版本。2020年1月1日,官方宣布停止Python2的更新。2021年10月,Python首次登顶TIOBE编程语言排行榜1.2.1Python发展历程Python对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到WWW浏览器再到游戏。Python还被称为胶水语言,它能够把用其它语言制作的模块联结在一起。现在,Python的社区蓬勃发展,Python变得更为成熟,当你提出一个有关的Python问题,几乎总是有人遇到了同样的问题并已经得到了解决。1.2.2Python特点1.易于学习2.免费、开源3.互动模式4.类库丰富5.面向对象6.解释性7.可移植8.可扩展9.可嵌入1.2.3Python应用领域1.系统编程2.科学计算和统计3.数据库编程4.Web开发应用5.人工智能6.自动化运维7.多媒体应用1.2.4进入Python世界1.搭建Python开发环境编写程序,就需要有相应的编程环境。下面我们学习在Windows操作系统下,搭建Python开发环境。在Windows系统中安装Python,可以直接访问Python官方网站,通过/downloads/进行下载,下载时要查看电脑Windows操作系统的类型(32位或64位操作系统),注意选择下载与系统匹配的版本,如图所示。1.2.4进入Python世界目前Python官网支持的主要版本是Python3.X,本书案例均以Python3.11.7为开发环境。Python的安装可以选择默认方式,并勾选“AddPython.exetoPATH”选项,以便将安装路径添加到系统环境变量Path中,否则在运行时,需要手动配置环境变量。安装成功后,可以打开Windows命令提示符(cmd)窗口,执行“python”命令。出现下图所示结果,即表示Python安装成功。1.2.4进入Python世界开发环境搭建完成之后,可利用Python自带的IDLE进行程序设计,本书示例均使用了IDLE作为开发环境。下图为Python3.11菜单。IDLE提供了交互式编程模式和编写.py程序编程模式。使用交互式编程模式时,直接在IDLE提示符>>>后面输入Python命令并按回车键即可执行。程序如果执行成功,则显示执行结果,否则抛出异常。编写.py程序编程模式,是将Python命令编写存放在一个.py文件,再通过命令运行,结果显示在IDLE交互式解释器窗口。1.2.4进入Python世界2.Python基本编程规范

(1)缩进在Python编程过程中,程序代码必须是从每行的第一列开始编写,遇到结构语句时则需要采用缩格方式编写。Python语言特别强调依靠代码块的缩进来体现代码之间的逻辑关系,同一级别代码缩进量应保持一致。默认设置了使用4个空格进行缩进。(不建议Tab制表符)1.2.4进入Python世界2.Python基本编程规范(2)注释给程序添加注释语句是为了方便程序开发人员进行阅读,增加程序的可读性。在程序关键部位添加注释是一种良好的编程习惯。Python允许有多种注释方式,常用的有单行注释和多行注释两种。单行注释用“#”开始,以换行符结束。该注释可以单独占一行,也可以出现在一行中程序代码的右侧。多行注释以三个引号(单引号'''或双引号""")开始,同样以三个相对应的引号结束。多行注释需要成对出现。1.2.4进入Python世界2.Python基本编程规范(3)换行建议每条Python语句独占一行。Python建议每行代码的长度不要超过80个字符。对于过长的代码,建议进行换行。换行可以借助“\”放在首行的尾部来表示紧接着的下一行与当前行属同一语句,也可以利用圆括号将多行内容包含在一起。1.2.4进入Python世界3.输出语句在Python中使用print()函数进行输出。输出字符串时可以用单引号或双引号。如:

1.2.4进入Python世界4.输入语句Python中,使用内置函数input()来接收用户的键盘输入。一般用法为:

注意,无论用户从键盘输入什么内容,input()函数返回结果都是字符串,根据需要,可以将其进行类型转换。1.2.5Python常用开发工具PyCharmPyCharm就是其中一款功能强大的Python编辑器,可以跨平台使用。PyCharm包括专业版(professional)和社区版(community),其中社区版是免费的,而专业版需要付费。1.2.5Python常用开发工具PyCharm1.下载安装包打开PyCharm官网,找到地址(https://www.jetbrains.com/pycharm/download/#section=windows),选择community版本,点击下载。如图所示。1.2.5Python常用开发工具PyCharm2.安装PyCharm双击已经下载的PyCharm安装包,出现如图所示的界面,点击“Next”。1.2.5Python常用开发工具PyCharm选择安装目录,可以选择使用默认安装路径,也可以将其安装在D盘或者其它盘如图所示。1.2.5Python常用开发工具PyCharm点击Next,进入下图界面。1.2.5Python常用开发工具PyCharm点击Next,进入安装过程,安装完成后如图所示,点击“Finish”结束安装。1.2.5Python常用开发工具PyCharm3.运行PyCharm双击桌面上的快捷方式,在弹出的PyCharm配置对话框如图中,选择“Donotimportsettings”选项,不导入开发环境配置,单击“OK”按钮。1.2.5Python常用开发工具PyCharm打开后会弹出如图所示窗口。1.2.5Python常用开发工具PyCharm创建新项目,可以单击“NewProject”,可以打开如下左图窗口,设置好项目存放路径(本例是新建项目StuManger,存放在D盘phexec文件夹中),单击“Create”按钮。创建新项目如下右图所示。1.2.5Python常用开发工具PyCharm新建Python文件,可以在StuManger项目窗口,右击项目名“StuManger”,在弹出的快捷菜单中选择“New”→

“PythonFile”命令,再输入文件名。如下图所示。1.2.5Python常用开发工具PyCharm输入hello,系统会默认生成hello.py,并打开脚本文件。此时可以编写Python程序,点击菜单Run中的Run...,单击hello,即可通过运行获得结果。可参考如图所示。1.3典型工作项目本阶段利用Python的IDLE开发环境,编写程序输出“欢迎使用学生成绩管理系统”。通过测试后,提交该程序。

1.3.1需求分析通过输出语句,输出“欢迎使用学生成绩管理系统”。为了方便标识和阅读程序,可以在程序中标记程序名称及开发者信息。

1.3.2程序设计通过需求分析可以知道,程序包括以下步骤:标记程序名称(注释语句)标记程序功能(注释语句)标记开发者信息(注释语句)输出“欢迎使用学生成绩管理系统”1.编程规范

按照Python的编程规范来编写代码,注意命令符号等都使用英文字符。2.参考代码1.3.3程序编码1.3.4程序测试和交付选择“Run”菜单中的“RunModule”,或者直接按功能键F5运行程序,结果如下。通过测试,运行结果如图1-2所示。该程序符合要求,可以交付使用。将程序文件进行保存,文件名取名为hello,最后提交hello.py文件到指定位置。感谢您的观看Python程序设计

项目2编写成绩计算程序2.1学习目标学习基础知识:常量变量数据类型运算符格式化输出通过具体项目掌握Python成绩计算程序的编写和运行,掌握Python程序中的常量、变量、运算符、表达式和顺序结构程序设计。2.2基础知识2.2.1变量与数据类型1.常量和变量在程序设计中,经常会遇到一些不会变化的数,如一般成绩满分用100表示,如计算圆的周长或面积时用到的π,常用3.14159来表示等。这些不会变化的,可以称之为常量。还经常会碰到一些数据,每次使用时可能会发生变化,可以称之为变量,用变量名(标识符)来表示,注意变量在程序设计中表示的是存储单元,变量的值可以在程序执行期间改变,变量名(标识符)则是指向该存储单元的标签。2.2.1变量与数据类型变量名(标识符)的命名要遵循编程语言的规则。在Python中,变量名(标识符)命名需要遵循以下规则:变量名(标识符)由字母、数字、下划线组合而成,首字符不能为数字变量名(标识符)区分大小写。变量名(标识符)不能是Python关键字,但可以包含关键字。变量名(标识符)的命名建议是见名知义,且不宜太长。特别值得一提的是,组成变量名(标识符)的字母不仅可以是英文,也可以是中文等多种语言字符。2.2.1变量与数据类型变量在第一次赋值时将会被创建,即占用一块存储空间,以存放所赋的值,再次出现时,表示其被使用。Python中变量赋值不需要先声明数据类型,变量的赋值操作就是变量的声明和定义的过程。每个变量在使用前都必须赋值,赋值用“=”运算符表示,赋值操作将会确定变量的数据类型。2.2.1变量与数据类型2.关键字各程序设计语言均保留了一些特定的字符组合,并赋予其特定的含义,这些字符组合称之为关键字,有时也称之为保留字。开发者在程序开发时,不能使用这些关键字作为变量名或其它对象的命名。Python包含的保留字可以在Python交互模式下执行如下命令,得到所有关键字。>>>importkeyword>>>keyword.kwlist结果如图所示。2.2.1变量与数据类型3.数据类型为了更可靠、更高效地处理数据,Python程序开发中出现的数据是有特征的。根据特征,Python将数据分为数字类型、布尔类型、字符串类型、列表类型、字典类型、元组类型和集合类型等数据类型。其中,数字类型包括整型(int)、浮点型(float)、复数(complex)。2.2.1变量与数据类型3.数据类型

(1)数字整型数据表示与数学中的写法一致,Python可以处理任意大小的整数,其表示形式与数学中写法一致。在Python中,可以用十进制、八进制和十六进制来表示常量。十进制整数:前面没有前缀,组成数字包括0-9。如123456,-389。二进制整数:前面以0B或0b开始,组成数字包括0和1,如0B1001。八进制整数:前面以0O或0o开头,组成数字包括0-7,通常为无符号数,如0o16。十六进制整数:前面以0X或0x开头,组成数字包括0-9、A-F或a-f,如0x7F。2.2.1变量与数据类型3.数据类型(1)数字浮点型数据由整数和小数组成,用于表示实数。Python只用十进制形式表示,有直接十进制形式和指数形式两种。复数数据用于表示数学中的复数,由实数部分和虚数部分组成,一般形式为a+bj,其中a为复数的实数部分,b为复数的虚数部分,如3+4j,2.5+6j,注意前面的a和b均是实数。2.2.1变量与数据类型3.数据类型(2)布尔类型布尔类型包括True和False两个值,分别表示“真”和“假”。Python中,既可以直接使用True或False分别表示布尔值,也可以通过比较和判断得到。如1<10的布尔值为True,1>10布尔值为False。2.2.1变量与数据类型3.数据类型(3)字符串字符串就是一串字符,通常用单、双或三引号引起来。如果字符串中包含单引号,可以用双引号引起来;反之,如果字符串中包括双引号,则用单引号引起来。如果字符串中既有单引号又有双引号,则可以采用转义字符“\”进行标识。如'This\'sPython'表示This'sPython。Python允许在单引号前加r,表示单引号内部的字符串默认不转义。如print('\\\nabc')表示输出'\',换行后再输出abc,print(r'\\\nabc')则表示输出的是\\\nabc。2.2.1变量与数据类型3.数据类型(3)字符串转义字符是以“\”开头,后面跟一个字符,常用于表示一些控制代码和功能定义。Python中常用的转义字符如表2-1所示。2.2.1变量与数据类型4.变量的赋值C和Java等程序设计语言属于静态类型语言,在编写程序的时候就要声明所有变量的数据类型,Python则是动态类型语言,即Python中的变量没有数据类型的概念,一个变量可以存储任何数据。变量在第一次赋值时创建,再次出现时,表示其被使用。Python中变量赋值不需要先声明数据类型,变量的赋值操作就是变量的声明和定义的过程。每个变量在使用前都必须赋值,赋值用“=”运算符表示。2.2.1变量与数据类型4.变量的赋值赋值运算符左侧是变量的名称,右边是将要存储在变量中的值。如:Python允许同时为多个变量赋值,如:Python还可以同时为多个变量赋不同的值。如:a=6.18b=7str1='China'a=b=c=9a,b,str1=6.18,7,'China'。2.2.2运算符5.运算符运算符是用于执行各种运算的符号。这些运算符可以对变量或常量值进行操作,以产生新的值或结果。运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。如:10+20,其操作数是10和20,而运算符则是“+”。Python支持大多数运算符,如算术运算符、赋值运算符、比较(关系)运算符、逻辑运算符、位运算符、成员运算符和身份运算符等,并遵循运算符优先级。2.2.2运算符5.运算符(1)算术运算符运算符描

述示

例+加法运算,将运算符两边的操作数相加3+5值为8-减法运算,将运算符左边的操作数减去右边的操作数3-5值为-2*乘法运算,将运算符两边的操作数相乘3*5值为15/除法运算,将运算符左边的操作数除以右边的操作数3/5值为0.6%模运算,返回除法运算的余数3%5值为3**幂运算,返回乘方运算的值3**5值为243//整除,返回商的整数部分。如果其中一个操作数为负数,则结果为负数3//5值为05//3值为1-3//5值为-12.2.2运算符5.运算符(2)赋值运算符(示例中m为4,n为5)运算符描

述示

例=基本赋值运算符m=n+3,将n+3的运算结果赋值给m,赋值后m为8+=加法赋值运算符m+=n,等效于m=m+n,赋值后m为9-=减法赋值运算符m-=n,等效于m=m–n,赋值后m为-1*=乘法赋值运算符m*=n,等效于m=m*n,赋值后m为20/=除法赋值运算符m/=n,等效于m=m/n,赋值后m为0.8**=幂赋值运算符m**=n,等效于m=m**n,赋值后m为1024//=取整除赋值运算符m//=n,等效于m=m//n,赋值后m为0%=取模(求余)赋值运算符m%=n,等效于m=m%n,赋值后m为42.2.2运算符5.运算符(4)逻辑运算符(示例中m为4,n为5)运算符描

述示

例and逻辑与,如果左侧操作数的值为False,返回左侧值,否则返回右侧操作数的值mandn,返回5or逻辑或,如果左侧操作数的值为True,返回左侧值,否则返回右侧操作数的值mandn,返回4not逻辑非,只有右侧操作数,如果操作数值为False,返回True;如果为True,返回Falsenotm,返回False2.2.2运算符5.运算符(3)比较运算符(示例中m为4,n为5)运算符描

述示

例==等于,比较两侧操作数是否相等,如果相等返回True,否则返回Falsem==n,m不等于n,返回False!=不等于,比较两侧操作数是否不相等,如果不相等返回True,否则返回Falsem!=n,m不等于n,返回True>

判断左侧操作数的值是否大于右侧操作数的值,如果是返回True,否则返回Falsem>n,m大于n不成立,返回False<

判断左侧操作数的值是否小于右侧操作数的值,如果是返回True,否则返回Falsem<n,m小于n成立,返回True>=判断左侧操作数的值是否大于等于右侧操作数的值,如果是返回True,否则返回Falsem>=n,m小于等于n不成立,返回False<=判断左侧操作数的值是否小于等于右侧操作数的值,如果是返回True,否则返回Falsem<n,m小于等于n成立,返回True2.2.2运算符5.运算符(5)成员运算符运算符描

述示

例in如果在指定的序列中找到了in左侧的值,返回True,否则返回False"h"in"Python"返回Truenotin如果在指定的序列中没有找到in左侧的值,返回True,否则返回False"P"notin"Python"返回False2.2.2运算符5.运算符(6)身份运算符运算符描

述示

例is判断两个对象标识符是不是引用同一个对象,是则返回True,否则返回False如果m=20;n=20,则misn返回Trueisnot判断两个对象标识符是不是引用不同的对象,是则返回True,否则返回False如果m=10;n=20,则misnotn返回True2.2.2运算符5.运算符(7)位运算符运算符描

述示

例&两个操作数只有对应的两个二进制位均为1时,结果才为1,否则为0m&n即00001100&00101010运算结果:00001000|两个操作数只要对应的两个二进制位有一个为1时,结果就为1m&n即00001100|00101010运算结果:00101110^两个操作数对应的两个二进制位不同时,结果为1,否则为0m&n即00001100^00101010运算结果:00100110~只有一个操作数,对其每个二进制位取反~m即~00001100运算结果:11110011<<

左操作数的二进制位全部左移,由右操作数决定移动的位数,移出位删掉,移进的位补零m<<2即00001100按位左移2次运算结果:00110000>>

左操作数的二进制位全部右移,由右操作数决定移动的位数,移出位删掉,移进的位补零m>>2即00001100按位右移2次运算结果:000000112.2.2运算符5.运算符(8)运算符优先级别运算符的优先级别是指在一个表达式中,不同运算符之间的运算顺序。优先级高的运算符会先被计算,而优先级低的运算符则会被后计算。如果多个运算符具有相同的优先级,则它们的结合方向决定了运算的顺序。优先级顺序运算符说

明1**指数运算(最高优先级)2~+-按位取反、正号和负号运算符3*/%//乘、除、取模和取整除运算符4+-加法、减法运算符5>><<右移、左移位运算符6&按位与运算符7^|按位异或、按位或运算符8<=<>>=比较运算符9==!=等于、不等于运算符10=%=/=//=-=+=*=**=赋值运算符11isisnot身份运算符12innotin成员运算符13notorand逻辑运算符2.2.3格式化输出在Python中,常用的格式化输出包括使用符号“%”、format()函数和f-string格式化输出。2.2.3格式化输出1.%格式化输出格式化输出时,用%分隔格式字符串和输出项,一般格式为:格式字符串%(输出项1,输出项2,……,输出项n)格式字符串由普通字符和格式说明符组成,普通字符原样输出,格式说明符决定所对应输出项的输出格式。格式说明符以%开始,后跟格式标识符。如:print("Ilove%s!"%("China")输出结果为:IloveChina!2.2.3格式化输出1.%格式化输出(格式说明符)符号描述%c

格式化字符及其ASCII码%s

格式化字符串%d

格式化整数%u

格式化无符号整型%o

格式化无符号八进制数%x

格式化无符号十六进制数%X

格式化无符号十六进制数(大写)%f

格式化浮点数字,可指定小数点后的精度%e

用科学计数法格式化浮点数%E

作用同%e,用科学计数法格式化浮点数%g

%f和%e的简写%G

%F和%E的简写%p

用十六进制数格式化变量的地址%r

万能格式符,把对应参数按原样输出2.2.3格式化输出1.%格式化输出(格式化操作符辅助指令)符号功能*定义宽度或者小数点精度-用做左对齐+在正数前面显示加号(+)<sp>在正数前面显示空格#在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')0显示的数字前面填充'0'而不是默认的空格%'%%'输出一个单一的'%'(var)映射变量(字典参数)m.n.m是显示的最小总宽度,n是小数点后的位数(如果可用的话)2.2.3格式化输出1.%格式化输出(举例)a=16 #定义变量a并赋值b=123456788.12345 #定义变量b并赋值strs="IloveChina!" #定义字符串strs并赋值print("a=%06d"%a) #使用m控制输出位数,空位补0print("b=%8.3f"%b) #输出b,用m.n控制输出的长度和小数点位数print("%17s"%strs) #使用m控制输出字符串长度print("%17r"%strs) #使用%r输出字符串,按原样输出print("%-17.5s"%strs) #使用-m.n进行左对齐、限制字符串长度和字符位数输出结果为:a=000016b=123456789.123IloveChina!'IloveChina!'Ilov2.2.3格式化输出2.format格式化输出使用format()方法也可以格式化字符串,其基本格式为:<模板字符串>.format(<逗号分隔的参数>)其中,模板字符串是一个由字符串和槽(用{}表示)组成的字符串,用来控制字符串和变量的显示效果。其基本思想是将format()方法中逗号分隔的参数按照序号替换到模板字符串的槽中(序号从0开始编号)。2.2.3格式化输出2.format格式化输出(举例)

输出结果为:2.2.3格式化输出2.format格式化输出format()方法中模板字符串的槽除了包括参数序号外,还可以包括格式控制信息,此时槽的内部样式为:{参数序号:格式控制标记}其中格式控制标记用于控制参数显示的格式,如表所示。填充对齐宽度,.精度格式字符用于填充的单个字符<左对齐>右对齐^居中对齐输出宽度数字的千位分隔符浮点数小数部分精度或字符串最大输出长度整数类型d,o,x,X,b,c浮点数类型e,E,f,%2.2.3格式化输出2.format格式化输出(格式控制标记)(举例)数字格式输出描述3.1415926{:.2f}3.14保留小数点后两位3.1415926{:+.2f}+3.14带符号保留小数点后两位-7{:+.2f}-7.00带符号保留小数点后两位3.14{:.0f}3不带小数(四舍五入)6{:0>2d}06数字补零(填充左边,宽度为2)6{:x<4d}6xxx数字补x(填充右边,宽度为4)20{:x<4d}20xx数字补x(填充右边,宽度为4)1000000{:,}1,000,000以逗号分隔的数字格式0.25{:.2%}25.00%百分比格式2.2.3格式化输出2.format格式化输出(格式控制标记)(举例)数字格式输出描述1000000000{:.2e}1.00e+09指数记法16{:>10d}16右对齐(默认,宽度为10)16{:<10d}16左对齐(宽度为10)16{:^10d}16中间对齐(宽度为10)10'{:b}'.format(10)'{:d}'.format(10)'{:o}'.format(10)'{:x}'.format(10)'{:#x}'.format(10)'{:#X}'.format(10)10101012a0xa0XA进制2.2.3格式化输出3.f-string格式化输出(Python3.6及后续版本支持)

只需在字符串前面加上f,使用花括号{}在字符串中表示要被替换的输出项。

(举例)

输出结果为:2.3典型工作项目本阶段利用Python的IDLE开发环境,编写程序,从键盘输入张山同学的数学、英语和Python三门课程的成绩,计算总分以及平均分,并输出。通过测试后,提交该程序。

2.3.1需求分析完成计算成绩总分和平均分,首先需要从键盘输入三门课程的成绩,可以用三个变量math、english和Python分别来接收数学、英语和Python课程的成绩,然后进行求总分和求平均分计算,最后输出结果。

2.3.2程序设计通过需求分析可以知道,程序包括以下步骤:第一步:用三个变量math、english和python分别来接收数学、英语和Python课程的成绩。第二步:将三门课程成绩求和,送给保存总分的变量。第三步:将总分除以3.0,送给保存平均分的变量。第四步:输出三门课程的分数,以及总分和平均分。2.3.3程序编码1.参考代码2.3.4程序测试选择“Run”菜单中的“RunModule”,或者直接按功能键F5运行程序,结果如下。通过测试,运行结果如下图所示。该程序符合要求,可以交付使用。2.3.5程序交付将程序文件进行保存,文件名取名为典型案例score,最后提交典型案例score.py文件到指定位置。感谢您的观看Python程序设计

项目3编写学生成绩管理系统菜单界面3.1学习目标学习基础知识:顺序结构选择结构循环结构控制语句通过学习编写学生信息管理系统菜单界面这一具体项目,熟练掌握Python语言中选择结构和循环结构等流程控制语句的使用方法。3.2基础知识在Python中有三种流程控制结构:顺序结构、选择结构和循环结构。3.2.1顺序结构顺序结构是指程序从上向下依次执行每条语句的结构,中间没有任何的判断和跳转。3.2.1顺序结构【例】顺序结构示例:已知三角形三条边的边长(为简单起见,假设这三条边可以构成三角形),求三角形的面积。3.2.2选择结构选择结构是根据条件判断的结果来选择执行不同的代码,可以分为单分支结构、双分支结构和多分支结构。3.2.2选择结构1.简单if语句if语句允许程序通过判断条件是否成立而选择是否执行指定的语句。语法:3.2.2选择结构【例】输入两个数a和b,比较两者大小,使得a大于b。运行结果:3.2.2选择结构2.if-else语句语法:3.2.2选择结构【例】编写程序,要求输入张山同学的Python程序设计课程的成绩,判断该学生是否及格,如未及格,计算还需多少分才能及格。当输入85时,运行结果为:

当输入50时,运行结果为:3.2.2选择结构3.if-elif-else语句编程时常常需要判定一系列的条件,一旦其中某一个条件为真就立刻停止。语法:3.2.2选择结构【例】学生成绩可分为百分制和五级制,将输入的百分制成绩score,转换成相应的五级制成绩后输出。3.2.2选择结构【例】空气质量指数(AirQualityIndex,简称AQI),是一个用来定量描述空气质量水平的数值。查看当天的空气质量指数,输入程序并判断空气质量状况。最后,加上一句爱护环境的宣传语。输入AQI为49时,运行结果为:3.2.2选择结构4.if的嵌套语句if语句中包含了if语句,称之为if的嵌套。内嵌的if语句,可以是简单if语句,也可以是if-else语句,还可以是if-elif-else语句。语法:3.2.2选择结构【例】假如你准备去海南旅游,现在要订购机票。机票的价格受旺季、淡季影响,而且头等舱和经济舱的价格也不同。假设机票原价为1000元,4~10月为旺季,旺季头等舱打9折,经济舱6折,淡季头等舱5折,经济舱4折。编写程序输出实际的机票价格。输入出行月份3,选择经济舱23.2.3循环结构循环结构是根据条件来重复地执行某段代码或遍历集合中的元素。在Python中提供了while语句、for语句来实现循环结构。3.2.3循环结构1.while语句while循环是通过条件来控制是否要继续反复执行循环体中的语句。语法:说明:循环体是一组被重复执行的语句。当条件表达式的值为真时,则执行循环体中的语句,执行完毕后,重新判断条件表达式的返回值,条件表达式的返回值结果为假时,退出循环。【注意】while循环语句是“先判断,后执行”,存在死循环可能。3.2.3循环结构【例】编写程序,求S=1+2+3+…+100的值。3.2.3循环结构2.for语句for循环是一个依次执行的循环。通常适用于枚举或者遍历序列,以及迭代对象中的元素。语法:说明:其中,迭代变量用于保存读取出的值;对象为要遍历或者迭代的对象,该对象可以是任何有序的序列对象,如字符串,列表和元组等;循环体为一组被重复执行的语句。3.2.3循环结构2.for语句range()函数可以给出一个,两个或三个参数。其表示方法:start表示计数初始值从start开始,其默认值是0。end表示计数终值,整数序列包括从start开始,到end-1终止,注意到并不包括end本身。step:步长值,默认为1。3.2.3循环结构【例】用for语句求S=1+2+3+…+100的值。3.2.3循环结构【练习】远离校园贷,莫用青春来还债。一个网贷平台贷款额度1万元,日息普遍在万分之五,请问借6000,一年后还多少?结果是7200.96,可对比银行贷款但:网贷平台会多收取20%-30%的保证金,一旦逾期还款,不仅要支付未还金额0.5-1%/天的罚息,还会扣除保证金。要加强防范诈骗意识!s=6000sum=s*(1+0.0005)**365print('{:.2f}'.format(sum))a=1foriinrange(1,366):a*=(1+0.0005)print('{:.2f}'.format(6000*a))3.2.3循环结构3.循环的嵌套在Python中,允许在一个循环体中嵌入另一个循环,这称为循环嵌套。for循环和while循环都可以进行循环嵌套。如:3.2.3循环结构【例】编写一个程序,输出以下乘法表。3.2.3循环结构【例】用Python编程,我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?3.2.4循环控制语句在很多情况下,只要满足一定的条件就应当提前结束正在执行的循环操作。Python提供了break和continue语句来跳出循环。break:用于结束循环并跳出循环体,去执行循环下面的语句。continue:用于只希望提前结束本次循环,接着执行下次循环。pass:表示空语句。它不做任何事情,一般起到占位作用。3.2.4循环控制语句1.break语句【例】计算满足条件的最大整数n,使得1+2+3+…+n<=

10000。3.2.4循环控制语句2.continue【例】输出1~20之间所有的奇数。3.2.4循环控制语句3.pass【例3】在应用for循环输出10〜20(不包括20)的偶数时,在不是偶数时,应用pass语句占个位置,方便以后对不是偶数的数进行处理。3.2.4循环控制语句4.while...else与for...else语句当while(for)循环正常执行,中间没有break、return的时候,会执else后面的语句。3.2.4循环控制语句4.while...else与for...else语句【例】编写程序,随机产生骰子的一面(数字1~6),给用户三次猜测机会,程序给出猜测提示(偏大或偏小)。如果某次猜测正确,则提示正确并中断循环;如果三次均猜错,则提示机会用完。3.2.4循环控制语句4.while...else与for...else语句【例】for...else语句应用示例,猜年龄游戏,通过输入一个年的年龄,然后判断是猜大了还是猜小了。若超过3次,提示“对不起,次数到了!”。3.3典型工作项目本阶段是在Python的IDLE开发环境下,通过对Python流程控制语句的学习,编写“学生成绩管理系统”菜单界面程序。通过测试后,提交该程序。

3.3.1需求分析本次完成菜单程序设计。首先通过输出语句输出功能菜单,菜单包括功能对应所需的录入、删除、修改、显示以及对应的数字选项等,再通过键盘选择功能对应的选项,可以进入到功能对应的程序实现相应功能。3.3.2程序设计1.总体设计系统的功能模块包括:1)主界面:显示系统的功能菜单。2)录入模块:提示系统进入录入学生成绩模块。3)显示模块:提示系统进入显示学生成绩模块。4)查询模块:提示系统进入查询学生成绩模块。5)修改模块:提示系统进入录入学生成绩模块。6)删除模块:提示系统进入录入学生成绩模块。3.3.2程序设计2.主界面设计3.3.2程序设计3.详细设计设计一个可以重复显示的系统菜单,只有用户选择退出选项时才能退出系统。选择系统菜单中有的选项时,进入到相应的选项模块实现该功能,此外,提示用户输入选项有误。3.3.3程序编码1.参考代码3.3.4程序测试选择“Run”菜单中的“RunModule”,或者直接按功能键F5运行程序,结果如下。通过测试,运行结果如下图所示。该程序符合要求,可以交付使用。3.3.5程序交付将程序文件进行保存,文件名取名为menu.py,最后提交典型案例menu.py文件到指定位置。感谢您的观看Python程序设计

项目4编写基于序列结构的学生信息管理系统4.1学习目标学习基础知识:序列的基本概念字符串、列表、元组、字典、集合常见内置函数的用法通过编写输出“编写基于序列结构的学生信息管理系统”具体项目,掌握字符串、列表、元组、字典及集合等相关序列结构的应用。4.2基础知识数据结构是通过某种方式(如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构。

在Python中,最基本的数据结构是序列(sequence),常用的序列结构有字符串、列表、元组、字典和集合。4.2基础知识1.序列序列是一块用来存放多个值的连续内存空间。所有序列类型都可以进行某些特定的操作。这些操作包括索引、分片、加、乘、计算序列长度、找出最大元素和最小元素。4.2基础知识2.序列的索引序列中的所有元素都可以通过索引(下标)来获取;从左往右,第一个元素的索引为0,第二个为1……索引还可以取负值,从右往左,最后一个元素的索引为-1,倒数第二个为-2……4.2基础知识2.序列的索引创建一个字符串:str='Python'字符Python索引(正)012345索引(负)-6-5-4-3-2-1假设需要获取字符串变量str中的第1个字符“P”:str[0] str[-6] 'Python'[0]4.2基础知识分片与索引类似,都可以获取序列中的元素,区别是索引只能获取单个元素,而分片可以获取一定范围内的元素。分片通过冒号隔开的两个索引来实现。3.分片slice[start:end:step]start表示起始索引,省略时表示从序列中的第一个元素开始;end表示结束索引(不包含结束位本身),省略时表示到序列的最后一个元素结束;step表示步长(默认为1,不能为0)4.2基础知识3.分片例如创建序列:strs='abcdefg'分片方式描

述结

果strs[1:]获取strs中从索引1开始到最后一个的所有元素'bcdefg'strs[:3]获取strs中从索引0到索引3之间所有元素'abc'strs[1:3]获取strs中从索引1到索引3之间所有元素'bc'strs[:-1]获取strs中从索引0开始到最后一个元素之间的所有元素'abcdef'strs[-3:-1]获取strs中从索引-3开始到最后一个元素之间的所有元素'ef'strs[-3:]获取strs中最后三个元素'efg'strs[:]获取strs中所有元素'abcdefg'strs[0:7:1]获取序列strs中所有元素'abcdefg'strs[0:7:2]strs[::2]将步长设置为2,获取strs从开始到结束的元素'aceg'strs[7:0:-1]获取strs中从索引7到索引0之间所有元素'gfedcb'4.2基础知识序列相加,就是序列的连接操作。4.序列相加>>>'Hello,'+'World' #字符串序列连接'Hello,World'>>>[1,2,3]+[4,5,6] #列表序列连接[1,2,3,4,5,6]我们要注意的是:只有两种相同类型的序列才能进行连接操作。字符串和列表是无法连接在一起的。4.2基础知识使用数字n乘以一个序列会生成新的序列,在新的序列中,原来的序列将被重复n次。5.序列乘法

编写程序,要求利用序列的乘法运算输出strs="IlovePython!“ #定义字符串并赋值print(""*10+"-"*15) #利用序列的乘法运算输出10个空格和15个“-”print(""*30) #输出30个空格print(""*10+strs) #输出10个空格和字符串print(""*30) #输出30个空格print(""*10+"-"*15) #输出10个空格和15个“-”>>>'hello'*3'hellohellohello'4.2基础知识6.序列的长度、最小值、最大值strs=input("请输入一个字符串:")str_len=len(strs)str_max=max(strs)str_min=min(strs)print("该字符串长度为:",str_len)print("该字符串中最大字符为:",str_max)print("该字符串中最小字符为:",str_min)

程序运行效果4.2.1字符串字符串是以英文单引号、双引号或三引号括起来的任意文本(需要前后一致),如'abc',"xyz"等。如果单引号本身也是字符串中的一个字符,那就可以用双引号括起来,例如"I'mOK!"如果双引号本身也是字符串中的一个字符,那就可以用单引号括起来。例如'Itoldmyfriend,"Pythonismyfavoritelanguage!"‘如果字符串内部既包含单引号又包含双引号,则可以用转义字符“\”来标识,例如'I\'m\"OK\"!'4.2.1字符串字符串索引Python的字符串操作非常灵活,所有元素可以通过索引来获取。索引分为正索引和负索引。正索引从左往右,从0开始,第二个为1,直到最后一个;负索引从右往左,最后一个元素的索引为-1,倒数第二个为-2,直到第一个。两种索引可以同时使用。如创建一个字符串,str=‘IloveChina’,其索引如下表所示。4.2.1字符串字符串切片索引可以获取字符序列的单个元素,切片则可获取一定范围内元素。切片的语法格式:切片选取的区间属于左闭右开型,即从“起始”位开始,到“结束”位的前一位结束(不包含结束位本身)“步长”:即间隔,步长<0表示从右往左倒着取字符。省略“起始”的索引,表示从序列中的第一个元素开始,省略“结束”,表示到序列的最后一个元素结束。4.2.1字符串字符串运算符操作符描述+字符串连接*重复输出字符串[]通过索引获取字符串中字符[:]截取字符串中的一部分,遵循左闭右开原则,str[0:3]是不包含第4个字符的。in成员运算符,如果字符串中包含给定的字符返回Truenotin成员运算符,如果字符串中不包含给定的字符返回Truer/R原始字符串,所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。原始字符串除在字符串的第一个引号前加上字母r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。4.2.1字符串字符串内置函数(部分)操作符描述str.count(string,beg=0,end=len(str))返回string在字符串中出现的次数。如果beg或者end指定则返回指定范围内string出现的次数;如果不指定,则默认范围从字符串的开始到结束str.find(string,beg=0,end=len(str))检测string是否包含在字符串中,如果指定范围beg和end,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1str.isalpha()如果字符串至少有一个字符并且所有字符都是字母或中文字则返回True,否则返回Falsestr.isupper()如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True,否则返回Falselen(str)返回字符串长度str.split(string="",num=str.count(string))以string为分隔符截取字符串,如果num有指定值,则仅截取num+1个子字符串str.strip([chars])删除字截掉字符串左右边的空格或指定字符chars4.2.1字符串find()函数用于在一个较长的字符串中查找子串。str表示被查找字符串;sub表示查找的子串;start表示开始索引,省略时默认为0;end表示结束索引,省略时默认为字符串的长度。如果找到子串,返回子串所在位置的最左端索引;如果没有找到则返回-1。str.find(sub[,start[,end]])4.2.1字符串例:查找子串“like”是否在字符串new_str中。new_str="IlikelearningPython" #创建字符串a=new_str.find("like") #在new_str中查找子串“like”b=new_str.find("like",5,15) #在new_str的索引为5~15的字符中查找子串print(a) #输出aprint(b) #输出b程序运行效果4.2.1字符串count()函数用于统计字符串里某个子串出现的次数。该函数返回子串在字符串中出现的次数。str表示被查找字符串;sub表示要统计的子串;start表示开始索引,省略时默认为0;end表示结束索引,省略时默认为字符串的长度。str.count(sub[,start[,end]])4.2.1字符串例:创建字符串new_str=“ThisisaPythonbook!”,使用count()方法找出其中“is”

出现的次数。new_str="ThisisaPythonbook!" #创建字符串"ThisisaPythonbook!"a=new_str.count('is’) #统计new_str中“is”出现的次数b=new_str.count('is',1,6) #设置开始和结束索引,统计“is”出现的次数print(a) #输出aprint(b) #输出b程序运行效果4.2.1字符串split()函数以指定字符为分隔符,从字符串左端开始将其分隔成多个字符串,并返回包含分隔结果的列表。str表示被分隔的字符串;delimiter表示分隔符,省略时默认为空字符,包括空格、换行(\n)、制表符(\t)等;num表示分割次数,省略时默认全部分割。str.split([delimiter,num])4.2.1字符串join()函数用于将序列中的元素以指定的字符连接,生成一个新的字符串。str表示连接符,可以为空;sequence表示要连接的元素序列。例如:创建字符串new_str=“Thisisapythonbook!”,使用join()方法将new_str中的字符用“-”连接。>>>new_str="Thisisapythonbook!“ #创建字符串"Thisisapythonbook!">>>'-'.join(new_str) #用“-”连接new_str中的字符'T-h-i-s--i-s--a--p-y-t-h-o-n--b-o-o-k-!' str.join(sequence)4.2.1字符串replace()函数用于将字符串中的旧字符串替换成新字符串。str表示被查找字符串;old表示将被替换的子串;new表示新字符串,用于替换old子串;max是可选参数,表示替换不超过max次,省略时默认替换所有。str.replace(old,new[,max])4.2.1字符串例如:创建字符串“new_str=”MondayTuesdayWednesdayThursdayFridaySaturdaySunday“”,使用replace()方法替换其中的day为DAY。>>>new_str="MondayTuesdayWednesdayThursdayFridaySaturdaySunday">>>new_str.replace('day','DAY') #将new_str中的day替换为DAY'MonDAYTuesDAYWednesDAYThursDAYFriDAYSaturDAYSunDAY'>>>new_str.replace('day','DAY',3) #将new_str中的day替换为DAY,限制为3次'MonDAYTuesDAYWednesDAYThursdayFridaySaturdaySunday'4.2.1字符串strip()函数用于删除字符串两端连续的空白字符或指定字符。str表示字符串;chars表示移除字符串两端指定的字符,省略时默认为空格。str.strip([chars])4.2.1字符串例:创建字符串new_str=“110Thisisanexample0001”,使用strip()方法去掉字符串中的“0”和“1”。>>>new_str="110Thisisanexample0001" #创建字符串>>>new_str.strip('1') #移除new_str两侧的1'0Thisisanexample000' >>>new_str.strip('01') #移除new_str两侧的0和1'Thisisanexample' 4.2.1字符串lower()函数用于转换字符串中所有大写字符为小写;upper()函数则用于转换字符串中所有小写字符为大写。str.lower()str.upper()例如:创建字符串“new_str=”ThisisanEXAMPLE“”,使用lower()方法将其转换为小写,再使用upper()方法将其转换为大写。>>>new_str="ThisisanEXAMPLE“ #创建字符串>>>new_str.lower() #将new_str中的大写字符转为小写'thisisanexample' >>>new_str.upper() #将new_str中的小写字符转为大写'THISISANEXAMPLE' 4.2.1字符串isalnum()函数用于检测字符串是否由字母和数字,或两种的一种组成。str为用于检测的字符串;如果是就返回True;否则返回False。>>>new_str="2018example" #创建字符串>>>new_str.isalnum() #判断new_str中是否只有数字或字母True str.isalnum()例如:创建字符串new_str=“2018example”,使用isalnum()方法判断new_str中是否由字母或数字组成。4.2.2列表概述列表(list)是包含0个或多个元素的有序序列,属于序列类型。列表的长度和内容都是可变的,可自由对列表中的元素进行增加、删除或替换。列表没有长度限制,元素类型可以不同,可以同时包含整数、实数、字符串等基本类型,也可以是列表、元组、字典、集合以及其他自定义类型的对象,使用非常灵活。4.2.2列表列表创建创建列表的方式很简单,只需将逗号分隔的不同元素使用方括号括起来即可。例如:>>>animal=['elephant','monkey','snake','tiger'] >>>animal ['elephant','monkey','snake','tiger']4.2.2列表例:列表的赋值与引用。程序运行结果如下所示[‘001’,’Wangwu’,98][‘001’,’Wangwu’,98][‘002’,’Wangwu’,98][‘002’,’Wangwu’,98]stu_1=['001','Wangwu',98] #是通过赋值方式创建列表stu_1stu_2=stu_1 #stu_2是stu_1所对应数据的引用,stu_2并不包含真实数据print(stu_1,stu_2) #输出stu_1和stu_2stu_1[0]='002' #修改元素stu_1[0]的值为'002'print(stu_1,stu_2) #输出stu_1和stu_24.2.2列表根据结果分析,列表就好比c语言中的数组,所不同的是c语言中的数组的每个元素类型是一致的,而列表中的元素类型可以不同。列表名就相当于数组名,stu2=stu1就相当于stu2和stu1都指向同一个数组,所以修改了stu_1[0]的值,同样stu_2[0]的值也被修改了,所以输出的列表stu2和stu1值是一样的。与字符串支持双向索引一样,列表也支持双向索引,如正索引从0开始,第二个元素索引为1,负索引从右往左,-1表示最后一个元素,-2表示倒数第二个元素,依此类推。通过索引列表可以进行截取、组合等操作。4.2.2列表例:通过索引访问列表中的单个元素。程序运行结果如下所示blueyellowlista=['blue','yellow','white','red','green','black']print(lista[0])print(lista[1])4.2.2列表例:使用负数索引值截取列表中的元素。程序运行结果如下所示lista[1:]:['华山','衡山','嵩山','恒山']lista[1:-2]:['华山','衡山']lista=["泰山","华山","衡山","嵩山","恒山"]print("lista[1:]:",lista[1:])#读取第二位开始的所有元素print("lista[1:-2]:",lista[1:-2])#从第二位开始(包含)截取到倒数第二位(不包含)4.2.2列表列表切片赋值切片赋值是以切片的形式给列表赋值,可以一次为多个元素赋值。例如:list1=['a','b','c','d']list1[2:]=['e','f']print(list1) 程序运行结果如下所示['a','b','e','f']4.2.2列表列表的遍历使用for循环遍历列表。例如:names_list=["滕王阁","黄鹤楼","岳阳楼"]fornameinnames_list:print(name) 程序运行结果如下所示滕王阁黄鹤楼岳阳楼4.2.2列表列表的遍历使用while循环遍历列表。例如:names_list=["滕王阁","黄鹤楼","岳阳楼"]length=len(names_list)i=0whilei<length:print(names_list[i])i+=1 程序运行结果如右所示滕王阁黄鹤楼岳阳楼4.2.2列表列表的遍历使用for循环和enumerate()函数实现列表的遍历。例如:names_list=["滕王阁","黄鹤楼","岳阳楼"]forindex,iteminenumerate(names_list):print(index,item) 程序运行结果如下所示0滕王阁1黄鹤楼2岳阳楼4.2.2列表列表元素的追加append可以向列表添加元素,新的元素添加在列表的末尾。其语法格式:

list.append(object)

其中,list表示列表,object表示要插入到末尾的对象。例如:lista=["水浒传","三国演义","西游记"]lista.append("红楼梦")print("更新后的列表:",lista) 更新后的列表:['水浒传','三国演义','西游记','红楼梦']4.2.2列表列表元素的追加通过extend可以在列表末尾一次性追加另一个列表中的多个值。其语法格式:

list.extend(seq)

其中,list表示列表,seq表示要追加的元素序列。例如:lista=['a','b','c']listb=['d','e','f']lista.extend(listb)print(lista) ['a','b','c','d','e','f']4.2.2列表例:append和extend比较。程序运行结果如下所示['a','b','c',['d','e','f']]['a','b','c','d','e','f']lista=['a','b','c']listb=['d','e','f']lista.append(listb)print(lista)#append将listb作为一个整体添加lista=['a','b','c']lista.extend(listb)print(lista)#extend将listb的元素依次添加可以看出,使用append添加时,是将列表listb作为一个整体添加到列表lista中;使用extend添加时,是将列表listb的每一个元素依次添加添加到列表lista中4.2.2列表列表元素的追加通过insert在指定位置index前插入元素object。其语法格式:

list.insert(index,object)

其中,list:列表,index:对象插入的索引位置,object:要插入的对象。例如:a=[0,1,2]print(a)a.insert(1,3) #将3添加到列表索引为1的位置print(a)[0,1,2][0,3,1,2]4.2.2列表列表的合并和重复列表可以使用加法和乘法例如:lista=['a','b','c']listb=['c','d','e']print(lista+listb)print(lista*2)['a','b','c','c','d','e']['a','b','c','a','b','c']程序运行结果如下所示4.2.2列表列表的复制copy()方法,可以生成一个新的列表。其语法格式:

list.copy()

其中,list表示列表,方法没有参数,返回复制后的新列表。例如:list1=["水浒传","三国演义","西游记","红楼梦"]list2=list1.copy()print("复制后的list2:",list2) 复制后的list2:['水浒传','三国演义','西游记','红楼梦']4.2.2列表列表的清除clear()方法,可以清空列表中所有元素。其语法格式:

list.clear()

其中,list表示列表,方法没有参数,返回一个空列表。例如:list1=["水浒传","三国演义","西游记","红楼梦"]list1.clear()print("清除后的

温馨提示

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

评论

0/150

提交评论