Python基础课件.ppt

上传人:good****022 文档编号:119546851 上传时间:2022-07-15 格式:PPT 页数:281 大小:5.23MB
返回 下载 相关 举报
Python基础课件.ppt_第1页
第1页 / 共281页
Python基础课件.ppt_第2页
第2页 / 共281页
Python基础课件.ppt_第3页
第3页 / 共281页
点击查看更多>>
资源描述
前言 Python 简简介 Python 安装 2 本节内容本节内容 进入进入PythonPython编程世界编程世界 -Python的官网网站:http:/www.python.org -Unix衍生系统可能已经安装了Python,在命令行对话框 中键入“python”即可显示版本信息。 -Windows下安装Python和安装其他软件一样,很easy! -编码方面:Python3.x默认utf-8。 -语法方面有改动,数据类型方面有调整。 -面向对象、异常处理和模块等方面也有改动。 -本教学使用Python3.5。 Python 下载与安装 Python2.x vs Python 3.x PythonPython安装安装 python官网有几个下载载文件,有什么区别别? Python 3.6.0a1 - 2016-05-17 Download Windows x86 web-based installer Download Windows x86 executable installer Download Windows x86 embeddable zip file Download Windows x86-64 web-based installer Download Windows x86-64 executable installer Download Windows x86-64 embeddable zip file x86是32位,x86-64是64位。 可以通过过下面3种途径获获取python: web-based installer 是需要通过联过联 网完成安装的 executable installer 是可执执行文件(*.exe)方式安装 embeddable zip file 嵌入式版本,可以集成到其它应应用中 安装好python后,在开始菜单栏中会自动添加一个名 为python3.5的文件夹,点击该文件夹会有如图下图所 示的一些子目录。 IDLE是Python集成开发环境,也称交互模式。 Python3.5是Python的命令控制台,里面只能执行 Python命令。 第三个是帮助文档,点击后会弹出帮助文档。 最后一个是Python的模块文档。本书若无特别指出, 示例都是在IDLE中执行的。 进入进入PythonPython编程世界编程世界 打开交互模式,如下图所示: 若看到,则表示是在Python交互式环 境下,在Python交互式环境下,只能输 入Python代码并立刻执行。 在交互式环境下输入print (Hello,world!),按 回车,可以看到输出了Hello,world!。如下图, 红色箭头指向为输入部分,红色框为输出。 此处print后面带了括号,表示print是一个函数 ,单引号里面的叫字符串。如果要让Python打 印出指定的文字,可以用print()函数,然后把希 望打印的文字用单引号或者双引号括起来,但 不能混用单引号和双引号。 我们该怎么去刻意犯呢? 我们以前面的“Hello,world!”为示例,如果将print (Hello,world!)修改为print (Hello,world!),去掉 后面的单引号,在交互模式下测试 一下。 输入语句: print (Hello,world!) 可以看到屏幕打印结果如下图所示,这里打印意 为在屏幕上输出文本,并非通过打印机打印出来 : 通过这个错误 提示,就能很快就知道问题 的原 因。 温故知新,温故知新,学以致用学以致用 (1)回顾一下Python的发展历程,起源和 应用场景。 (2)在本地安装Python最新版本,安装好 后卸载,卸载后再安装,尽量关注一下各个 步骤的细节 。 (3)尝试 在不同操作系统上安装Python。 (4)在“Hell world!”示例中,尝试 将print函 数拼写错误 ,查看输出结果。 (5)不要用电脑测试 ,自己想想print (1+2)的输出结果。 WindowsWindows下运行下运行PythonPython程序程序 HelloWorld.py # -*- coding: cp936 -*- 支持汉字注释 print “Hello, world!“ # 我的第一个Python程序 raw_input() # 使cmd框不立刻退出 三种运行方式 打开源文件,用Python Shell运行。 双击源文件,用CMD运行。 在Python Shell中直接写程序运行。 进入进入PythonPython编程世界编程世界 其他的其他的PythonPython集成开发环境集成开发环境 1)开源 Python Win+Win32 Extensions http:/ IPython(增强的交互式Python) http:/ipython.scipy.org IDE Studio(IDLE以及更多) http:/ Eclipse http:/pydew.sf.ent http:/eclipse.org 2)商业 WingIDE(WinWare公司)http:/ Komodo(ActiveState公司) http:/ 进入进入PythonPython编程世界编程世界 PythonPython学习资源学习资源 免免 费费 资资 源源 简明Python教程 啄木鸟社区啄木鸟社区 CSDNCSDN下载下载 其他其他 http:/:9081/doc/ab yteofpython_cn/chinese/index.html http:/ htp:/ http:/www.python.org http:/ http:/www.diveintopython.org/ PythonPython快速入门快速入门 输入输出,注释 本 章 主 题 操作符,赋值,数据类型 缩进,循环语句,条件语句 文件操作,错误处理 函数,类,模块 printprint输出,注释输出,注释 print (“Hello world!“) # Python Shell提示符 Hello world! abs(-4) # abs(): 内建函数,取绝对值 4 myString = Hello world! # 单引号、双引号成对使用 print myString Hello world! myString Hello world! # 显示结果带引号 _ # 下划线含义:表示最后一个表达式 Hello world! PythonPython快速入门快速入门 printprint输出,注释输出,注释 print (“%s is %d years old.” % (“李书豪”, 26)) 李书豪 is 26 years old. # %s 字符串;%d 整型;%f 浮点型 # Python非常灵活,即使将数字传递给%s,也不会引发严重后果 logFile = open(myLogFile.txt, a) # 打开文件 print logFile, Python让程序员的工作更轻松。 # 重定向输出符号 logFile.close() # 关闭文件 PythonPython快速入门快速入门 raw_input()raw_input()输入输入 userName = raw_input(输入登录名:) 输入登录名:李书豪 print 你的登录名为, userName 你的登录名为 李书豪 # 自动加空格 # raw_input():从用户那里得到数据输入; myNumber = raw_input(输入一个数字:) 输入一个数字:1024 print 你输入数字的2倍是:%d % (int(myNumber) * 2) 你输入数字的2倍是:2048 # int() 字符串转换为整型 PythonPython快速入门快速入门 操作符操作符 标准算术操作符:+ - * / /取整 %取余 *乘方 print -2 * 3 + 2010 / 4 * 2 print (-2 * 3) + (2010 / (4 * 2) # 括号增加可读性 标准比较操作符: = = != 3.14 3.14 != 3.14 # (2 pptname = “Introction to Python” pptName = “Python入门” height = 1.71 age = 26 n = height n *= 100 # 等价于 n = n * 100 五种基本数字类型:int long bool float complex复数 0102 -128 0 x80 -0XA9; 12345678902010L -0 xABCDEF123456L; True False; 3.1415926 -1.2E-14 10. 32.1e10; 6.54+3.21j -1.23+45.6J 0+1j 99-88j -0.142857+0j PythonPython快速入门快速入门 数据类型数据类型字符串字符串 字符串:索引操作符 :切片操作符 +连接运算 *重复运算 strPython = Python strIsCool = is cool! strPython0 # 第一个字符 strPython2:5: tho P strIsCool-1 # 最后一个字符 strIsCool:2: is ! strPython + + strIsCool # n:回车 Python is cool! - * 30 - PythonPython快速入门快速入门 数据类型数据类型列表、元组、字典列表、元组、字典 列表(list)和元组(tuple):可以看成普通的“数组” numberList = 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 mixList = Li Shuhao, 26, 1.71 mixTuple = (Python, is, cool) # 元组可以看成只读的列表,如:mixTuple0 = C+, 出错! print mixTuple0, mixTuple1, mixTuple-1 Python is cool 字典(dictionary):由键值对(Key-Value)构成 myDict = name:LiShuhao, height:171, age:26 for mKey in myDict: print mKey, myDictmKey # 缩进: Tab,空格 PythonPython快速入门快速入门 缩进,缩进,whilewhile循环语句,循环语句,ifif条件语句条件语句 缩进:简洁、可读性好 循环语句:while while expression: # expression 条件表达式 while_suite # 根据条件循环执行的语句 条件语句:if elif else if expression1: # 蓝色部分可以单独用 if_suite elif expression2: # 绿色部分可以省略,也可以重复多个 elif_suite else expression3: # 用elif,最后必须有else else_suite # Python没有switch-case PythonPython快速入门快速入门 forfor循环语句循环语句 循环语句:for range()内建函数 Python中的for循环与传统的for循环不太一样,不是计数循环,更像 迭代循环,如: for nItem in 123, email, homework: print nItem for nItem in range(5): # range(5)等价于1, 2, 3, 4, 5 print nItem, # print不自动换行方法:加逗号 for nChar in myString: # myString = abc print nChar for i in range(len(myString): # len() 字符串长度 print (%d) % (i), myStringi # 输出:(0) a PythonPython快速入门快速入门 forfor循环语句循环语句 循环语句:for enumerate()内建函数 # enumerate()突破约束:索引、元素双循环 for i, nChar in enumerate(myString): print (%d) % (i), myStringi 列表解析:for语句 squared = item * 2 for item in range(5) # 0 1 4 9 16 complexTuple = (item * 2 for item in range(10) if item % 2) # 1 9 25 49 81 PythonPython快速入门快速入门 文件操作文件操作 文件操作:open() file() readlines() close() handle = open(file_name, access_mode = r) # 默认 r # r:读取;w:写入;a:添加;+:读写;b:二进制访问。 filename = raw_input(请输入文件名:) hFile = file(filename, r) for nLine in hFile: print nLine, hFile.close() # close()是文件对象hfile的一个属性 # 属性可以是数据值,也可以是函数和方法,类、模块、文件和复数 等都有属性。 # 本示例适用于较小的文件,否则占用内存太大。 PythonPython快速入门快速入门 错误处理错误处理 错误和异常:try - except # Python编译时会检查语法错误,运行时检测其他错误。 # 当遇到错误,Python解释器就引发异常,并显示详细信息。 try: # 你打算管理的代码段 except IOError, e: print 出错原因, e # 程序员也可以用raise有意引发一个异常 PythonPython快速入门快速入门 函数函数 函数: def function_name(arguments): # 参数可为空,可有默认值 “optional documentation string” # 可选的函数说明语句 function_suite # 函数代码段 return fun_obj # 可以没有,自动返回None对象 def addMeToMe(me): # 函数示例:神奇的 + 操作 return (me + me) # 小括号不能省略 print addMeToMe(3.14) # 6.28 print addMeToMe(100) # 200 print addMeToMe(Python) # PythonPython print addMeToMe(-1, abc) # -1, abc, -1, abc PythonPython快速入门快速入门 类,模块类,模块 类:相关数据及逻辑的容器,构建创建真实对象的蓝图。 class className(baseClasses): “optional documentation string” # 说明性文字(可选) static_member_declarations # 静态成员定义 method_declarations # 方法定义 模块:一种组织形式,将有联系的代码组织到独立文件中 # 模块可以包含可执行代码、函数和类。 import sys # 导入方法,sys为模块名称 sys.stdout.write(Hello world!) sys.platform # win32 sys.version # 2.6.5 (r265:79096, PythonPython快速入门快速入门 第二章第二章 开启开启PythonPython之旅之旅 本章主要介绍一些Python的基本知识和一 些基本概念的介绍,为后续章节学习相关 内容做铺垫 。 2.1 “2.1 “旅行旅行” ”第一步第一步认识认识认识认识 程序程序 旅行前,我们要先熟悉地名,知道要去哪 里,将会经过 哪里。学习编程也一样,在 学习之前要先了解程序、调试 、语法错误 、运行错误 、语义错误 等。 2.1.1 2.1.1 程序程序 程序是用语语言写成的。语语言分高级语级语 言和低级语级语 言。 高级语级语 言翻译译成机器代码码有两种方法:解释释和编编 译译。 编译 型语言则是将源代码完整的编译 成 目标代码后才能执行。以后在执行时就 不需要编译 了。下图显示了一个编译 器 的结构。这个有点类似我们乘坐的直达 车,所有要乘车的人从起点上车,中途 不搭载其他乘客。 2.2 2.2 数数 据据 类类类类 型型 Python3 中有六个标准的数据类型: Number(数字)、String(字符串)、 List(列表)、Tuple(元组组)、Sets( 集合)、Dictionary(字典)。本节将讲 解Number(数字)数据类型,其它五种 数据类型由后续相关章节进 行介绍。 Python3支持三种不同的数值类 型: 整型(int)、浮点型(float)、复数( complex)。 2.2.1 2.2.1 整型整型 整型(int),通常被称为是整型或整数,是正 或负整数,不带小数点。 例如交互模式下输入如下: 51 51 这里使用的就是整型。 整型加法如下: 25+25 50 整型减法: 51-50 1 整型乘法: 51*2 102 整型除法: 153/51 3.0 155/51 3.0392156862745097 此处出现除不尽的情况了。 在整数除法中,除法(/)计算结果是浮 点数,即使是两个整数恰好整除,结果也 是浮点数,如果只想得到整数的结果, 丢弃可能的分数部分,可以使用地板除( /),整数的地板除(/)永远远是整数, 即使除不尽。 改成如下写法: 153/51 3 155/51 3 地板除(/)只取结果的整数部分, Python还提供一个余数运算,可以得到 两个整数相除的余数。如下: 153%51 0 155%51 2 2.2.2 2.2.2 浮点浮点型型 浮点型(float),浮点型由整数部分与小数 部分组成,浮点型也可以使用科学计数 法表示。 先看示例: 3.3*102 336.59999999999997 按预计应该 一位小数,但输出结果却有 这么多位小数。是因为整数和浮点数在 计算机内部存储的方式是不同的,整数 运算永远是精确的,而浮点数运算则可 能会有四舍五入的误差。 如下输入: 3.3*102+15.5 352.09999999999997 浮点除法: 153/51.0 3.0 155/51.0 3.0392156862745097 浮点地板除: 155/51.0 3.0 155%51.0 2.0 2.2.3 2.2.3 复数复数 复数( (complex),复数由实数部分和虚数 部分构成,可以用a + bj,或者complex(a,b) 表示, 复数的实部a和虚部b都是浮点型。 Python支持复数,Python的复数我们当前 阶段使用或接触的比较少,此处就不做具 体的讲解,读者有一个概念即可,有兴趣 可以自行查阅 相关资料。 2.2.4 2.2.4 数据数据类类类类型型转换转换转换转换 有时候,我们需要对数据内置的类型进行转换 ,数据类类型的转换转换 ,你只需要将数据类类型作为为 函数名即可。 关于数据的类型转换,有如下几个函数可以使 用: int(x) 将x转换为 一个整数。 float(x) 将x转换到一个浮点数。 complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。 complex(x, y) 将 x 和 y 转换到一个复数,实数 部分为 x,虚数部分为 y。x 和 y 是数字表达式 。 int(x)示例: int(352.1) 352 float(x)示例: float(352.1) 352.1 float(int(352.1) 352.0 这里先把352.1取整得到整数352,再用float 将352转换 成浮点数352.0,这样 就得到我 们需要的结果。 2.2.5 2.2.5 常量常量 所谓常量就是不能变的变量,比如常用的数学常 数就是一个常量。在Python中,通常用全部大 写的变量名表示常量。 Python中有两个比较常见的常量,分别为:PI和 E。 PI:数学常量 pi(圆周率,一般以来表示)。 E:数学常量 e,e即自然常数(自然常数)。 这两个常量将会在后续章节中被使用,具体的用 法在使用中进行体现。 2.3 2.3 变变变变量和量和关关键键键键字字 编程语言最强大的功能之一是操纵变 量的 能力。变量(variable)是一个需要熟知的 概念。如果你觉得数学是让你抓狂的话, 别担心,Python中的变量很好理解。变量 基本上就是代表某值的名字。 2.3.1 2.3.1 变变变变量量 在Python中,变量的使用环境非常宽松。没有 在Python中,等号( = )是赋值语 句,可以把 任意数据类型赋值给变 量。 如下为定义一个名为xiaohong的变量: xiaohong=XiaoHong 此操作解释:xiaohong是我们创建的变量,= 是赋值语 句,XiaoHong是变量值,需要用引 号标记。整句话的意思为:创建变量xiaohong 并赋值为 XiaoHong。(注意:字符串必须以 引号标记开始,并以引号标记结 束。) 打印变量结果: print(xiaohong) XiaoHong 在使用变量前,需要对其赋值,没有值的变量 是没有意义的,编译器也不会编译通过。例如 我定义一个变量为abc,不赋任何值,输入及 结果如下: abc Traceback (most recent call last): File “, line 1, in abc NameError: name abc is not defined 同一个变量可以反复赋值,而且可以是不同类 型的变量,输入如下: a = 123 123 a=ABC print(a) ABC 这种变量本身类型不固定的语言称之为动态 语言,与之对应的是静态语言。静态语言在定 义变量时必须指定变量类型,如果赋值的时 候类型不匹配,就会报错。和静态语言相比, 动态语 言更灵活,就是这个原因。 当不能确定变量或数据的类型时,可以借助解 释器内置的函数type进行确认。在交互模式下 可以如下输入: type(Hello,world!) type(100) type(3.0) a=test type type(a) 请不要把赋值语 句的等号等同于数学的等号。 比如下面的代码: a = 100 a = a + 200 在编程语言中,赋值语 句先计算右侧的表达式 a + 200,得到结果300,再赋给变 量a。由于a 之前的值是100,重新赋值后,a的值变成300 。我们通过交互模式验证,输入如下: a=100 a=a+200 print(a) 300 理解变量在计算机内存中的表示也非常重要。当我们写: a=ABC 时,Python解释器干了两件事情: (1)在内存中创建了一个ABC的字符串; (2)在内存中创建了一个名为a的变量,并把它指向 ABC。 也可以把一个变量a赋值给 另一个变量b,这个操作实际 上是把变量b指向变量a所指向的数据,例如下面的代码: a=ABC b=a a=XYZ print(b) 最后一行打印出变量b的内容到底是ABC呢还是XYZ?如 果从数学意义上理解,就会错误地得出b和a相同,也应该 是XYZ,但实际上b的值是ABC,让我们一行一行地执 行代码,就可以看到到底发生了什么事。 执行a = ABC,解释器创建了字符串ABC和变 量a,并把a指向ABC,如下图所示: 执行b = a,解释器创建了变量b,并把b指向a指向 的字符串ABC,如图2-4所示: 执行a = XYZ,解释器创建了字符串XYZ,并把a 的指向改为XYZ,但b并没有更改,如图2-5所 示: 所以,最后打印变量b的结果自然是ABC了。 2.3.2 2.3.2 变变变变量量名称名称 变量名可以是由数字或字符组组成的任意长长度的 字符串,但必须须以字母开头头。使用大写字母是 合法的,但变量名使用小写字母开头是个好主 意。python是区分大小写的。举个例子来说, Name和name是两个不同的变量名。交互模式 中输入如下: name=study python is happy Name=I aggree with you print(name) study python is happy print(Name) I aggree with you 下划线“_”可以出现在变量名中。它经常用于连 接多个词组 。比如happy_study, do_it_with_more_practice。交互模式输入如下 : happy_study=stay hungry stay foolish print(happy_study) stay hungry stay foolish 如果给变 量取非法的名称,解释器显示语法错 误。请看下面的示例: 2wrongtest=just for test SyntaxError: invalid syntax 该示例提示语法错误 ,错误 信息为无效的语法 ,原因是它不是以字母开头。 xiaomingme=surprised SyntaxError: cant assign to operator 该示例提示语法错误 ,错误 信息为不能做指定 操作,原因为它包含了一个非法字符。 from=from SyntaxError: invalid syntax from是Python的一个关键字。解释器通过关键 字来识别程序的结构,并且它们不能用来作为 变量名称。 Python3中共有33个关键字: False None True and as assert break class continue def del elif else except finally for from global if import in nonlocal lambda is not or pass raise return try while with yield 2.4 2.4 语语语语 句句 语句是Python解释器可以运行的一个代码单元 ,也可以理解为可以执行的命令。我们目前已 经使用过了两种语句:print打印语句和赋值语 句。 赋值语 句有两个作用:一是建立新的变量,二 是将值赋予变量。任何变量在使用时,都必须 赋值。否则,被视为不存在的变量。 advice=boss,we want have a lunch type(advice) 这个语句中的advice的类型是字符串(str)类 型的。 一般的情况下,我们用状态图 表示变量 的状态。左边是变量的名称,右边是变 量值,中间的箭头指向值。状态图显 示 了赋值语 句的最终操作结果。 advice=boss,we want have a lunch money=99999999 spend=1.11111111 如上面几条语句对应 的状态图 如下图所 示: 2.5 2.5 表表 达达 式式 表达式是值、变量和操作符的组合。单独一个 值也被看作一个表达式。单独的变量也可以看作 一个表达式。 表达式和语句一般不容易区分,很多人会将两者 混在一起。那么语句和表达式之间有什么区别? 表达式是某事,而语句是做某事,说的通俗点就 是告诉计 算机做什么。比如3*3是9,而print(3*3) 打印出来是9。那么区别在哪里? 比如我们在交互模式下输入如下: 3*3 9 print(3*3) 9 在交互模式下,其结果都是一样的。但这只是因 为解释器总是把所有表达式的值打印出来而已( 其内部都使用了相同的函数对结 果进行呈现,后 面会有细致的介绍)。一般情况下,Python不会 这么做,毕竟3*3这样 的表达式并不能做什么有 趣的事情,而编写print(3*3)会有一个显示的。 语句和表达式之间的区别在赋值时 会表现的更 加明显一些。因为语 句不是表达式,所以没有值 可供交互式解释器打印出来。比如在交互模式下 输入如下: a=100 10*10 100打印出9的结果。 赋值语 句输入完成后,下面立刻出现了新的提 示输入符。而表达式输入完成后,下面立刻得到 了结果。不过对 于赋值语 句,有些东西已经变 了,变量a现在绑定了一个值100。 这个是语句特性的一般定义:它们们改变变 了事物。比如,赋值语 句改变了变量, print语句改变了屏幕显示的内容。 赋值语 句可能是任何计算机程序设计语 言中最重要的语句类型,尽管现在还难 以说清它们的重要性。 2.6 2.6 运算符和操作运算符和操作对对对对象象 运算符和操作对象是计算机中比较常见 的,任何的计算,都涉及到运算符和操作 对象。本节将介绍Python中的运算符和 操作对象。 2.6.1 2.6.1 什么是运算符和操作什么是运算符和操作对对对对象象 运算符我知道,我们前面学习的加(+)、减 (-)、乘(*)、除(/)、地板除(/)、取余 (%)等都是运算符,是一些特殊符号的集合 。操作对象就是由运算符连接起来的对象。 Python支持以下8种运算符: (1)算术运算符。(2)比较(关系)运算符 。 (3)赋值运算符。(4)逻辑运算符。 (5)位运算符。 (6)成员运算符。 (7)身份运算符。(8)运算符优先级。 2.6.2 2.6.2 算算术术术术运算符运算符 以下变量a为10,变量b为5: 运算 符 描述实实例 +加:两个对象相加a + b 输出结果 15 -减:得到负数或是一个数减去 另一个数 a - b 输出结果 5 *乘:两个数相乘或是返回一个 被重复若干 次的字符串 a * b 输出结果 50 /除:x除以ya / b 输出结果 2 %取模:返回除法的余数b % a 输出结果 0 *幂:返回x的y次幂a*b 为10的5次方, 输出结果 100000 /取整除(地板除):返回商的 整数部分 9/2 输出结果 4 , 9.0/2.0 输出结果 4.0 交互模式下输入: 2*32/1024/1024/1024 4.0 2*64/1024/1024/1024 17179869184.0 2*32是2的32次方,这个就是32位操作系统最 大支持的内存的字节数,除以第一个1024是转 换为KB,1KB=1024B,除以第二个1024是转 换为MB,1MB=1024KB,除以第三个1024是 转换为 GB,1GB=1024MB。这个结果也就意 味着32位的操作系统最大只能支持4GB的内存 。现在大家都趋向于选择64位的了,64位的系 统能支持多大内存,自己可以算一下。 2.6.3 2.6.3 比比较较较较运算符运算符 以下变量a为10,变量b为20: 运算符描述实实例 =等于:比较对 象是否相等(a = b) 返回 False 。 !=不等于:比较两个对象是否不相等(a != b) 返回 True. 大于:返回x是否大于y(a b) 返回 False。 =大于等于:返回x是否大于等于y。(a = b) 返回 False 。 符号,其和!=一样,也表示不等于 ,在Python3中已去除,若以后有看到 运算符,那应当使用的是Python2。 2.6.4 2.6.4 赋值赋值赋值赋值 运算符运算符 以下变量a为10,变量b为20: 运算符描述实实例 =简单的赋值运算符c = a + b 将 a + b 的运算结果赋 值为 c +=加法赋值赋值运算符c += a 等效于 c = c + a 运算符描述实实例 -=减法赋值 运算符c -= a 等效于 c = c a *=乘法赋值 运算符c *= a 等效于 c = c * a /=除法赋值 运算符c /= a 等效于 c = c / a %=取模赋值 运算符c %= a 等效于 c = c % a *=幂赋值 运算符c *= a 等效于 c = c * a /=取整(地板)除赋值赋值 运算 符 c /= a 等效于 c = c / a 2.6.5 2.6.5 位运算符位运算符 按位运算符是把数字看作二进制来进行计算的。Python中的按位 运算法则如下。以下变量a为60,变量b为13: 运算 符 描述实实例 # 这是一个全局变量 def sum( arg1, arg2 ): total = arg1 + arg2; # total在这里是局部变量. print (“函数内是局部变量 : “, total) return total def totalprint(): print(total的值是,total) return total 7.7 7.7 有返回有返回值值值值和无返回和无返回值值值值函数函数 若定义函数时没有使用return语句,会默认返 回一个None,要返回一个None,可以只写一 个return,但要返回具体的数值,就需要使用 return后面加上需要返回的内容。所以对于函 数定义来说,使用return语句可以向外提供该 函数执行的一些结果。而对于函数的调用者来 说,是否可以使用函数中执行的一些操作结果 ,就在于函数是否使用了return语句返回了对 应的执行结果。 在Python中,有一部分函数会产生结果,如数 学函数,我们一般称这种函数为有返回值函数 (fruitful function);对于另一些函数,会执 行一些动作,但不返回任何值,我们称这类函 数为无返回值函数。 当调用有返回值函数时,可以使用返回的结果 做相关操作,而使用无返回值或返回None的函 数时,就只能得到一个None值。 7.8 7.8 为为为为什么要有函数什么要有函数 为什么要有函数,定义函数的好处到底在哪里? 在此对函数的好处概括如下: (1)新建一个函数,可以让我们有机会给一组 语句命名,成为一个代码块 ,这样 更有利我们 阅读 代码,而且这样组织 后的代码更容易调试 。 (2)函数方法可以减少重复代码的使用,让程 序代码总 行数变的更少,在之后如果我们需要修 改代码,只需要改很少的地方就可以。 (3)将一个很长的代码片段,拆分成几个函数 之后,可以对每一个函数进行单独的调试 ,单 个函数调试 通过后,再将它们组 合起来形成一 个完整的产品。 (4)一个设计 良好的函数,可以在很多程序中 复用,不需要重复编写。 7.9 7.9 返回函数返回函数 函数可以有返回值,但除了返回值,函数中是 否可以返回函数? 看如下函数的定义: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 定义了一个可变参数的求和函数,该函数允许 传入多个参数,最后返回所求得的和。 看如下函数的定义: def sum_late(*args): def calc_sum(): ax = 0 for n in args: ax = ax + n return ax return calc_sum 此处返回了一个函数。对于此处定义的 函数,我们没有返回求和的结果,而是 返回一个求和函数。 7.10 7.10 递归递归递归递归 函数函数 前面刚学习了在函数中返回函数,前面 也学习了可以在一个函数中调用另外一 个函数,但函数是否可以调用自己呢?答 案是可以的,如果一个函数在内部调用自 身,这个函数就称作递归 函数。 递归 的简单 定义如下: def recurision(): return recursion() 递归 函数应该满 足如下条件: (1)当函数直接返回值时 有基本实例( 最小可能性问题 )。 (2)递归实 例,包括一个或多个问题 最 小部分的递归调 用。 计算阶乘n! = 1 x 2 x 3 x . x n,用函数fact(n) 表示,可以看出: fact(n) = n! = 1 x 2 x 3 x . x (n-1) x n = (n-1)! x n = fact(n-1) x n fact(n)可以表示为n x fact(n-1),只有n=1时需 要特殊处理。 fact(n)用递归的方式的函数定义如下: #! /usr/bin/python3 # -*- coding:UTF-8 -*- def fact(n): if n=1: return 1 return n * fact(n - 1) 7.11 7.11 匿名函数匿名函数 Python使用lambda来创建匿名函数。 lambda只是一个表达式,函数体比def简单很 多。 lambda的主体是一个表达式,而不是一个代码 块。 lambda 函数只包含一个语句:lambda arg1 ,arg2,.argn:expression 使用def语句求两个数之和示例: def func(x,y): return x+y 使用lambda表达式求两个数之和示例: lambda x,y: x+y 一般应该在如下情况下多往匿名函数的方向考 虑: (1)程序一次行使用,不需要定义函数名时 ,用匿名函数可以节省内存中变量定义空间。 (2)如果想让程序更加简洁时 ,使用匿名函 数可以做到。 当然,匿名函数有几个规则要记住: (1)一般也就一行表达式,必须有返回值。 (2)不能有return。 (3)可以没有参数,可以有一个或多个参数。 7.12 7.12 偏偏 函函 数数 偏函数是从Python2.5引入的一个概念, 通过functools模块被用户调 用。要注意 ,这里的偏函数和数学意义上的偏函数 不一样。 偏函数是将所要承载的函数作为partial() 函数的第一个参数,原函数的各个参数依 次作为partial()函数后续的参数,除非使 用关键字参数。 7.13 7.13 牛刀小牛刀小试试试试经经经经典排序之快典排序之快 速排序速排序实现实现实现实现 快速排序(quick sort)是一种分治排序算法。该算 法首先选取一个划分元素;接着重排列表将其划分 为三个部分:left(小于划分元素pivot的部分)、划 分元素pivot、right(大于划分元素pivot的部分),此 时,划分元素pivot已经在列表的最终位置上;然后 分别对 left和right两个部分进行递归 排序。 划分元素的选取直接影响到快速排序算法的效率,通 常选择 列表的第一个元素或者中间元素或者最后一 个元素作为划分元素;划分过程根据划分元素重排 列表,是快速排序算法的关键所在。 快速排序算法的优点是:平均情况下的时间 复杂度 为 O(n log n)。快速排序算法的缺点是:它是不稳定 的排序算法,最坏情况下的时间 复杂度为 O(n)。 具体代码参考书中示例。 7.14 7.14 调试调试调试调试 前面章节对调试 的介绍都是基于刻意犯错进行 的,本章开始将介绍一些调试的技巧。 将一个大程序分解为小函数,自然而然地引入 了调试的检查点。如果一个函数不能正常工作 ,可以从以下3点优先考虑: (1)函数获得的实参有问题,某个前置条件 没有达到。 (2)函数本身有问题,某个后置条件没有达 到。 (3)函数的返回值有问题,或者使用的方式 不对。 7.15 7.15 问题问题问题问题 解答解答 (1)len()、count()、sum()这几个计算 函数有什么区别? (2)函数在项目中使用的多吗? (3)如何灵活使用函数? 7.16 7.16 温故知新,学以致用温故知新,学以致用 本章主要讲解的是函数定义、函数参数、变量 作用域、函数递归等内容,在本章结束前,先 回顾一下这些概念:(1)如何定义函数? (2)函数有哪些参数类型?(3)什么是形参 和实参?(4)变量的作用域有哪些?(5)怎 么使用递归函数? 尝试思考并解决如下问题: 1. 请利用Python内置的hex()函数把一个整数 转换成十六进制表示的字符串。 2. 请定义一个函数quadratic(a, b, c),接收3个 参数,返回一元二次方程: ax2 + bx + c = 0 的 两个解。 练习题练习题练习题练习题 1.函数写出菲波那切数列。 2.写个字符串,通过过遍历历的方式计计算字符 串的长长度 def jlen(str): x = 0 for i in str: x+=1 print u该该字符串的长长度为为:,x return x jlen(xiegezifuchuan) 3.写入不定个数的字符串拼接第一个和最后一个字符串 def splicing(*args): return args0+args-1 print splicing(1,2,3) 4. 定义义一个函数,输输入不定个数的数字,返回所有数字的和 def sumofdigits(*args): x=0 for i in args: x+=i return x print sumofdigits(1,2,3,4,5) 5.传传入多个参数,以list返回 def returnlist(*args): li= for i in args: li.append(i) return li print returnlist(1,2,3,4) Questions & Answers
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 预防医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!