Python网络渗透编程 课件 项目二 Python语言基础_第1页
Python网络渗透编程 课件 项目二 Python语言基础_第2页
Python网络渗透编程 课件 项目二 Python语言基础_第3页
Python网络渗透编程 课件 项目二 Python语言基础_第4页
Python网络渗透编程 课件 项目二 Python语言基础_第5页
已阅读5页,还剩132页未读 继续免费阅读

下载本文档

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

文档简介

项目二Python语言基础FundamentalsofPythonLanguagePython网络渗透编程目录CONTENTS任务一搭建Python运行环境01任务二编写第一个Python程序02任务三使用Python的序列03使用Python的函数和模块05任务四使用Python的控制结构04任务六使用Python的类和对象06任务七使用Python处理文件07任务九Socket网络编程09任务八使用Python的异常处理08项目概述ProjectOverview项目概述某渗透测试团队计划使用Python语言来实现渗透测试脚本的编写,以提高网络安全监测、处理等能力。在正式开始渗透脚本编写之前,团队需要学习Python的基础知识,为此团队计划以开发一个员工的基础健康档案管理系统的形式来掌握Python语言的用法。(1)掌握Python语言编程环境安装方法。(2)掌握Python语言基础语法、序列、控制结构等应用。(3)掌握Python语言函数及应用,了解模块的作用并学会引入模块。(4)了解Python语言的类和对象。(5)掌握Python语言文件处理方式及应用。(6)了解Python语言异常处理方法及应用。(7)掌握Python语言的网络编程应用。(8)规范程序开发方式,建立基本的编程思想。(9)培养严谨认真的大国工匠精神。学习目标项目分析ProjectAnalysis项目分析Python是一种流行的高级编程语言。20世纪80年代后期,由当时在荷兰国家数学和计算机科学研究院的GuidovanRossum开始进行编程开发。1991年,Python的第一个公开版本发布,其后因其易于阅读和编写的设计目标以及其他的优点,Python逐渐成为风靡全球的程序语言之一。Python具备的主要特点有:(1)易于学习和使用。Python的语法清晰、灵活,易于初学者学习和使用;Python代码通常比其他语言更简洁,使程序员能够更高效地完成任务。(2)可跨平台。Python可在多种操作系统上运行,包括Windows、macOS和Linux等。(3)属于解释型语言。Python代码在运行时被解释器逐行执行,无须编译成二进制代码,降低了开发周期。(4)提供丰富的标准库。Python提供有广泛的标准库,涵盖基本数据类型、数学运算、系统管理、文件操作、网络编程等方面,可以帮助程序员快速地实现各种功能。(5)具有可扩展性。Python可以通过模块进行扩展,支持C/C++和其他语言编写的模块。(6)支持面向对象编程。Python支持面向对象编程(OOP),允许定义类和对象,并支持继承、多态和封装等特性。(7)提供高级特性。Python提供了高级特性,如异常处理、迭代器和生成器、装饰器等。(8)具有广泛的应用。Python在数据科学、机器学习、网络开发、自动化、游戏开发等多个领域都有广泛应用。(9)具有强大的社区支持。Python拥有一个庞大的开发者社区,提供大量的教程、文档和第三方库。以上特点使得Python成为我们在进行渗透测试编程时的首选语言。任务一

搭建Python运行环境BuildPythonoperatingenvironment第一部分任务描述在进行Python程序开发前,首先需要部署Python环境,为Python程序的编写和运行提供基础,同时为了便捷地进行开发,还需要安装IDE环境来提升编写效率。渗透测试团队经过研究,决定使用PyCharm软件。请在Windows电脑上进行Python的运行环境部署和PyCharm安装。任务分析Python采用解释器来进行代码的编译和执行。Python代码通常保存Python的运行环境在以.py为扩展名的文件中,解释器读取这些文件,并将其中的代码按照一定的语言规则翻译成计算机可以理解和执行的命令。利用解释器,我们可以在Linux、Windows、macOS等操作系统上进行Python程序的编写及运行。搭建Python运行环境,即安装Python解释器。任务分析1.Python版本的选择Python从诞生之后经历了多个版本的更新迭代,每次更新会对语法进行优化,并引入一些新的功能。目前市场上存在的版本主要是Python2.x和Python3.x。值得注意的是,由于在进行Python3.x的设计时没有考虑到向下兼容问题,其语法变化很大,这两个版本的代码相互不能兼容,两大版本之间代码迁移的难度很大。一些过去开发但是现在依然在运行的软件存在仍然使用Python2.x的可能性,如果是为了维护这些程序,可以使用Python2.x版本。然而,2020年官方停止了Python2.x的开发更新和技术支持工作,如果是进行新程序的开发,建议选择Python3.x的版本进行环境部署,因为从长远地运行软件角度考虑,应尽量采用较新的稳定版本进行开发。1)Python2.x与Python3.x的版本选择任务分析1.Python版本的选择并不是一直选择最新版本就是最好的,因为在使用Python进行程序开发时,根据应用需求可能会引用到许多第三方编写的软件包(例如进行网络渗透编程时,会使用到Scapy、pypcap等软件包),这些软件包基于Python开发,对使用的Python版本有一定的要求,一些软件包的作者可能没有对于最新版本的Python进行适配性优化,在开发时使用最新的Python版本可能会造成这些包无法正常使用。因此,版本选择时建议确认好需要使用到的软件包对Python版本的支持情况。Scapy官方对Python版本的需求说明如图所示。2)开发程序所用软件包对版本选择的影响任务分析1.Python版本的选择如果开发者仍然在使用旧版的操作系统,最新的Python版本也无法兼容,例如,Python3.9.0及其之后的版本无法部署在Windows7系统上。官方对系统版本的支持说明如图所示。3)操作系统对版本选择的影响任务分析1.Python版本的选择Python在版本迭代的过程中,会预先发布先行版(Pre-releases)。先行版是当前最新的版本,但是由于尚未完成该版本的内容更新修订或测试,仅可以用来尝鲜使用。面对正式的开发工作时,应当使用稳定版本(StableReleases),避免存在严重的问题影响开发工程进度。官网上关于稳定版本和先行版本的发布情况如图所示。4)Python稳定版本和先行版本任务分析2.集成开发环境(IDE)的选择集成开发环境(IDE,IntegratedDevelopmentEnvironment),是提供程序开发环境的应用程序,一般包含代码编辑器、编译器、调试环境等,其最大的特点是不仅仅将程序开发、编译、测试等功能集成于一体,同时还提供了图形化界面,提升对程序开发新手的友好度。目前,有很多IDE工具可同时支持多种程序语言的开发工作,不过从其发展历程来看,其中一些IDE工具在特定语言开发的专业性和易用性上更为突出。任务分析2.集成开发环境(IDE)的选择1)PyCharmPyCharm由著名软件开发公司JetBrains开发,可以在Windows、macOS和Linux系统下安装运行。PyCharm提供专业版(ProfessionalEdition)和社区版(CommunityEdition)两个版本。专业版提供完整的开发功能,可以用于商业开发用途,需要付费后获取。社区版是免费的开源版本,提供基本的开发、编译、测试等功能,不可用于商业开发用途。任务分析2.集成开发环境(IDE)的选择2)VisualStudioCodeVisualStudioCode由微软开发,是一款面向个人和商业使用的免费IDE工具,可以在Windows、macOS和Linux系统下安装运行。任务分析2.集成开发环境(IDE)的选择3)SpyderSpyder(TheScientificPythonDevelopmentEnvironment)是一款免费开源的IDE工具,专门面向Python数据分析处理。任务实施1.Windows下Python的环境部署1)下载Python安装程序在Windows下部署Python环境,首先需要获取安装程序。安装程序可以从Python官方网站下载,其官网地址是/。官方网站如图所示。官网提供安装程序下载、使用教程、社区讨论及咨询分享等功能。任务实施1.Windows下Python的环境部署1)下载Python安装程序在Windows下部署Python环境,首先需要获取安装程序。安装程序可以从Python官方网站下载,其官网地址是/。官方网站如图所示。官网提供安装程序下载、使用教程、社区讨论及咨询分享等功能。任务实施1.Windows下Python的环境部署1)下载Python安装程序如要下载当前最新版本的Python安装程序,可以通过以下三种方式:方法一:(1)点击官网首页(/)菜单中的下载模块“Donwnloads”,或者直接访问该网址/downloads/,可进入到下载页面。(2)下载页面可自动识别出当前访问该页面时所用的操作系统,并提供合适的下载页面信息。任务实施1.Windows下Python的环境部署1)下载Python安装程序如要下载当前最新版本的Python安装程序,可以通过以下三种方式:方法二:(1)在官网首页(/)上找到菜单中的“Donwnloads”下载模块,将鼠标放在下载模块上,会滑出如图所示的菜单。(2)在滑出的菜单中,直接点击“DonwloadPython3.11.5”即可下载3.11.5版本的Windows安装程序。任务实施1.Windows下Python的环境部署1)下载Python安装程序如要下载当前最新版本的Python安装程序,可以通过以下三种方式:方法三:(1)在官网首页(/)上找到“Download”内容模块,点击“Python3.11.5”,将跳转到发布介绍页面,如图所示。(2)滑动该页面到最后,找到该页面最后如图所示的文件下载列表,根据操作系统的情况(32位、64位或者ARM64)选择合适的WindowsInstaller版本。任务实施1.Windows下Python的环境部署2)安装Python(1)双击下载好的Python环境安装程序,将出现如所示的界面。确保框线内选项处于选中状态。任务实施1.Windows下Python的环境部署2)安装Python(2)点击InstallNow,安装程序进入到安装过程界面,默认情况下将Python安装在用户目录下,其具体路径为“C:\Users\用户名\AppData\Local\Programs\Python\Python版本号”,其中用户名是当前登录该系统用户的名称。任务实施1.Windows下Python的环境部署2)安装Python(3)进度条结束后,将跳转到安装完成界面,当该界面显示“Setupwassuccessful”时,表示已经成功完成Python环境安装,如图所示。在退出安装程序前,建议点击“Disablepathlengthlimit”,以避免由于环境变量PATH长度过长,导致Python无法正常使用的情况。该操作需要用户授权,请在授权界面点击“是”以允许该操作。最后,点击“Close”完成Python环境安装。任务实施1.Windows下Python的环境部署3)验证Python环境是否部署成功安装完成后,Python不像其他的软件一样,在桌面上有可以直接点击进入的快捷方式图标,我们可以按照以下步骤进行测试,以确认Python环境的部署情况。(1)在开始菜单中打开命令提示符工具,有以下3种方式打开。①方法一:在开始菜单中找到“Windows系统”,点击其中的命令提示符工具即可打开。②方法二:在搜索栏中输入“cmd”,可直接搜索到命令提示符工具,点击即可打开。③方法三:在桌面状态下,使用“win+r”快捷键打开“运行”对话框,在“运行”输入框中输入“cmd”,即可直接打开命令提示符。(2)在打开的命令行工具中直接输入命令“python”,若显示出如图所示的界面,打开了Python的解释器,Python环境已经部署成功,可以正常使用了。任务实施2.安装PyCharm工具软件1)下载PyCharm安装包前往PyCharm官网(/pycharm/download/)下载PyCharm软件安装包,此次任务我们将采用社区版,在页面下方找到PyCharmCommunityEdition,官网根据当前操作系统自动提供对应的下载方式,如图所示。任务实施2.安装PyCharm工具软件1)下载PyCharm安装包点击“Download”后,页面将跳转到自动下载页面上,如图所示。如果没有自动下载,可以点击该页面内的“directlink”获取安装程序。任务实施2.安装PyCharm工具软件2)开始安装下载完成后,找到下载的PyCharm安装程序,双击打开,进入到PyCharm安装流程中。点击“下一步”。任务实施2.安装PyCharm工具软件2)开始安装(1)进入到如图所示界面中,在此界面下可以选择在何处安装PyCharm,默认位置是“C:\ProgramFiles\JetBrains\PyCharm版本”。如果需要调整安装位置,点击“浏览”进行选择。点击“下一步”。任务实施2.安装PyCharm工具软件2)开始安装(2)进入到安装可选配置界面,建议按照如图所示进行选择,然后点击“下一步”。①创建桌面快捷方式——PyCharmCommunityEdition:勾选此选项,将在桌面上创建PyCharm的快捷方式图标;②更新上下文菜单——添加“将文件夹作为项目打开”:勾选此选项后,将在文件的右键菜单中添加一个功能,该功能可以使得该文件夹作为项目文件的形式添加到PyCharm中;③创建关联——.py:将后缀为.py的文件与PyCharm关联起来,使得在打开.py类型的文件时,可以通过PyCharm查看和编辑;④更新PATH变量(需要重启)——添加“bin”文件夹到PATH:更新环境变量PATH,使得系统能够识别并打开PyCharm程序。任务实施2.安装PyCharm工具软件2)开始安装(3)进入到开始菜单选择界面,如图所示。可以选择在创建开始菜单中的快捷方式时存放在哪个文件夹中,建议采用默认选项,点击“安装”。任务实施2.安装PyCharm工具软件2)开始安装(4)将按照先前的配置进行PyCharm安装工作,如图所示。通过进度条可以了解当前安装进度。任务实施2.安装PyCharm工具软件2)开始安装(5)安装执行完毕后,进入到如图所示界面中,点击“完成”后,将完成并退出安装程序。如果选择“是,立即重新启动”,退出后将直接自动重启计算机;如果当前有不能重启的情况,选择“否,我会在之后重新启动”,退出后直接回到桌面,可以在合适的时候手动重启。重启后将使安装过程中选择的策略生效。任务实施3.测试PyCharm环境1)运行PyCharm软件(1)双击桌面PyCharm的快捷方式图标,打开PyCharm,首次打开时会弹出用户协议,阅读后勾选同意用户协议,如图所示。点击“Continue”。任务实施3.测试PyCharm环境1)运行PyCharm软件(2)点击“Continue”进入数据共享界面,如果同意将插件使用数据、软件配置数据分享给软件开发者以帮助完善软件,可以点击“SendAnonymousStatistic”向PyCharm公司JetBrains提供匿名数据,如果不同意则点击“Don’tSend”。选择任意一项完成后即进入到PyCharm的欢迎界面。任务实施3.测试PyCharm环境2)设置中文语言PyCharm安装后默认使用的是英文版本的界面,如果需要中文语言的界面,可以在PyCharm的插件管理“Plugins”中安装中文语言包插件,具体步骤如下所述。(1)在欢迎界面找到“Plugins”,点击后在右边显示插件市场,如图所示。(2)直接在搜索框中搜索“Chinese”,找到“Chinese(Simplified)LanguagePack/中文语言包”,点击“Install”,等待下载安装完成。任务实施3.测试PyCharm环境2)设置中文语言(3)安装完成后,点击“RestartIDE”,在弹出的确认框中点击“Restart”,即可使安装的语言包生效,欢迎界面已经变为中文界面,如图所示。任务二编写第一个Python程序WriteYourFirstPythonProgram第二部分任务描述为完成员工的基础健康档案管理系统的项目开发,根据需求将程序功能分解成不同的模块,请编写一个计算身体质量指数BMI的代码片段,并在PyCharm中运行该程序。任务分析学习一门程序语言和学习一门人类语言是一样的,需要了解语言中所用到的一些基本要素,掌握其语法规则才能更好地运用。学习掌握程序语言的语法规则极为重要,Python是一种高级程序语言,采用Python所编写的程序无法直接被计算机识别执行,因此Python采用解释器,依照语法规则将程序转化为计算机可识别的语言,从而使程序能够被执行。只有所编写的程序语法正确了,解释器才能正确地解析并执行。Python是一个易于学习的程序语言,通过该任务我们将学习到Python的基础语法,并学会在PyCharm中运行该程序。任务分析1.行和缩进一个程序是由多条可执行的语句或语句块组成的。在Python语言中,一条可执行的语句写在一行中。例如:height=1.9weight=80一行中也可以编写多条语句,需要在语句之间用“;”区分开。上述示例可修改到一行中,如下所示:height=1.9;weight=80除了这种简单的语句以外,Python还会用到控制语句、函数、类等这种由多条语句组合形成的语句块,此时需要使用缩进来标明语句块结构。缩进指的是代码行开头的空格。如以下示例所示,这是一个if语句块,通过缩进和语句的组合形成了语句块。if(1>0):print("HelloWorld")缩进中的空格数量是可变的,但是同一个语句块的语句的缩进必须包含相同空格数,这个必须严格执行,否则程序在解析时会出“IndentationError”错误提示。任务分析2.注释注释是不被解释器翻译执行的语句,通常我们可以把一些关于程序的补充说明编写在注释内,以提高代码的可读性。在Python中有两种注释方式,单行注释和多行注释。单行注释采用#开头,直到该行结束。注释可以在行开头或空白符与代码之后,但不能在字符串里面。例如:#这是一条单行注释height=1.9#这是另一条单行注释多行注释使用3个单引号"'或3个双引号""",将要注释的内容写在成对的引号内,例如:"'这是一个多行注释这是多行注释的第二行"'任务分析3.标识符标识符是程序中用来标识变量、函数、类等实体的名称。在Python里,标识符是由字母、数字、下画线组成,但不能以数字开头。标识符是区分大小写的,data和DATA会被认为是不同的标识符。在下述示例中,height和weight都是变量的标识符。在定义标识符时,我们可以通过人为的方式赋予一定的意义,以便于识别。height=1.9#身高变量mweight=80#体重变量kg在Python中,保留字不能被用作标识符。保留字即关键字,在语句中具有一些特殊意义。这些保留字我们也会在后续的学习中接触到。保留字会随着版本更迭有所变化,可以在Python中通过多种方式查看到,以下是在Python中打印出来的保留字列表。['False','None','True','and','as','assert','break','class','continue','def','del','elif','else','except','finally','for','from','global','if','import','in','is','lambda','nonlocal','not','or','pass','raise','return','try','while','with','yield']任务分析4.变量变量是用来存放数据值的容器。与其他程序语言不同的是,Python不需要声明变量即可直接使用。首次对变量赋值时便创建变量,我们采用标识符作为变量名字,并通过赋值号“=”为变量赋予值,其语法格式如下:变量=值如以下示例所示,创建名为“height”的变量,并通过赋值号将值1.9赋予height。height=1.9#身高变量m注意:在首次创建变量时必须要对其赋值才能使用,否则会出现错误。在Python中,也可以在一行中同时为多个变量赋值,其语法格式如下所述。(1)为多个变量赋予相同的值。变量1=变量2=变量3=…=变量n=值例如:height1=height2=1.9#变量height1和height2被同时赋予数值1.9(2)为多个变量赋予不同的值。变量1,变量2,变量3,…,变量n=值1,值2,值3,…,值n例如:height,weight=1.9,80#变量height被赋予数值1.9,变量weight被赋予数值80任务分析5.数据类型数值类型由数字的字面值创建,并可参与到算术运算中。数字对象是不可变的,一旦创建其值就不再改变。数值类型主要包括整型数、浮点型数和复数。(1)整型数:整型数表示数学中整数集合的成员,包括正数和负数。Python中整型数可细分为以下两种类型。①整型(int):整型是表示任意大小的数字,如1、100、65530等。②布尔型(bool):布尔型用来进行逻辑运算,有且仅有True和False两个值,分别表示逻辑真值和逻辑假值。布尔型是整型的子类型,True和False也可以分别用整数1和0来代替。(2)浮点型:浮点型(float)是指带有小数部分的数据类型,可以是正数或负数。Python中的浮点型为双精度浮点数,可以精确到很高的精度,如3.33、π等。(3)复数类型:复数(complex)是由实部和虚部组成的数,即a+bj,其中a为实部,b为虚部,如2+3i、3.235+6i等。1)数值类型任务分析5.数据类型序列用来表示按照一定顺序排列的一组数据,这些数据在内存中是连续存储的,可以通过索引访问到序列中的数据,存在序列中的数据一般称为元素。常用的序列类型有以下几种。(1)列表(list):列表是一种有序、可变的序列类型。一个列表中可包含不同数据类型的元素,而且元素可以被修改,元素的个数也是可变的。列表具有特定的表现方式,它使用方括号括起元素,并且元素之间由逗号分隔,例如:[1,2,3,4,5]。(2)元组(tuple):元组是一种有序、不可变的序列类型。一个元组中可以包含不同类型的元素,但创建好的元组中的元素是不可被修改的,元素个数也是固定的。元组具有特定的表现方式,它使用圆括号括起元素,并且元素之间由逗号分隔,例如:(1,2,3,4,5)。(3)字符串(str):字符串是一种有序、不可变的序列类型,由一系列字符组成。一般需要用单引号('')或者双引号('''')括起字符串,例如:''Python'','Cybersecurity'。2)序列类型任务分析5.数据类型Python集合类型是由无序、不重复的元素组合,集合中的元素可以是整数、浮点数、字符串、元组等不可变数据类型。集合不能通过下标来索引,但是可以被迭代。集合(set)与数学中的集合概念类似,在Python中通过使用大括号或set()函数来创建。如果要创建空集合,则必须使用set()函数来实现,创建好的集合是可以添加或者删除元素的。set()函数可以将其他数据类型(例如字符串、元组和列表等),转换为集合并自动删除其中的重复元素。3)集合类型A+en.Noequidemaccumsanpro,utlegerealiquidmenti-tumvis.任务分析5.数据类型映射类型是一种无序的键值对集合,每个键都映射到一个值。Python中的映射类型是字典(dict)。字典(dict)是Python中唯一的映射类型,它是无序、可变的,字典采用键值对(key-value)的形式存储数据。在一个字典中,通过键(key)可以找到对应的值(value)。键必须是不可变类型,如数字、字符串、元组,值可以为任意数据类型。字典具有特定的表现方式,它使用花括号括起键值对,每个键值对内部用冒号分隔,键值对之间由逗号分隔。例如:{'k1':False,'k2':'Python','k3':100}。4)映射类型任务分析6.运算符运算符类型作用运算符功能算术运算符执行基本的数学运算+加法-减法*乘法/除法//整除%取模**幂运算符类型作用运算符功能比较运算符用于比较两个值,并返回一个布尔值,指示比较结果是否为真==等于!=不等于>大于<小于>=大于等于<=小于等于赋值运算符用于将一个值赋给变量=赋值任务分析6.运算符运算符类型作用运算符功能逻辑运算符用于执行布尔逻辑运算。这些运算符通常用于比较两个布尔值,并返回一个新的布尔值。常用于条件语句和循环控制中,以及布尔表达式的构建and逻辑与,只有当两个操作数都为True时,结果才为Trueor逻辑或,只要两个操作数中有一个为True,结果就为Truenot逻辑非,用于反转操作数的布尔值xor逻辑异或运算符,用于比较两个操作数的布尔值,只有当两个操作数的值不同时,结果才为True运算符类型作用运算符功能位运算符用于对整数进行底层的位操作,通常用于处理二进制数据或执行某些特定的数学运算&按位与|按位或^按位异或~按位取反<<左移>>右移成员运算符用于检查一个对象是否另一个对象的成员,或者是否包含另一个对象in用于检查一个值是否在序列中notin用于检查一个值是否不在序列中三目运算符也称为条件表达式,用于在一行内根据条件表达式选择两个值之一的简洁表达方式xifconditionelsey条件表达式,如果condition为真则返回x,否则返回y任务分析6.运算符在Python中,运算符的执行具有一定的优先级顺序。和数学运算一样,括号内的运算具有最高的优先级,其次是幂运算、乘除、加减。比较运算符和逻辑运算符也有自己的优先级。可以使用括号来改变运算的顺序。赋值运算符和其他一些运算符进行组合,可以获得一种简洁的算式来更新变量的值。例如,+=、-=等。以+=为例,表示将右侧的值加到左侧变量的当前值上,并更新左侧变量的值。$$BILL任务实施1.创建项目PyCharm以项目(Project)的形式来组织代码、资源和配置等。一个PyCharm项目通常包含了一系列的文件和文件夹,这些文件和文件夹构成了项目的基本结构,包括程序文件虚拟环境(venv)、项目配置文件(如.pyproject)以及一些特定的文件夹(如.idea),这些文件夹包含了项目的元数据,如运行配置、代码样式设置、插件等。在编写Python程序之前,需要先新建一个项目来存放代码。任务实施1.创建项目启动PyCharm,在PyCharm欢迎界面上点击“新建项目”,将弹出创建新项目界面,如图所示。(1)名称:即新建的项目的名称,可以根据实际需求来命名。(2)位置:该项目的保存位置及项目名称。按照中的默认配置,PyCharm将在“C:\Users\test\PycharmProjects”目录路径下,创建名为“pythonProject”的文件夹,所有相关的代码、文件和配置信息将保存在该文件夹下。修改名称时,该文件夹名称也会随之被修改。(3)创建Git仓库:用来进行Git管理。Git是一个开源的分布式版本控制系统,用于跟踪和管理文件的变更历史,方便多人协作开发进行项目管理。(4)创建main.py欢迎脚本:自动创建一个主程序文件。建议初学者不勾选此选项。(5)Interpretertype:选择当前解释器的环境,PyCharm使用一种虚拟环境的方式管理不同版本的Python解释器。因为我们已经提前安装好Python的版本,所以在“Python版本”中自动选择了当前系统中安装的Python版本。任务实施1.创建项目设置完成后,点击“创建”,PyCharm将创建一个名为“pythonProject”的项目,并进入到新的界面,如图所示。左边窗格为项目文件目录树状列表,右边为工作区。当前,我们还未创建任何一个python程序文件,所以看不到任何的可编辑的区域。任务实施2.在项目中新建Python程序文件在左边窗格中找到项目名称,在该目录上点击鼠标右键,在弹出的菜单中选择“新建”→“Python文件”任务实施2.在项目中新建Python程序文件弹出一个名为“新建Python文件”的小窗口,如图所示,在“Name”处填写要新建的文件名称(本例中输入的名称为“firstPython”),输入完毕后直接敲击回车键(Enter),即可完成python程序的创建。创建好的Python程序是以.py为后缀的文件。在资源管理器中按照项目路径找到项目文件夹可以看到firstPython.py文件创建在该项目文件夹的根目录下,同时该目录下还有其他已经创建好的配置资料。任务实施3.编写Python代码新创建的Python程序文件将自动在右侧工作区中打开,如图所示。所有可打开的文件均可在工作区中显示出来,并在工作区上方以标签的方式显示出来打开的文件名称,可以点击相应的标签页来回切换文件。标签下方即为可编辑区域,在此区域内可编写代码,每一行代码前面有数字用来指代行号。我们在编辑区域内输入代码,以实现计算BMI值的功能。注意:所有符号必须为英文半角符号。任务实施4.运行编写好的Python程序点击工作区上方的向右三角,如所示。该按钮的功能是保存所有文件并直接解释运行当前处于激活状态下的文件,点击后会在下方显示出来名为“运行”的窗格,该窗格用来显示运行结果。在该窗格中,第一行是当前运行的程序脚本的文件路径,第二、三行是按照程序脚本运行出的结果,最后一行表示程序运行结束。任务实施4.运行编写好的Python程序如果程序无法正常运行,将在该窗格中显示错误信息,来帮助开发者定位错误问题的位置。如图所示,程序代码中的缩进出现错误,导致该程序无法被解释,从而在运行窗格中显示出错误信息。课程思政编写程序代码是一个严谨细致的工作,写错一个字符、少一个空格、甚至弄错一个标点符号,都会导致程序运行的失败。当然,不仅仅是编写程序,我们做任何事情都需要有严谨细致的工作作风,这也是大国工匠精神的体现。习近平总书记在对职业教育工作作出的重要指示中强调,“在全面建设社会主义现代化国家新征程中,职业教育前途广阔、大有可为”。“加快构建现代职业教育体系,培养更多高素质技术技能人才、能工巧匠、大国工匠”。我们要积极响应党的号召,学习大国工匠精神,积极培养自己的工匠品质,为全面建设社会主义现代化国家、实现中华民族伟大复兴的中国梦贡献自己的力量。任务三使用python的序列UsePythonSequences第三部分任务描述安全运维团队已经实现了对员工的身高和体重数据进行BMI指数计算的功能。下表为团队每个成员的身高和体重,请使用序列的方式存储项目团队成员的身高和体重数据,并灵活使用序列的相关运算和操作,计算成员小冬的BMI值。姓名身高m体重kg小明1.7190小芳1.6258小冬1.7669小蓝1.8996小萌1.5852任务分析1.索引序列中每个元素都有属于自己的编号即索引(Indexing),序列索引分正向索引和逆向索引。正向索引是从0开始的整数,从起始元素开始,索引值从0开始递增,如图所示。Python还支持逆向索引,其索引值是负整数。此类索引是从最后一个元素开始计数,即索引值从-1开始递减,如图所示。任务分析2.切片切片(Slicing)操作用于获取序列的一部分,是不需要创建一个新的序列的方法,其语法结构如下:seq[start:end:step](1)start:切片的起始索引,包含此索引。如果不指定start,则默认从序列的起始位置开始(索引为0)。(2)end:切片的结束索引,但不包含此索引。如果不指定end,则默认切片到序列的结尾。(3)step:步长,即每次跳过的元素数量。如果不指定step,则默认步长为1。例如:lst=[0,1,2,3,4,5]#获取索引2到最后的元素sliced=lst[2:]print(sliced)#输出:[2,3,4,5]#获取索引1到4(不包括4)的元素sliced=lst[1:4]print(sliced)#输出:[1,2,3]#获取从开始到索引3(不包括3)的元素sliced=lst[:3]print(sliced)#输出:[0,1,2]#使用步长为2进行切片sliced=lst[::2]print(sliced)#输出:[0,2,4]#反转列表reversed_lst=lst[::-1]print(reversed_lst)#输出:[5,4,3,2,1,0]任务分析3.连接可以使用+运算符或extend()方法将两个序列连接(Concatenation)在一起,形成新的序列。例如:lst1=[1,2,3]lst2=[4,5,6]lst3=list1+list2#输出:[1,2,3,4,5,6]4.迭代可以使用for循环对序列进行迭代(Iteration)。例如:lst=[1,2,3,4,5]foriteminlst:print(item)#输出:12345任务分析5.其他序列运算函数功能举例len()计算序列的长度,即返回序列中包含多少个元素。list=[1,2,3,4,5]len(list)#输出:5max()找出序列中的最大元素。list=[1,2,3,4,5]max(list)#输出:5min()找出序列中的最小元素。list=[1,2,3,4,5]min(list)#输出:1list()将序列转换为列表。List((1,2,3))#输出:[1,2,3,]str()将序列转换为字符串。list=[1,2,3,4,5]str(list)#输出:"[1,2,3]"sum()计算元素和。注意,使用sum()函数时,序列内的元素必须均为数值类型,不能是字符或字符串,否则该函数将抛出异常。list=[1,2,3,4,5]sum(list)#输出:15任务分析5.其他序列运算函数功能举例sorted()对元素进行排序。list=[3,6,2,5]sorted(list)#输出:[2,3,5,6]index()查找序列中某个元素的索引位置。list=[1,2,3,4,5]print(list.index(3))#输出:2count()用于统计序列中某个元素出现的次数。list=[1,2,3,4,5,3]print(list.count(3))#输出:2reversed()反转序列中的元素顺序。list=[1,2,3,4,5]list.reverse()print(list)#输出:[5,4,3,2,1]enumerate()将序列组合为一个索引序列,多用在for循环中。

lst=[1,2,3,4,5]forindex,valueinenumerate(lst)print(index,":"value)#输出:0:11:22:33:44:5其中,“:”左边为索引,右边为索引对应的值任务实施方法一将身高和体重按照顺序分别存放在两个列表中,从两个列表通过索引获得小冬的身高、体重,并计算BMI值,代码如下:"'计算个人身体质量指数公式为BMI=体重(KG)/身高(M)的平方"'lst_height=[1.71,1.62,1.76,1.89,1.58]#身高列表lst_weight=[90,58,69,96,52]#体重列表bmiValue=list_weight[2]/(lst_height[2]*lst_height[2])#小冬排在第3个,索引为2print("BMI值为",bmiValue)#打印bimValue变量的值到输出屏幕上运行结果:bmi值为22.275309917355372任务实施方法二采用一个列表,列表内的元素是每个人的身高和体重组合起来的元组,在这个列表里通过索引获得小冬的身高、体重,并计算BMI值。代码如下:"'计算个人身体质量指数公式为BMI=体重(KG)/身高(M)的平方"'list=[(1.71,90),(1.62,58),(1.76,69),(1.89,96),(1.58,52)]#身高体重列表#小冬排在第3个,索引为2,先用list[2]取出小冬的身高体重数据(1.76,69)#接下来要取出元组内的数据,身高数据在索引0位置,体重在索引1位置#因此,获取身高数据的方式就是list[2][0],获取体重的方式就是list[2][1]bmiValue=list[2][1]/(list[2][0]*list[2][0])print("bmi值为",bmiValue)#打印bimValue变量的值到输出屏幕上运行结果:bmi值为22.275309917355372任务四使用Python的控制结构UsePythonControlStructures第四部分任务描述在任务三的基础上,请计算出全团队成员的BMI值,并根据世界卫生组织(WHO)的标准对每个人的体重进行分级评估。根据世界卫生组织的标准,成人的BMI值与肥胖程度的对应关系如下:低于18.5:体重过轻。18.5至24.9:正常体重。25至29.9:超重。30及以上:肥胖。任务分析1.顺序结构顺序结构是最基础的控制结构,它指的是程序代码按照编写的顺序依次执行。在顺序结构中,每条语句依次执行,没有任何判断或跳转。这种结构简单直接,适用于线性执行的任务。我们在前面所编写的就是顺序结构语句。其执行流转方法如图所示:任务分析2.选择结构选择结构是根据条件的真假来决定执行不同的代码块,其执行流转方法如图所示。任务分析2.选择结构Python中的选择结构主要通过if、elif和else关键字来实现。其语法结构如下:if<条件判断1>:<语句块1>elif<条件判断2>:<语句块2>…elif<条件判断n>:<语句块n>else:<语句块n+1>(1)if关键字是if条件判断语句起始的标志,用来判断后面跟随的条件判断语句是否为真,如果为真,则执行相应的代码块。(2)elif关键字是在有多个条件需要判断时使用。在前一个条件判断语句结果为假的情况下执行,并需要判断其后面跟随的条件判断语句是否为真,如果为真,则执行相应的代码块。elif语句必须跟在if或者另一个elif语句之后。(3)else关键字则表示以上条件都不满足的情况下需要执行的语句。注意:(1)if关键字是必需的,elif和else根据情况选择使用。(2)每个条件判断后面必须要使用半角冒号“:”,表示接下来是满足条件后要执行的语句块。(3)使用缩进来划分语句块。任务分析2.选择结构以下是一个if选择语句的具体例子。x=3ifx>5:print("x大于5")elifx==5:print("x等于5")else:print("x小于5")执行结果:x小于5任务分析3.循环结构循环结构用于重复执行一段代码,直到满足某个条件循环才结束。我们采用循环控制语句,可以让计算机去处理大量的重复性工作。任务分析3.循环结构1)for循环forelementiniterable:语句块其中,element是当前迭代的元素;iterable是一个可迭代的对象,即任何可以记住遍历位置的对象,如列表、元组、字符串。以下是一些for循环语句的例子。#遍历列表中的每个元素foritemin[1,2,3,4,5]:print(item)#遍历字符串中的每个字符forcharin"hello":print(char)#遍历字典中的每个键dict={'a':1,'b':2,'c':3}forkeyindict:print(key)#打印字典的键print(dict[key])#打印字典的值for循环语句用于遍历序列(如列表、元组、字符串)中的每个元素,或者用于迭代一个指定的次数。其语法结构如下:任务分析3.循环结构2)while循环while条件判断:

语句块当条件判断为True时,就执行一次语句块,直到条件判断为False时,才会跳出循环。以下是具体例子。i=1whilei<6:print(i)i+=1注意:在编写循环语句时,要避免程序陷入死循环,即程序一直在执行循环内语句块的而无法结束情况,最终当计算机计算资源耗尽时,程序将会崩溃。while循环用于根据某个条件反复执行代码,一旦条件不再满足,循环将停止。其语法结构如下所示:任务实施方法一"'计算个人身体质量指数项目二Python语言基础73公式为BMI=体重/身高的平方"'lst_height=[1.71,1.62,1.76,1.89,1.58]#身高列表lst_weight=[90,58,69,96,52]#体重列表i=0#循环控制变量#使用while循环通过列表索引方式获得每个元素#当控制变量i大于等于列表长度时,跳出循环whilei<len(list_height):bmiValue=list_weight[i]/(list_height[i]*list_height[i])ifbmiValue>30:#条件判断来判别分类print("BMI值为",bmiValue,"肥胖")elifbmiValue>=25:print("BMI值为",bmiValue,"超重")elifbmiValue>=18.5:print("BMI值为",bmiValue,"正常")else:print("BMI值为",bmiValue,"过轻")i+=1#每完成一次,控制变量次数+1运行结果:BMI值为30.778701138811947肥胖BMI值为22.10028959000152正常BMI值为22.275309917355372正常BMI值为26.874947509868147超重BMI值为20.82999519307803正常任务实施方法二"'计算个人身体质量指数公式为BMI=体重(KG)/身高(M)的平方"'list=[(1.71,90),(1.62,58),(1.76,69),(1.89,96),(1.58,52)]#身高体重列表#使用for循环遍历列表#同时使用height和weight变量来获得列表内当前元组内的元素for(height,weight)inlist:bmiValue=weight/(height*height)ifbmiValue>30:#条件判断来判别分类print("BMI值为",bmiValue,"肥胖")elifbmiValue>=25:print("BMI值为",bmiValue,"超重")elifbmiValue>=18.5:print("BMI值为",bmiValue,"正常")else:print("BMI值为",bmiValue,"过轻")运行结果:BMI值为30.778701138811947肥胖BMI值为22.10028959000152正常BMI值为22.275309917355372正常BMI值为26.874947509868147超重BMI值为20.82999519307803正常任务五使用Python的函数和模块UsePythonfunctionsandmodules第五部分任务描述渗透测试团队希望将一些功能性代码制作成模块,以方便在其他项目上进行复用。请采用函数的方式,将计算身体质量指数BMI值以及根据BMI值判断肥胖程度的过程编写为函数,函数名称为getBMI,并在任务四的基础上调用getBMI函数计算出每个人的BMI结果。任务分析1.函数函数是经过组织,可重复使用的代码块,用于实现单一或相关联的功能。函数有助于减少代码的冗余,提高代码的重复利用率。1)函数的概念Python中有两种函数:内置函数和用户自定义函数。(1)内置函数:是在Python内已经定义好的函数。Python提供了很多的内置函数,比如前面的任务当中一直用到的print()就是内置函数的一种。(2)用户自定义函数:用户自己创建的函数就是用户自定义函数,定义函数时遵照语法格式。任务分析1.函数内置函数abs()delattr()hash()memoryview()set()all()dict()help()min()setattr()any()dir()hex()next()slice()ascii()divmod()id()object()sorted()bin()enumerate()input()oct()staticmethod()bool()eval()int()open()str()breakpoint()exec()isinstance()ord()sum()bytearray()filter()issubclass()pow()super()bytes()float()iter()print()tuple()callable()format()len()property()type()chr()frozenset()list()range()vars()classmethod()getattr()locals()repr()zip()compile()globals()map()reversed()__import__()complex()hasattr()max()round()

任务分析1.函数Python自定义函数的语法格式如下:2)定义函数格式def函数名称(形参列表):代码块return[表达式]下面是一个函数定义的示例。defprintReport(weight,height):print("体重:%d,身高:%d",weight,height)示例中该函数用关键字def定义了一个名为“printReport”的函数,形参列表为“weight”和“height”,函数的功能是将使用传入的参数来打印一段文字。任务分析1.函数2)定义函数格式自定义函数需要注意以下几点:(1)使用关键字def定义函数,后跟函数名称与括号内的形参列表;(2)采用标识符作为函数名称;(3)形参是在定义函数时候使用的参数,可以没有或者有多个形参,其存在的目的是用来接收调用该函数时传入的参数值。形参只在函数内部有效,离开该函数则不能使用。在函数调用过程中,形参用于指示函数期望接收哪些数据用于函数内部的运算。(4)代码块是希望该函数执行特定功能的一组语句,书写时需要有缩进,且要保持同样的缩进,表示是在函数体内执行的代码;(5)return[表达式]仅可以出现在函数体的最后,表示将表达式的结果返回给调用函数的对象。表达式不是必需的,没有表达式的return相当于返回None。如果没有需要返回的值,可以省略return语句。任务分析1.函数3)调用函数调用函数是指在程序代码中使用已经定义好的函数来实现特定功能的过程。当函数被调用时,程序会跳转到函数定义的位置去执行函数体内的语句,执行结束后回到调用函数的地方,再继续执行后续的代码。在需要调用函数的位置,用“函数名(传入函数参数列表)”的方式即可完成函数的调用过程。以调用printReport函数为例,示例如下:height=180weight=120printReport(weight,height)printReport(110,160)任务分析1.函数4)传递函数参数在Python中,向函数传递参数有两种方式:位置参数和关键字参数。(1)位置参数:按照函数定义时的参数顺序传递。在调用函数时,直接将值按照定义的形参顺序传递给函数。例如:printReport(120,160)(2)关键字参数:在调用函数时,使用参数名来指定参数值,可与定义函数时的形参顺序不一致。例如:printReport(height=160,weight=120)可以在函数定义时指定形参的默认值。如果指定了默认值,那么在调用函数时可以不传入该参数,此时将使用默认值。例如:defprintReport(weight,height=180):print("体重:%d,身高:%d",weight,height)printReport(110)调用该函数后的结果是:体重:110,身高:180任务分析1.函数4)传递函数参数在实际编程中,位置参数和关键字参数可以同时使用,但要注意它们的顺序,位置参数在前,关键字参数在后。如果使用关键字参数,那么位置参数的顺序不影响参数的接收。需要注意的是,在Python中,函数的参数是按值传递的而不是按引用传递,这意味着在函数内部无法直接修改传入的参数值。如果需要在函数内部修改传入的参数值,可以传入参数的副本(例如:传入列表或字典的深拷贝),或者在函数内部创建一个新的变量来保存参数的值。任务分析2.模块1)导入模块模块是包含一系列函数和变量的Python文件,可以被其他Python程序导入并使用。模块可以定义函数、类和变量,也可以包含可执行的代码。模块帮助我们组织代码,提高代码复用性。要使用模块中的函数或变量,我们需要先导入模块。在Python中,可以使用import关键字导入模块。我们有多种方式导入模块,下面以导入Python自带模块math来进行示例。(1)基本导入语法:importmath。(2)导入模块中的某个函数或变量:frommathimportsqrt。(3)导入模块中的所有函数和变量:frommathimport*。(4)导入模块并重命名:importmathasm。任务分析2.模块2)Python内置模块Python内置模块随着解释器一起安装,它们提供了Python编程所需的基本功能。这些模块覆盖了从数据类型处理、文件操作到网络通信等各个方面。模块名称功能模块名称功能sys提供对解释器使用或维护的变量的访问,以及与解释器紧密相关的函数。queue提供了线程安全队列的实现。os提供了许多与操作系统交互的函数,如文件创建、目录遍历、环境变量等。collections提供了额外的容器类型,如有序字典、计数器等。time提供了基本的时间函数,如获取当前时间、格式化时间等。itertools提供了迭代器操作的函数,用于构造和操作迭代器。math提供了标准的数学运算函数,如三角函数、对数函数、数学常量等。functools提供了高阶函数:那些作用于或返回其他函数的函数。random提供了生成伪随机数的函数,如随机整数、随机浮点数、随机序列等。datetime提供了日期和时间的类,用于处理时间和日期。string提供了字符串操作的相关函数,如字符串格式化、字符串搜索等。decimal提供了十进制浮点数的基本实现。re提供了正则表达式的相关函数,用于字符串的搜索、替换、分割等操作。heapq提供了堆队列算法的实现。urllib提供了访问网页和处理URL的功能,如下载文件、发送HTTP请求等。logging提供了记录日志的标准框架。socket提供了网络通信的相关函数,用于创建和操作套接字,实现网络通信。socketserver提供了创建网络服务器的框架。threading提供了高级接口来启动和管理线程。syslog提供了与系统日志进行交互的接口。multiprocessing提供了启动和管理进程的接口,以及进程间通信的接口。xml提供了处理XML数据的基本功能。任务分析2.模块3)Python第三方模块Python提供有内置模块,以提供一些基本功能。同时,还有许多第三方模块,这些模块是由众多开发者编写的,以提供更多丰富的功能,像渗透编程中会用到的Scapy,Pyshark等都是第三方模块。要使用第三方模块,必须要先在Python中安装才可以使用,这些模块可以使用pip(Python的包管理工具)来安装和管理这些模块。安装方法通常是通过在命令行中输入pipinstallmodule_name,其中module_name是你要安装的模块名称。任务实施方法一以传入参数为身高和体重的数值的方式定义getBMI函数。具体代码如下:'''定义getBMI函数,形参列表:height:身高值,单位mweight:体重值,单位kg'''defgetBMI(height,weight):bmiValue=weight/(height*height)ifbmiValue>30:#条件判断来判别分类

print("bmi值为",bmiValue,"肥胖")elifbmiValue>=25:print("bmi值为",bmiValue,"超重")elifbmiValue>=18.5:print("bmi值为",bmiValue,"正常")else:print("bmi值为",bmiValue,"过轻")list_height=[1.71,1.62,1.76,1.89,1.58] #身高列表list_weight=[90,58,69,96,52] #体重列表i=0 #循环控制变量#使用while循环通过列表索引方式获得每个元素#当控制变量i大于等于列表长度时,跳出循环whilei<len(list_height):

温馨提示

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

评论

0/150

提交评论