还剩48页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
编础课讲义Python程基件欢迎来到编程基础课程!本课程将带领您进入编程的Python Python精彩世界,从零基础开始,系统地学习的基本语法、数据类Python型、流程控制、函数与模块等核心概念无论您是编程新手还是希望拓展技能的专业人士,这门课程都将为您打下坚实的编程基Python础通过丰富的实例和练习,您将逐步掌握编程的要领,并能够Python独立开发简单的应用程序我们精心设计的学习路径将帮助您循序渐进地提升编程能力,为未来深入学习人工智能、数据分析、开发Web等领域奠定基础让我们一起开启这段学习之旅!Python课绍程介课程目标适用人群本课程旨在帮助学员掌握编程初学者、转行的职IT编程的基础知识场人士、对有兴Python Python与技能,能够独立编写简趣的大学生、需要用单的程序,解决进行数据分析的Python Python实际问题,并为进一步学研究人员及希望提升技能习高级技术打下的从业人员Python IT坚实基础学习方式采用理论讲解与实践相结合的方式,每个知识点配有详细示例和课后练习,学员将通过完成编程任务来巩固所学知识Python的发展历史11989年荷兰程序员开始创建,旨在设计一种易读性强且功能丰富的编程语言名称源自英国喜剧团体Guido vanRossum Python Python MontyPython21991年版本发布,这是第一个公开发行的版本,已包含类、异常处理和函数等核心特性Python
0.
9.032000年发布,引入了列表推导式、垃圾回收系统等重要特性,大大增强了语言能力Python
2.042008年发布,这是一个向后不兼容的重大更新,修复了语言设计中的缺陷,使更加一致和合理Python
3.0Python52020年至今持续发展,成为全球最流行的编程语言之一,在数据科学、人工智能和开发等领域广泛应用Python WebPython的特点简洁易读语法简洁明了,使用空格缩进而非花括号来标识代码块,注Python重代码的可读性这种设计理念使得代码更易于阅读和维护,Python大大降低了编程的认知负担丰富的库拥有庞大的标准库和第三方库生态系统,涵盖从开发到Python Web科学计算的各个领域这些高质量库使开发者能够快速实现复杂功能,避免重新发明轮子跨平台是一种跨平台语言,可在、、等各种Python WindowsMacOS Linux操作系统上运行只需编写一次代码,便可在不同平台上执行,大大提高了开发效率和程序的兼容性应领概览用域Web开发数据分析人工智能自动化使用、等框架构建利用、和通过、等编写脚本自动化日常任务,如文Django FlaskNumPy PandasTensorFlow PyTorch功能强大的网站和应用,等库进行数据处理、框架实现机器学习和深度学习模件处理、系统管理、网络爬虫等,Web Matplotlib许多知名网站如、分析和可视化,帮助企业和研究型,在计算机视觉、自然语言处提高工作效率,减少重复性劳动Instagram都使用作为人员从大量数据中提取有价值的理等领域有广泛应用Pinterest Python后端信息装环安Python境访问官方网站前往下载最新版本python.org选择合适版本根据操作系统选择对应安装包安装配置运行安装程序并添加到环境变量验证安装在命令行中输入确认python--version安装过程直观简单,适合各类用户操作安装时请务必勾选选项,这将使命令可在任何终端位置使用对于用Python AddPython toPATH PythonWindows户,推荐使用官方安装包而非应用商店版本,以获得完整功能如果您的系统中已有版本,建议同时安装,并学习如何在系统中管理多个版本两个主要版本之间存在语法差异,本课程将以Python
2.x Python
3.x Python为基础进行教学Python
3.x选择与编辑IDE器PyCharm VisualStudio CodeJupyter Notebook专业的集成开发环境,提供代码补微软开发的轻量级编辑器,通过安装基于网页的交互式编程环境,非常适合数Python全、语法高亮、项目管理等功能社区版扩展可获得出色的开发体据分析、可视化和机器学习可将代码、Python Python免费使用,专业版付费但提供更多高级功验免费开源,跨平台支持,启动速度快文本说明和执行结果集成在一个文档中能适合大型项目开发逐块执行代码•强大的调试工具丰富的扩展生态••实时查看结果•集成版本控制内置终端••支持格式•Markdown智能代码分析适合多语言项目••运你个行的第一Python程序创建文件打开你选择的或文本编辑器,创建一个新文件并保存为文件扩展IDE hello.py名表示这是一个源代码文件.py Python编写代码在文件中输入以下代码你好,世界!print这行代码调用的函数,将括号中的文本显示在屏幕上Python print运行程序有多种方法运行程序在中点击运行按钮;打开命令行,导航到Python IDE文件所在目录,输入;或者在交互式环境中导入并python hello.py Python运行查看输出如果一切正常,你将在控制台或输出窗口中看到文本你好,世界!恭喜你,你已经成功编写并运行了第一个程序!Python释与编码规注范单行注释多行注释PEP8简介使用井号在代码行开始或末尾添没有专门的多行注释语法,是官方的编码风格指#Python PEP8Python加注释编译器会忽略后的所有内但可使用三引号(或)创建多南,提供了编写代码的推荐#Python容单行注释适合简短说明行字符串作为注释这常用于函数文规范,包括缩进、行长度、命名约定档字符串等遵循这些规范可使代码更加一致、可读#这是一个单行注释x=10#为变量x赋值使用个空格缩进•4这是多行注释每行不超过个字符•79可以跨越多行使用空行分隔函数和类编写详细说明•础语结构Python基法代码块组织通过缩进级别组织和显示代码结构Python缩进规则使用一致的缩进(通常个空格)表示代码块4基本语句结构简洁的表达式和语句构成程序逻辑的语法设计极为简洁明了,与其他编程语言相比有着显著不同使用缩进来表示代码块,而不是花括号或关键字Python Python begin/end这种设计强制了代码的可读性,同时也使得代码结构一目了然基本语句通常每行一条,无需在行尾使用分号复合语句(如、、、函数定义等)由首行(带有冒号)和随后的缩进代码块组成if whilefor是大小写敏感的,和会被视为不同的标识符多个语句可以通过分号放在同一行,但这种做法不符合风格指南的Python printPrint Python建议标识符与命名规则合法标识符不合法标识符(不能以数字开头)name2name(不能使用连字符)student_name student-name(不能使用保留关键字)_hidden if(不能包含特殊字符)name2name!中文名(不能包含空格)name space在中,标识符是用来命名变量、函数、类、模块或其他对象的名称标识符可以由字母、数字和下划线组成,但必须以字母或下划线开头支持使用非字符(如Python PythonASCII中文)作为标识符,但在实际开发中建议使用英文有一套命名约定变量和函数名使用小写字母,单词之间用下划线连接(如);类名使用驼峰命名法(如);常量通常使用大写字母,单词之间用Python student_name StudentInfo下划线连接(如);以单下划线开头的名称(如)表示不希望直接访问的私有变量或方法MAX_VALUE_private变义与赋值量的定变量创建动态类型通过赋值操作创建变量类型根据值自动确定引用机制类型改变变量引用内存中的对象可随时改变变量类型是一种动态类型语言,这意味着我们不需要预先声明变量类型变量在赋值时自动创建,并可以随时改变类型例如,可以先将一个整数赋给变Python量,然后再赋给它一个字符串,这在许多静态类型语言中是不允许的支持多种赋值方式,包括基本赋值()、多重赋值()和序列解包()在中,变量实际上是对值Python x=10x=y=10x,y=10,20Python的引用,而不是存储值的容器当我们写时,创建一个整数对象,并让变量引用这个对象理解这一点对于理解的值传递和x=10Python10x Python引用传递机制非常重要数类概常用据型述数值类型字符串类型整型单引号或双引号表示•int•浮点型不可变序列•float•复数丰富的字符串方法•complex•容器类型布尔类型列表•list或•True False元组•tuple用于条件判断•字典•dict各类型都有布尔值•集合•set与整型浮点型整型int浮点型float中整型可以表示任意大小的整数,不受限于特定位数整型浮点型用于表示小数在中,浮点数遵循标准,提Python3Python IEEE754支持基本算术运算(、、、)以及特殊运算如整除()、取模供约位十进制精度需要注意的是,由于二进制浮点数表示的+-*///15-17()和幂运算()限制,某些十进制数不能精确表示%**#整型示例#浮点型示例a=42#十进制表示x=
3.14b=0b101010#二进制表示
(42)y=
2.5e6#科学计数法(
2500000.0)c=0o52#八进制表示
(42)z=floatinf#无穷大d=0x2A#十六进制表示
(42)#精度问题print
0.1+
0.2#输出
0.30000000000000004在进行科学计算或金融计算时,需要特别注意浮点数的精度限制对于需要精确小数计算的场景,可以使用模块提供的类型,它decimal Decimal支持精确的十进制计算在中,整数除法()的结果总是浮点数,即使结果是整数值;如果需要整数结果,可以使用整除运算符()Python///类见字符串型及常操作创建字符串中的字符串可以使用单引号()、双引号()或三引号(或)创建三引Python号字符串可以跨越多行所有字符串在中都是不可变的,这意味着一旦创建,其Python内容不能更改字符串连接可以使用加号()运算符连接字符串,或者使用字符串乘法()重复字符串为了提+*高效率,处理大量字符串连接时应使用方法而非运算符join+字符串截取提供强大的切片语法来提取字符串的部分内容使用方括号和冒号,如Python,可以灵活地获取子字符串索引从开始,负索引表示从末尾计数s[start:end:step]0字符串格式化提供多种字符串格式化方法运算符(旧式)、方法和Python%format f-strings()是最新且最简洁的方式,直接在字符串中嵌入变量和表达Python
3.6+f-strings式字符串内建方法方法名功能描述示例将字符串按指定分隔符分割为split a,b,c.split,→[a,b,列表c]使用指定字符串连接序列中的join,.join[a,b,c]→元素a,b,c替换字符串中的子串replace hello.replacel,x→hexxo移除字符串首尾指定字符striphello.strip→hello转换为大写小写upper/lower/Hello.upper→HELLO查找子串位置(找不到返find/index findhello.findl→2回,找不到抛异常)-1index的字符串类型提供了丰富的内建方法,使字符串处理变得简单高效这些方法返回新的字符串对象,Python而不是修改原始字符串,因为中的字符串是不可变的熟练掌握这些方法可以大大提高文本处理效率Python除了表中列出的方法外,还有许多其他有用的字符串方法检查字符串是否只包含字母;isalpha isdigit检查是否只包含数字;检查字符串是否以特定子串开始或结束;计算子串startswith/endswith count在字符串中出现的次数这些方法在数据清洗、文本分析等任务中非常有用尔类与较运布型比算布尔值基础比较运算符逻辑运算符中的布尔类型只有两等于逻辑与,当所有条件为Python bool•==•and个值和布尔值用于表时返回True False不等于True True•!=示逻辑状态,是条件判断和循环控制逻辑或,当任一条件为小于•or True•的基础每个对象都有一个Python时返回True大于•布尔值,可以使用函数查看bool逻辑非,取反•not小于等于•=空容器(如空列表、空字符串)、数大于等于的逻辑运算符支持短路求值•=Python值、等被视为,其他值0None False在运算中,如果第一个表达式为and通常被视为比较运算的结果为布尔值TruePython,不会计算第二个表达式;在False允许链式比较,如,等价abc运算中,如果第一个表达式为or于ab andbc,不会计算第二个表达式True类None型None的本质None的常见用途检查None是中表示无或空的特殊对初始化变量,表示该变量暂时没有值检查一个变量是否为应使用运算符None Python•None is象,它是类型的唯一实例而非运算符检查两个对象是否为同NoneType函数无返回值时的默认返回==is•不等于、空字符串或,它是一一个对象(身份相同),而检查值是否None0False==作为函数参数的默认值•个独立的值,表示变量没有值或函数没有相等由于是单例对象,推荐使用None if表示操作失败或未找到元素显式返回值•或进行检查x isNone ifx isnot None理解在中的作用对于编写清晰、健壮的代码非常重要的布尔值为,但它与是不同的概念在许多内置函数和方法中,None Python None FalseFalse如果没有找到匹配项或操作未成功,会返回而不是抛出异常,这种设计使得错误处理更加灵活None类转换型转为浮点型转为整型使用函数将其他类型转换为浮点数float使用函数将其他类型转换为整数浮点int整数会添加小数点,字符串必须是有效的数数会被截断,字符串必须表示有效数字值形式转为布尔型转为字符串使用函数获取对象的真值空容器、bool使用函数将几乎任何对象转换为字符串str和转换为,其他大多数值为0None False表示数值、列表、字典等都可以转换True中的类型转换是通过各种内置函数实现的除了基本类型转换外,还可以在容器类型之间进行转换,如将可迭代对象转换为列表,Python list转换为元组,转换为集合,从键值对序列创建字典tuple setdict类型转换在处理用户输入、数据预处理和接口对接时特别重要例如,通过函数获取的用户输入始终是字符串,如果需要数值计算,必须进input行类型转换在进行类型转换时应当注意异常处理,因为转换可能因输入无效而失败,导致程序崩溃运详算符解算术运算符用于执行基本的数学运算,包括加()、减()、乘()、除()、整除+-*/()、取模()和幂运算()在中,除法()总是返回浮点数,//%**Python3/而整除()返回整数结果(向下取整)//比较运算符用于比较两个值,返回布尔结果包括等于()、不等于()、大于()、小==!=于()、大于等于()和小于等于()支持链式比较,如==Python abc赋值运算符用于给变量赋值,包括基本赋值()和复合赋值(、、、等)复合赋=+=-=*=/=值结合了算术运算和赋值,如等价于,但更简洁且通常更高效a+=5a=a+5逻辑、成员和身份运算符逻辑运算符、、组合多个条件;成员运算符、检查序列包含关and or not innot in系;身份运算符、比较两个对象是否为同一对象身份运算符检查对象身份,is isnot而不是值相等性输入与输出input函数print函数函数用于从用户获取输入它接受一个可选的字符串参数作为提示信息,然后函数用于向控制台输出内容它可以接受多个参数,默认用空格分隔,并在末input print等待用户输入并按回车键无论用户输入什么内容,函数都将其作为字符串返尾添加换行符通过设置参数可以自定义分隔符和结束符input回#基本使用#基本使用printHello,World#输出:Hello Worldname=input请输入您的姓名:print您好,+name+!#自定义分隔符和结束符printH,e,l,l,o,sep=-,end=!#获取数值输入#输出:H-e-l-l-o!age=intinput请输入您的年龄:print明年您将是,age+1,岁#格式化输出name=张三age=25printf{name}今年{age}岁函数是一个阻塞函数,程序会暂停等待用户输入由于始终返回字符串,处理数值输入时记得使用或进行类型转换在进行类型转换时,应考虑用户input inputint float可能输入无效数据,推荐使用处理潜在的转换错误try-except函数支持多种输出格式控制,适合不同的输出需求对于更复杂的文本格式化,可以使用字符串的方法或()在处理文件输出时,可print formatf-strings Python
3.6+以使用函数的参数将输出重定向到文件对象,而不是默认的标准输出print file分支结构基本语法if语句最基本的条件语句,当条件为真时执行指定代码块if条件:#当条件为真时执行的代码if-else语句提供两个代码分支,条件为真执行一个,为假执行另一个if条件:#当条件为真时执行的代码else:#当条件为假时执行的代码if-elif-else语句允许测试多个条件,提供多个可能的执行路径if条件1:#当条件1为真时执行的代码elif条件2:#当条件1为假但条件2为真时执行的代码else:#当所有条件都为假时执行的代码的条件语句使用缩进来定义代码块,而不是花括号或关键字缩进通常是个空格,必须保持一致冒号用于标记条件语句的Pythonbegin/end4:开始,之后的缩进代码为条件满足时执行的代码块条件表达式可以使用比较运算符、逻辑运算符组合成复杂条件中,非零数值、非空容器、非对象在布尔上下文中被视为,而、PythonNoneTrue
0、空容器被视为这允许简洁的条件检查,如代替None Falseif name:if name!=条断与件判嵌套复杂条件判断使用逻辑运算符组合多个条件嵌套条件结构在条件块内部使用另一个条件语句条件表达式(三元运算符)简洁表达简单的条件逻辑在实际编程中,我们经常需要处理复杂的判断条件提供了逻辑运算符、、来组合多个条件例如,要检查一个数是否在Python andornot特定范围内,可以使用这样的链式比较,它等价于,但更加简洁易读if18=age30:if age=18and age30:嵌套条件是在一个条件块内部放置另一个条件语句虽然嵌套可以表达复杂的逻辑关系,但过深的嵌套会降低代码可读性建议尽量将条件逻辑扁平化,或使用函数拆分复杂逻辑对于简单的条件赋值,提供了条件表达式(三元运算符),Python result=x ifcondition elsey这比完整的结构更简洁if-elsewhile循环基本语法循环在指定条件为真时重复执行代码块每次循环开始前先检查条件,条件为假则循环结束whilewhile条件:#循环体代码循环变量更新为防止无限循环,循环体内需要更新条件变量,使条件最终变为假这通常通过增减计数器或改变状态变量实现count=0while count5:printcountcount+=1#更新循环变量循环控制语句用于立即退出循环,语句跳过当前迭代的剩余部分可使用子句在循环正常完成(非终止)时执行特break continueelse break定代码i=1while i=10:if i==5:break#当i等于5时立即退出循环printii+=1循环特别适用于不确定迭代次数的场景,如等待用户输入特定值、处理动态数据直到满足条件等在使用循环时,务必确保循环条件最while while终会变为假,否则将导致无限循环,程序将永不结束(除非强制终止)环for循基本语法range函数循环控制的循环用于遍历任何可迭代对象函数用于生成一个数字序列,常用于与循环类似,循环也支持、Python forrange whilefor break(如列表、元组、字符串等)中的元素基控制循环的执行次数它有三种调用形式和子句for continueelse本结构如下立即退出循环•break生成从到的整数•rangestop0stop-1跳过当前迭代,继续下一次•continuefor变量in可迭代对象:序列迭代#循环体代码生成从到•rangestart,stop start循环正常完成时执行(非终•else break的整数序列stop-1止)每次迭代,变量被赋予可迭代对象中的下一生成从个元素值,然后执行循环体代码•rangestart,stop,step start到,步长为的整数序列stop-1step forletter inPython:if letter==h:#打印0到4continuefor iin range5:printletterprinti else:print循环正常完成循环控制语句break语句continue语句立即终止当前循环,跳出循环体常用于在满足特定条件时提前跳过当前迭代的剩余部分,直接开始下一次迭代适用于需要跳结束循环,避免不必要的迭代过某些特定值或条件的情况#找到第一个能被7整除的数#打印10以内的非3的倍数for numin range1,100:for iin range1,11:if num%7==0:if i%3==0:printf找到了:{num}continue#跳过3的倍数break#找到一个就停止循环printielse子句在循环正常结束时执行(非终止)可用于确认循环已完整执行,或执行一些总结性操作break#检查列表中是否有负数numbers=[1,2,3,4,5]for numin numbers:if num0:print发现负数breakelse:print没有负数循环控制语句使我们能够更精细地控制循环的执行流程,提高代码的效率和灵活性和可以帮助我们避免不必要的计算,而break continue子句提供了一种优雅的方式来处理循环正常完成的情况else在嵌套循环中,和只影响它们所在的最内层循环如果需要跳出多层循环,可以使用标志变量或将代码重构为函数,然后使break continue用语句中没有像其他语言那样的语句或命名循环,这是为了保持代码的清晰和可维护性return Pythongoto础列表基列表定义索引切片列表是中最常用的数据结构之一,用列表元素通过从开始的索引访问负索引表列表切片用于获取子列表语法为Python0于存储有序的元素集合列表是可变的,可示从列表末尾开始计数,表示最后一个元,返回从到-1list[start:end:step]start end-1以包含不同类型的元素,甚至其他列表创素尝试访问超出范围的索引会导致的元素,步长为省略参数时使用默认step建列表可以使用方括号,元素之间用逗号分异常值为,为列表长度,为IndexError start0end step1隔fruits=[苹果,香蕉,橙子]nums=[0,1,2,3,4,5,6,7,#创建列表printfruits
[0]#输出苹果8,9]empty_list=[]printfruits[-1]#输出橙子printnums[2:5]#输出[2,numbers=[1,2,3,4,5]3,4]mixed=[1,hello,
3.14,True]#修改元素printnums[:3]#输出[0,nested=[1,[2,3],4]fruits
[1]=梨1,2]printfruits#输出[苹果,printnums[6:]#输出[6,梨,橙子]7,8,9]printnums[::2]#输出[0,2,4,6,8]printnums[::-1]#输出[9,8,7,6,5,4,3,2,1,0]列表的常用方法添加元素删除元素排序和搜索在列表末尾添加一个元素删除第一个匹配的值对列表进行原地排序append removesort将另一个可迭代对象的所有删除并返回指定位置的元素,原地反转列表元素extend pop[i]reverse元素添加到列表末尾默认为最后一个返回第一个匹配值的索引index在指定位置插入元素删除列表中的所有元素inserti,x ix clear其他操作计算特定元素出现的次数count创建列表的浅复制copy获取列表长度(非方法,是内置len函数)列表方法提供了强大的工具来操作和管理列表数据理解这些方法的行为是高效使用列表的关键例如,和append extend的区别在于前者添加整个对象作为一个元素,而后者将可迭代对象的每个元素分别添加需要注意的是,和方法是原地操作,它们修改列表本身而不是返回新列表如果需要保留原始列表,可以使用sort reverse函数或切片创建副本方法创建的是浅复制,这意味着如果列表包含可变对象(如其他列表),复制的是sorted list.copy引用而非创建新对象元组的定义和使用元组基础访问元组元素元组解包元组是中的不可变序列类型,一旦元组元素通过索引访问,与列表类似元组也支持元组解包是一种将元组中的值直接赋给多个变量的tuple Python创建,其内容不能被修改元组用圆括号表示,切片操作虽然元组本身不可修改,但如果元组包简洁语法这是中常用的特性,特别适合Python元素之间用逗号分隔由于元组是不可变的,它们含可变对象(如列表),这些对象的内容仍然可以函数返回多个值的情况通常用于表示不应被修改的数据集合修改#基本解包#创建元组point=3,5x,y=10,20empty_tuple=printpoint
[0]#输出:3printx#输出:10single_item=1,#注意单元素元组需printpoint[-1]#输出:5printy#输出:20要逗号coordinates=10,20#尝试修改元组会导致错误#函数返回多个值时的解包mixed=1,hello,
3.14#point
[0]=10#TypeError错误def get_dimensions:return1920,1080#切片操作元组可以不使用括号创建,如也是一x=1,2,3values=0,1,2,3,4,5width,height=get_dimensions个有效的元组在许多上下文中,会自动Pythonprintvalues[2:5]#输出:2,3,4添加或忽略括号#使用*收集多余的值a,b,*rest=1,2,3,4,5printrest#输出:[3,4,5]础字典基字典概念键值对的无序集合,通过键快速查找值键的要求键必须是不可变类型,如字符串、数字或元组基本操作创建、访问、添加、修改和删除键值对字典是中的一种映射类型,存储键值对字典使用花括号表示,键和值之间用冒号分隔,不同键值dictionary Pythonkey-value pairs{}:对之间用逗号分隔字典的键必须是不可变类型通常是字符串,且在一个字典中必须唯一值可以是任何类型,包括其他字典,创建字典的方式有多种使用花括号直接创建;使用函数;使用字典推导式访问字典中的值是通过键完成的,如{key:value}dict如果键不存在,会引发异常为避免这种情况,可以使用方法,它允许指定默认值添加或修改键值对的语法相同dict[key]KeyError get如果键已存在,值会被更新;如果键不存在,会创建新的键值对dict[key]=value字典常用方法方法名功能描述示例返回字典所有键的视图对象返回所有键keys d.keys→返回字典所有值的视图对象返回所有值values d.values→返回所有键值对的视图对象返回所有键值对items,d.items→,获取指定键的值,如果键不存在getkey,default d.getname,unknown→则返回默认值如果不存在返回nameunknown使用另一个字典或键值对更新当添加update d.update{age:30}→前字典或更新键age删除指定键并返回其值,如果键删除键popkey,default d.popage,0→age不存在则返回默认值并返回其值字典提供了丰富的方法来操作和管理键值数据、和方法返回的是视图对象,它们会动态反keys valuesitems映字典的变化,可以直接用于循环遍历这些方法在处理字典数据时非常有用,例如当需要检查某个键是否存for在,或者遍历所有键值对时其他常用的字典方法还包括删除所有键值对;创建字典的浅拷贝;类似clear copysetdefaultkey,default于,但如果键不存在,会同时设置这个键的值为默认值;随机移除并返回一个键值对在get popitem,及以上版本中,字典保持插入顺序,这使得字典既有高效的查找特性,又保留了元素的顺序信息Python
3.7集合的基本用法集合运算支持并集、交集、差集等数学运算元素去重集合自动去除重复元素,常用于数据去重a={1,2,3,4}b={3,4,5,6}numbers=[1,2,2,3,4,4,5]printa|b#并集{1,2,3,unique_numbers=setnumbers4,5,6}基本操作printunique_numbers#{1,2,3,printab#交集{3,4}集合定义4,5}printa-b#差集{1,2}添加、删除元素和成员检测无序、不重复元素的集合,用花括号创建printa^b#对称差{1,2,{}5,6}s={1,2,3}fruits={apple,banana,s.add4#添加元素orange}s.remove2#删除元素empty_set=set#创建空集合print1in s#成员检测,输出True综练习础数类合1基据型温度转换程序编写一个程序,将摄氏温度转换为华氏温度,或将华氏温度转换为摄氏温度用户输入温度值和单位(或),程序输出转换结果温度转换公式,C FF=C*9/5+32C=F-32*5/9列表操作练习创建一个包含个随机数()的列表,然后执行以下操作计算平均值;101-100找出最大值和最小值;将列表升序排序;删除所有小于平均值的元素;在列表开头添加一个;打印最终列表0字典应用创建一个学生信息字典,包含至少名学生的姓名和成绩实现以下功能计算5平均成绩;找出成绩最高的学生;将所有不及格(低于分)的学生列出;添60加一名新学生;删除成绩最低的学生集合操作有两个文本文件,分别包含一些产品名称使用集合操作找出两个文件中都有的产品;只在第一个文件中出现的产品;两个文件中所有不重复的产品将结果保存到新的文本文件中函数的定义与调用函数定义使用关键字定义函数,指定函数名和参数列表,冒号后跟缩进的函数体defdef greetname:向指定的人打招呼return f你好,{name}!参数与返回值函数可以接受参数并通过语句返回计算结果没有语句的函数返回return returnNonedef adda,b:计算两个数的和return a+bresult=add5,3#result=8函数调用使用函数名后跟括号调用函数,括号中放置参数调用时参数值会传递给函数定义中的形参message=greet张三printmessage#打印你好,张三!sum_result=add10,20printsum_result#打印30函数是组织代码的基本单位,可以提高代码重用性和可维护性函数的文档字符串()是三引号包围的字符串,放在函数定义后,描述函数的功docstring能、参数和返回值,有助于其他开发者理解函数的用途和使用方法中,函数是一等公民,这意味着函数可以赋值给变量、作为参数传递给其他函数、作为返回值返回这种特性使得函数式编程风格在中很自Python Python然当一个函数被定义在另一个函数内部时,它被称为嵌套函数,可以访问外部函数的变量,这为闭包和高阶函数提供了基础位置参数与关键字参数位置参数关键字参数默认参数位置参数是根据参数在函数调用中的位置与函数定义关键字参数在调用函数时明确指定参数名使用关键默认参数为函数参数设置默认值,使调用函数时可以中的参数匹配的调用函数时必须按照定义中的顺序字参数可以不按照定义顺序提供参数,使代码更具可省略这些参数如果提供了值,则使用提供的值;否提供所有必需的位置参数读性,特别是对于有多个参数的函数则使用默认值默认参数必须跟在非默认参数之后def describe_petanimal_type,def describe_petanimal_type,def describe_petpet_name,pet_name:pet_name:animal_type=狗:显示宠物的信息显示宠物的信息显示宠物的信息printf我有一只{animal_type},它叫printf我有一只{animal_type},它叫printf我有一只{animal_type},它叫{pet_name}{pet_name}{pet_name}#使用位置参数调用#使用关键字参数调用#使用默认参数describe_pet猫,咪咪describe_petpet_name=旺旺,describe_pet旺旺#使用默认的#输出我有一只猫,它叫咪咪animal_type=狗animal_type#输出我有一只狗,它叫旺旺#输出我有一只狗,它叫旺旺#覆盖默认参数describe_pet咪咪,猫#输出我有一只猫,它叫咪咪可变参数与参数解包*args位置可变参数**kwargs关键字可变参数允许函数接受任意数量的位置参数这些参数被打包成一个元允许函数接受任意数量的关键字参数这些参数被打包成*args**kwargs组,可以在函数内部以元组的方式访问一个字典,可以在函数内部以字典的方式访问def sum_all*numbers:def build_profile**user_info:计算所有数字的和创建用户资料字典total=0return user_infofor numin numbers:total+=num#调用函数return totalprofile=build_profilename=张三,age=30,city=北京#调用函数printprofileprintsum_all1,2,3#输出:6#输出:{name:张三,age:30,city:北京}printsum_all10,20,30,40#输出:100参数解包解包是和的逆操作,用于将序列或字典的元素作为单独的参数传递给函数使用解包序列,使用解包字典*args**kwargs***def greetname,age:return f{name}今年{age}岁#使用元组解包person=李四,25printgreet*person#输出:李四今年25岁#使用字典解包person_dict={name:王五,age:35}printgreet**person_dict#输出:王五今年35岁变与变局部量全局量局部变量函数内部定义的变量,只在函数内部可见全局变量在函数外部定义的变量,整个模块可见global关键字在函数内部修改全局变量的方式在中,变量的作用域决定了变量在程序中的可见性和生命周期局部变量是在函数内部定义的变量,只能在该函数内部访问,函数执Python行完毕后就会被销毁全局变量是在函数外部定义的变量,可以在整个模块中访问,包括在函数内部当在函数内部访问一个变量时,会按照规则()查找变量首先在局部作用域中查找,然Python LEGBLocal,Enclosing,Global,Built-in后是封闭函数的作用域,然后是全局作用域,最后是内置作用域如果在函数内部想要修改全局变量,必须使用关键字声明该变量是全global局的,否则会创建一个同名的局部变量类似地,在嵌套函数中,如果要修改外部函数的变量,需要使用关键字Python nonlocalLambda表达式与匿名函数Lambda表达式语法作为排序键函数是中创建匿名函数的方式,其语法简洁,通经常用作排序函数的参数,指定排序的依据这lambda Pythonlambda key常用于创建简单的一行函数表达式的基本形式是在处理复杂数据结构时特别有用,如按字典中特定键排序或lambda参数列表表达式表达式的计算结果成为函数的返按字符串的特定特性排序lambda:回值students=[add=lambda x,y:x+y{name:张三,age:20},printadd5,3#输出8{name:李四,age:19},{name:王五,age:22}#等价的def形式]def addx,y:return x+y#按年龄排序students.sortkey=lambda student:student[age]printstudents与map、filter结合常与和等高阶函数一起使用,简化数据处理逻辑将函数应用于可迭代对象的每个元素;筛选lambda mapfilter mapfilter满足条件的元素#使用map将列表中每个数字平方numbers=[1,2,3,4,5]squared=listmaplambda x:x**2,numbersprintsquared#输出[1,4,9,16,25]#使用filter筛选偶数even_numbers=listfilterlambda x:x%2==0,numbersprinteven_numbers#输出[2,4]内置函数介绍函数名功能描述使用示例返回对象的长度或元素个数len lenhello→5返回可迭代对象中所有数字的sum sum[1,2,3]→6和返回可迭代对象中的最大值最max/min/max5,10,3→10小值返回可迭代对象及其索引的枚enumerate listenumerate[a,b]→举对象[0,a,1,b]将多个可迭代对象打包成元组zip listzip[1,2],[a,b]→的列表[1,a,2,b]返回排序后的新列表sorted sorted[3,1,2]→[1,2,3]提供了大量内置函数,使常见操作变得简单高效这些函数可以直接使用,无需导入任何模块理解Python并熟练使用这些内置函数可以大大提高编程效率和代码可读性除了表中列出的函数外,其他常用的内置函数还包括返回对象的类型;返回对象的属性和方法type dir列表;显示对象的帮助信息;检查对象是否为指定类型的实例;生成数字序列;help isinstancerange返回数字的绝对值;对数字进行四舍五入;检查可迭代对象中的所有元素任一元素abs roundall/any/是否为真这些函数在日常编程中经常使用,掌握它们的用法可以写出更简洁、高效的代码读写础文件基打开文件读取文件写入文件关闭文件使用函数打开文件,指定文从打开的文件对象中读取内容的方使用以下方法向文件写入内容使用完文件后,务必关闭文件以释open件路径和模式常用模式包括法放系统资源写入字符串•write只读模式(默认)读取整个文件内容为•r•read写入字符串列表•writelinesfile.close一个字符串写入模式(覆盖已有内容)•w读取一行•readline#写入单行文本更好的做法是使用语句,它会with追加模式(在文件末尾添读取所有行返回file.writeHello,•a•readlines自动处理文件的关闭加内容)列表World!\n二进制模式(与其他模式直接迭代文件对象读取每一行•b•with openexample.txt,#写入多行文本结合使用,如)rbr as file:lines=[第一行\n,第•t文本模式(默认)#读取整个文件content=file.read二行\n,第三行\n]content=file.read#文件会在with块结束后自动file.writelineslines关闭file=#逐行读取openexample.txt,r,for line in file:encoding=utf-8printline.strip文本文件操作示例数据处理示例追加内容到文件读取文件内容,对数据进行处理,然后将结果写入新文件逐行读取文件创建并写入文件使用a模式打开文件进行追加,而不是覆盖现有内容这适这是一个常见的文件处理流程使用for循环迭代文件对象,每次读取一行这是处理大文件用于日志文件或需要保留原有数据的情况使用with语句和write方法创建文件并写入内容with语的高效方式,因为它不会一次性将整个文件加载到内存中with openstudents.txt,r,encoding=utf-句确保在代码块完成后自动关闭文件,即使发生异常也能正with openstudents.txt,a,encoding=utf-8as input_file:确关闭with openstudents.txt,r,encoding=utf-8as file:header=input_file.readline.strip8as file:file.write1004,赵六,19,88\nwith openstudents.txt,w,encoding=utf-#读取并打印第一行(标题)file.write1005,钱七,21,95\n#准备存储解析后的学生数据8asfile:header=file.readline.strip students=[]file.write学号,姓名,年龄,成绩\n printf标题:{header}for linein input_file:file.write1001,张三,18,85\nid,name,age,score=file.write1002,李四,19,92\n#逐行读取剩余内容line.strip.split,file.write1003,王五,20,78\n forlineinfile:students.append{printf学生信息:{line.strip}id:id,name:name,age:intage,score:intscore}#计算平均分并写入新文件with openresults.txt,w,encoding=utf-8as output_file:output_file.write姓名,成绩,评级\nfor studentin students:if student[score]=90:rating=优秀elif student[score]=80:rating=良好elif student[score]=60:rating=及格else:rating=不及格output_file.writef{student[name]},{student[score]},{rating}\n异常处理机制try块尝试执行可能引发异常的代码如果发生异常,会寻找匹配的块进行处理Python excepttry:result=10/0#这会引发ZeroDivisionErrorprint这行不会执行except块捕获并处理特定类型的异常可以有多个块处理不同类型的异常,也可以捕获多种异常exceptexcept ZeroDivisionError:print错误除数不能为零except ValueError,TypeError as e:printf发生值或类型错误{e}except Exceptionas e:printf发生其他错误{e}else块如果块中的代码没有引发异常,则执行块中的代码这可以用来分离正常代码和异常处理代码try elseelse:print计算成功完成finally块义异自定常创建自定义异常引发异常使用自定义异常通过继承类(或其子类)来创建自定义使用语句手动引发异常可以引发内置异常或在代码中捕获并处理自定义异常,就像处理内置异Exception raise异常这使我们能够定义特定于应用程序的错误类自定义异常在检测到错误条件时主动引发异常,常一样自定义异常可以携带额外的信息,帮助更型,使错误处理更加精确和语义化是编程中的一种常见做法好地了解和解决问题Pythonclass defwithdrawaccount,amount:account={name:张三,balance:InsufficientFundsErrorException:从账户中提取资金1000}当账户余额不足时引发的异常if amount=0:raise ValueError提款金额必须try:def__init__self,balance,为正数new_balance=withdrawaccount,amount:1500self.balance=balance ifamountaccount[balance]:printf提款成功,新余额self.amount=amount raiseInsufficientFundsError{new_balance}self.deficit=amount-account[balance],except ValueErroras e:balance amount printf无效金额{e}message=f余额不足账户余额except InsufficientFundsErrorase:{balance},尝试支付{amount},差额account[balance]-=amountprintf提款失败{e}{self.deficit}return account[balance]printf您差{e.deficit}元才能完super.__init__message成此交易模块的导入与使用什么是模块模块是包含定义和语句的文件,可以被其他程序导入使用模块可以包含函数、类、变量等,使代码组织更加结构化,且便于重用每Python个文件本质上就是一个模块,文件名(不含扩展名)即为模块名.py.py导入整个模块使用语句导入整个模块导入后,可以通过模块名访问其内容这种方式保持了命名空间的清晰,但访问模块内容时需要输入更多代码importimport mathradius=5area=math.pi*math.powradius,2printf圆面积:{area}导入特定内容使用语句导入模块的特定部分这种方式可以直接使用导入的内容,不需要通过模块名访问,但可能导致命名冲突from...importfrom mathimport pi,sqrtradius=5area=pi*radius**2circumference=2*pi*radiusprintf圆面积:{area}printf圆周长:{circumference}使用别名导入时可以使用关键字给模块或导入的内容指定别名这对于长模块名或避免命名冲突很有用asimport numpyas npimportmatplotlib.pyplot asplt#使用别名访问data=np.array[1,2,3,4,5]plt.plotdataplt.show义块与自定模包包的概念包是一种组织相关模块的方式,本质上是一个包含模块的目录创建模块任何文件都可以作为模块导入,文件名即为模块名.py__init__.py文件3使目录被视为包,控制导入行为,可为空或包含初始化代码创建自定义模块非常简单编写一个文件,其中包含你想要在其他程序中使用的函数、类或变量例如,可以创建一个名为的文件,其.py mymath.py中包含自定义的数学函数然后在其他程序中,可以使用或导入并使用这些函数import mymathfrom mymathimport function_name包是一种更高级的组织方式,用于将相关模块分组创建包需要建立一个目录,并在其中放置一个特殊的文件(在中这是可选__init__.py Python
3.3+的,但仍推荐)例如,可以创建一个名为的包,其中包含不同类别的实用函数模块包的导入路径遵循点号语法,如myutils import包可以嵌套,形成层次结构,帮助组织大型项目的代码模块和包的使用是代码重用和组织的关键机制myutils.mymath Python标库块准常用模os模块sys模块random模块datetime模块提供与操作系统交互的功能,提供对解释器相关的变量和生成伪随机数的工具,包括处理日期和时间的类和函数,如文件操作、目录操作、环函数的访问,如命令行参数生成如获取当random.random0-datetime.now境变量访问等常用函数包、版本信之间的随机浮点数、前日期时间、格sys.argv Python1strftime括连接路径、息、标准输入生成指式化日期、解析os.path.join sys.version random.randint strptime列出目录内容、输出流定范围内的随机整数、日期字符串等便于进行日os.listdir删除文件等从序列中期计算、比较和格式化os.remove sys.stdin/stdout/stderr random.choice等随机选择等pip与第三方库了解pip是的包管理工具,用于安装和管理第三方包它随一起安装,允许从pip Python Python Python包索引()和其他来源安装软件包简化了扩展功能的过程,使开发者能够利Python PyPIpip Python用丰富的第三方库基本pip命令安装指定的包pip installpackage_name卸载指定的包pip uninstallpackage_name列出已安装的所有包pip list显示指定包的详细信息pip showpackage_name搜索包含关键字的包(注最新版本的可能不支持)pip searchkeyword pip将当前环境的所有包列表保存到文件pip freezerequirements.txt了解PyPI()是软件包的官方存储库,包含超过个项目PyPI PythonPackage IndexPython350,000开发者可以将自己的包发布到,也可以从中下载使用他人的包使生态系统得PyPI PyPIPython以蓬勃发展,为各种应用领域提供了丰富的工具和库虚拟环境推荐使用虚拟环境(如或)隔离不同项目的依赖虚拟环境允许每个项目使用venv virtualenv特定版本的包,避免版本冲突使用创建虚拟环境,然后激活它,python-m venvmyenv再使用安装所需的包pip综练习项实践合2小目简易通讯录系统数据分析与可视化开发一个命令行通讯录程序,实现以下获取一个包含数据的文件(如学生CSV功能添加联系人(姓名、电话、邮成绩、股票价格等),使用读Python箱);查找联系人;编辑联系人信息;取并分析数据计算统计信息(平均值、删除联系人;显示所有联系人;将通讯中位数、标准差等);使用录保存到文件;从文件加载通讯录绘制数据图表;生成分析matplotlib报告文件这个项目将练习函数定义、字典操作、这个项目将练习文件处理、列表和字典文件、异常处理和用户交互等技能操作、基本统计计算和第三方库使用IO网络爬虫入门使用和库抓取网页数据选择一个简单的目标网站(如新闻requests BeautifulSoup网站);获取特定信息(如标题、日期、内容);将数据保存到文件(或CSV JSON格式);处理异常情况(如网络错误)这个项目将练习请求、解析、数据结构操作和异常处理等技能HTTP HTML学习资与进阶议源建官方文档社区资源在线课程提供了全面的官方文档,包括回答相关问题;、、等平台提供从Python.org StackOverflow PythonCoursera edXUdemy语言参考、标准库和教程这是最权威的上的开源项目提供实际代码示例;入门到高级的课程;中国大学GitHub Python资源,适合作为参考和深入学习中文社区(如)、网易云课堂等平台提供中文Python pythontab.com MOOC文档有多种语言版本,包括中文,提供本地化内容和讨论;各种会教学;频道如Python PythonPython YouTubeCorey方便不同语言背景的学习者议和线下活动促进交流和学习、提供免费视频Schafer sentdexPython教程;实践平台如、LeetCode帮助提高编程技能HackerRank课总结与程答疑语法基础数据结构变量、数据类型、运算符、流程控制列表、元组、字典、集合及其操作文件与异常函数与模块文件读写、异常处理机制函数定义、参数、返回值、模块导入在这门编程基础课程中,我们系统地学习了编程的核心概念和技能从的安装和环境配置开始,逐步探索了的语法特点、数据类型、PythonPythonPythonPython流程控制结构、函数定义与调用,以及模块和文件操作等内容通过大量实例和练习,帮助大家将理论知识转化为实际编程能力的学习是一个持续的过程,本课程为您打下了坚实的基础,但真正的编程能力需要在实践中不断提升建议大家选择一个感兴趣的方向(如开发、数据Python Web分析、人工智能等)进行深入学习,通过完成小项目积累经验同时,参与开源社区、阅读优质代码、与其他程序员交流也是提高的重要途径希望这门课程能成为您学习之旅的良好开端!Python。
个人认证
优秀文档
获得点赞 0