收藏 分销(赏)

python学习复习资料.pdf

上传人:曲**** 文档编号:229873 上传时间:2023-03-20 格式:PDF 页数:9 大小:613.75KB
下载 相关 举报
python学习复习资料.pdf_第1页
第1页 / 共9页
python学习复习资料.pdf_第2页
第2页 / 共9页
python学习复习资料.pdf_第3页
第3页 / 共9页
python学习复习资料.pdf_第4页
第4页 / 共9页
python学习复习资料.pdf_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、程序一个程序应该包括以下两方面的内容。1、对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(Data structure)。2、对操作的描述。即操作步骤,也就是算法(Algorithm)。程序是为实现特点目标或解决特定问题而用计算机语言编写的命令序列的集合。指一个能让计算机识别 的文件,一般是.exe型的可执行文件。计算机程序设计历史1.机器语言 电子计算机所使用的是山“0”和“1”组成的二进制数,二进制是计算机的语言的基础。2.汇编语言用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串。3.高级语言40多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、

2、使用较普遍的 有 FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL PL/K PascaL C、PROLOG Ada、C、VC、VB、Delphi,JAVA 等。4.计算机语言发展的特性:(1)简单性:提供最基本的方法来完成指定的任务,只需理解一些基本 的概念,就可以用它编写出适合于各种情况的应用程序。(2)面向对象:提供简单的类机制以及动态的接口模型。对象中封装状态变量以及相应的方法,实现了模块化和信息隐藏;提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。(3)安全性:用于网络、分布环境下有安全机制保证。(4)平台无关性:与平

3、台无关的特性使程序可以方便地被移植到网络上 的不同机器、不同平台。解释型和汇编型区别计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能值型高级语言编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如 exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了 一次,运行时不需要翻译,所以编译型语言的程序执行效率高。解释型语言则不同,不需要编译,省了道工序,在运行程序的时候才翻译,比如解释性bas

4、ic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一 次就要翻译一次,效率比较低。注:java很特殊,java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后用解释方式执行字节码。Python简史Python的创始人为Guido van Rossum。之所以选中Python(大蟒蛇的意思)作为程序的名字,是因为他 是一个叫Monty Python的喜剧团体的爱好者。就这样,Python在Guido手中诞生了。实际上,第一个实 现是在Mac机上。可以说,Python是从ABC发展起来,主要受到了 Modula-3(另一种

5、相当优美且强大 的语言,为小型团体所设计的)的影响。并且结合了 Unix shell和C的习惯。Python的优缺点优点1.简单,易学:Python极其容易上手,因为Python有极其简单的说明文档4。2.速度快:Python的底层是用C语言写的,很多标准库和第三方库也都是用C写的,运行速度非常快。3.免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。4.解释性:一个用编译性语言比如C或C+写的程序可以从源文件(即C或C+语言)转换到一个你的 计算机使用的语言(二进制代码,即。和1)。

6、这个过程通过编译器和不同的标记、选项完成。运行程序 的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译 成二进制代码。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译 成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。5.面向对象:Python既支持面向过程的编程也支持面向对象的编程。6.可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C+编 写,然后在Python程序中使用它们。7.可嵌入性:可以把Python嵌入C/C+程序,从

7、而向程序用户提供脚本功能。丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测 试、线程、数据库、网页浏览器、CGL FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码 系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除 了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。8.规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。缺点1.单行语句和命令行输出问题:很多时候不能将程序连写成一行,如import sys;for i

8、 in sys.path:print i。而 perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写 入一个.py文件。2.独特的语法:它用缩进来区分语句关系的方式给很多初学者带来了困惑。即便是很有经验的Python程 序员,也可能陷入陷阱当中。最常见的情况是tab和空格的混用会导致错误,而这是用肉眼无法分别的。3.运行速度慢:这里是指与C和C+相比。Python标识符命名规则和类型1.标识符必须山字母(区分大小写)、数字、下划线组成,但首字符必须是字母或下划线2.标识符大小写敏感3.标识符不能为Python保留字Python保留字ande

9、lififpasselseimportprintas(in 2.6 and later)assertexceptinraisebreakexecisreturnclassfinallylambdatrycontinueforwhilenonlocal(in 3.0)deffromnotwith(in 2.6 and later)delglobaloryieldPython常用数学函数math.abs(number)math.pow(x,y,z)math.sqrt(nuiTiber)float(object)math,fabs(number)math.ceil(number)math,floor

10、(number)math.exp(x)math.log(x,base)math.pow(x,y)math.sqrt(x)math.degrees(x)math.radians(x)math.sin(x)math.cos(x)math.tan(x)返回数字的绝对值,如abs(-lO)返回10返回x的y次累(所得结果对z取模),如pow(2,3)返回I 8,pow(2,3,3)返回2 返回数字的平方根,数字可以为负数,返回类型为实数,如cmath.sqrt(4)返回2+0i 将字符串和数字转换为浮点数,如fhat(4)返回4.0,float,-1)返回-1.0 返回数字的绝对值,如math.fab

11、s(-lO)返回10.0 返回数的上入整数,如math.ceil(4.1)返回5 返回数的下舍整数,如math.floor(4.9)返回4返回 e 的 x 次累,如 math.exp(l)返回 2.7回281828459045 如 math.log(math.e)返回 1.0,math.log(100,10)iE|Bl 2.0 返回x的y次幕,如math.pow(2,3)返回8.0返回x的平方根,不适用于负数,如math.sqrt(9)返回3.0 将弧度转换为角度,如math.degrees(math.tan(1.0),返回30.0 将角度转换为弧度返回正弦值,如math.sin(math.p

12、i/2)返回1.0返回余弦值,如math.cos(math.pi)返回-1.0返回正切值,如 math.degrees(math.tan(1.0),返回 30.0常量Math.eMath.pi返回对数中的e值,math.e返回I常量值2.718281828459045返回圆周率PI的值,math.pi返回常量值3.141592653589793Python程序调试加入断点:在需要插入断点的地方,加入红色部分代码:如果_DEBUG值为True,则在该处开始调试(加 入_DEBUG的原因是为了方便打开/关闭调试)。递归函数一个含直接或间接调用本函数语句的函数被称之为递归函数,它必须满足以下两个条件

13、:1)在每一次调用自己时,必须是(在某种意义上)更接近于解;2)必须有一个终止处理或计算的准则。优点是简化程序设计,使程序易读。缺点是运行效率低GUIpython界面编程Tkinter 15种控件简介1.Button按钮。类似标签,但提供额外的功能,例如鼠标掠过、按下、释放以及键盘操作/事件2.Canvas画布一。提供绘图功能(直线、椭圆、多边形、矩形);可以包含图形或位图3.Checkbutton选择按钮。一组方框,可以选择其中的任意个(类似HTML中的checkbox)4.Entry文本框。单行文字域,用来收集键盘输入(类似HTML中的text)5.Frame框架。包含其他组件的纯容器6.

14、Label标签。用来显示文字或图片7.Listbox列表框。一个选项列表,用户可以从中选择8.Menu菜单。点下菜单按钮后弹出的一个选项列表,用户可以从中选择9.Menubutton菜单按钮。用来包含菜单的组件(有下拉式、层叠式等等)lO.Message消息框。类似于标签,但可以显示多行文本11.Radiobutton单选按钮。一组按钮,其中只有一个可被按下(类似HTML中的radio)12.Scale进度条。线性“滑块”组件,可设定起始值和结束值,会显示当前位置的精确值13.Scrollbar滚动条。对其支持的组件(文本域、画布、列表框、文本框)提供滚动功能14.Text文本域。多行文字区域

15、,可用来收集(或显示)用户输入的文字(类似HTML中的textarea)15.Toplevel顶级。类似框架,但提供一个独立的窗口容器。Tkinter为您定义正确的事件提供了强大的通用方式。一般来说,事件队列是包含了一个或多个事件类型的字符串。每一个事件类型指定了一项事件,当有多项事件类型包含于事件队列中,当且仅当描述符中 全部事件发生时才调用处理函数。Python-Tkinter 事件处理事件类型的通用格式:(modifier-,type-detail事件类型必须放置于尖括号。内。type描述了通用类型,例如键盘按键、鼠标点击。modifier用于组合键定义,例如Control、Alt。de

16、tail用于明确定义是哪一个键或按钮的事件,例如1表示鼠标左键、2表示鼠标中键。同时按下了 Control Shift、A三键。举例:按下鼠标左键。按下键盘上的A键名称描述按下键盘某键时触发,可KeyPress以在detail部分指定是哪 个键。按下键盘某键时触发,可KeyRelease以在detail部分指定是哪 个键。名称描述ButtonPress按下鼠标某键,可以在detail部分指 定是哪个键.ButtonRe1 ease释放鼠标某键,可以在detail部分指 定是哪个键。Mot i on点中组件的同时托拽组件移动时触发。Enter当鼠标指针移进某组件时,该组件触 发。Leave当鼠标

17、指针移出某组件时,该组件触 发。字符串操作S.lower()#小写S.upper()#大写S.swapcase()#大小写互换S.capitalize()#首字母大写S.title。#只有首字母大写,其余为小写字符串中的搜索和替换:S.find(substr,start,end)#返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在Sstart:end中搜索S.count(substr,start,end)#计算 substr 在 S 中出现的次数S.replace(oldstr,newstr,count)#把S中的oldstar替换

18、为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换S.strip(chars)#把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为NoneS.split(sep,maxsplit)#以sep为分隔符,把S分成一个list0 maxsplit表示分割的次数。默认的分割符为空白字符S.decode(encoding,errors)字符串的测试函数,这一类函数在string模块中没有,这些函数返回的都是bool值:S.startwith(prefix,start,end)#是否以 prefix 开头S.endwith(suffix,sta

19、rt,end)#是否以 suffix 结尾S.isalnum()#是否全是字母和数字,并至少有一个字符S.isalpha()#是否全是字母,并至少有一个字符S.isdigit()#是否全是数字,并至少有一个字符S.isspace()#是否全是空白字符,并至少有一个字符S.islower()#S中的字母是否全是小写S.isupper()#S中的字母是否便是大写S.istitle()#S是否是首字母大写的列表操作listw#得到列表中的第w+1位的值del listO#删除列表的第一个值listjength=len(samplejist)#得到列表的长度Python列表高级操作/技巧numjncj

20、ist=range(30)#产生一个数值递增列表#will return a list 0,1,2,.,29附:python内置类型1、list:列表如:a=l,you,he,she#元素可为任何类型。下标:按下标读写,就当作数组处理以0开始,有负下标的使用。第一个元素,-1最后一个元素,-len第一个元素,len-1最后一个元素取list的元素数量len(list)#list的长度。实际该方法是调用了此对象的len_(self)方法。list的方法L.append(var)#追力口元素L.insert(index,vaij#在第 index 位追力口元素L.pop(var)#返回最后一个元素

21、,并从list中删除之L.remove(var)#删除第一次出现的该元素L.count(var)#该元素在列表中出现的个数L.index(var)#该元素的位置,无则抛异常L.extend(list)#追加 list,即合并 list 到 L 上L.sort()#排序,也可 sorted(L)L.reverse()#倒序1,2+3,4#为1,2,3,4。同 extend()2*4#为2,2,2,2del L1#删除指定下标的元素del L1:3#删除指定下标范围的元素字典操作字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函 数运

22、算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。diet=ob1/computer,ob2:mouse,ob3:printer)每一个元素是pair,包含key、value两部分。key是Integer或string类型,value是任意类型。键是唯一的,字典只认最后一个key的键值。dictionary 的方法D.has_key(key)#有该键返回 TRUE,否则 FALSED.keys()#返回字典键的列表D.values()#返回字典键的值的列表D.items()#返回字典键的列表和值的列表D.update(dict2)#增加合并字典D.pop

23、item()#得到一组pair,并从字典中删除它。已空则抛异常D.clear()#清空字典,同 del dietD.copy()#拷贝字典D.cmp(dict1,dict2)#比较字典,(优先级为元素个数、键大小、键值大小)#第一个大返回1,小返回-1,一样返回0元组操作tuple=(a,b,c,d,e)可以用list的口,:操作符提取元素。就是不能直接修改元素。元组的意义:1.元组可以在映射中当作键使用;2.元组作为很多内建函数和方法的返回值存在。集合操作python的set和其他语言类似,是一个无序不重复元素集,基本功能包括关系测试和消除重复元素.集合 对象还支持union(联合),int

24、ersection交),difference(差)和sysmmetric difference(对称差集)等数学运算.要检测某值是否是集合的成员,可使用in运算符。其工作原理和列表的一样。a.union(b)方法返回一个新集合,其中装着在两个集合中出现的元素。a.intersection(b)方法返回一个新集合,其中装着同时在两个集合中出现的所有元素。a.difference(b)方法返回的新集合中,装着所有在a_set出现但未在b_set中的元素。a.symmetric_difference(b)方法返回一个新集合,其中装着所有只在其中一个集合中出现的元素。正则表达式import res=r

25、aw_input().lower().split()#input a string for i in range(len(s):m=sim=re.sub(r,b(|aeiou|a-z|*)b rlhay,m)m=re.sub(r*b(?!qu)(A aeiou Aaeiouy *)(a-z*)b,r,2l ay m)m=re.sub(r)bqu(|a-z|*)brlquaym)s|i|=mprint H n.join(s)pattern=pile(rworld)match=pattern.search(hello world!)if match:print match.group()输出#wo

26、rldRandom的用法random.shufflerandom.shuffle的函数原型为:random.shuffle(x,random),用于将一个列表中的元素打乱。random.samplerandom.sample的函数原型为:random.sample(sequence,k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。random.randomrandom.random()用于生成一个0到1的随机符点数:0=n b,则生成的随机数n:a=n=b。如果a b,则b=n=a。random.randintrandom.randint。的函数原型为:random

27、.randint(a,b),用于生成一个指定范围内的整数。其中参数a 是下限,参数b是上限,生成的随机数n:a=n=brandom.randrangerandom.randrange 的函数原型为:random.randrange(start,stop,step),从指定范围内,按指定基数递 增的集合中 获取一个随机数。0:random.randrange(10,100,2),结果相当于从10,12,14,16,.96,98 序列中获取一个随机数。random.randrange(10,100,2)在结果上与 random.choice(range(10,100,2)等。random.choi

28、cerandom.choice从序列中获取一个随机元素。其函数原型为:random.choice(sequence)o参数sequence 表示一个有序类型。Django1创建项目项目:一个包含了组成单个网站的所有文件目录。使用django-admin.pydjango-admin.y startproject mysitesettings.py:包含了项目的默认设置。包括数据库信息,调试标志以及其他一些重要的变量。urls.py文件在Django里叫URLconf,它是一个将URL模式映射到你应用程序的配置文件。2运行开发服务器python manage.py runserver3创建Blo

29、g应用python manage.py startapp blog要告诉Django这个app是项目里的一部分,需要去编辑settings.py文件。打开配置文件并在文件里找到INSTALLED_APPS。把你的app以模块的形式添加到元祖:mysite.blog,(注意结尾的逗号)。Django用INSTALLED_APPS来决定系统里不同部分的配置,包括自动化的admin应用以及测试框架。4设计你的Modelfrom django.db import models#Create your models here.注意:Django会默认为每个model H动加上一个H增的、唯一的id变量。

30、这个新建的BlogPost类是django.db.models.Model的一个子类。每一个变量都和普通的类属性一样被定义为一个特定变量类(field class)的实例。5设置数据库使用数据库服务器python manage.py syncdb当你执行suncdb的时候,Django会查找INSTALLED_APPS里的每一个models.py文件,并为找到的每一个model都创建一张数据库表。INSTALLED_APPS里的其他默认条目也都拥有model0from Tkinter import*#Import tkinterclass AnimationDemo:def_init_(sel

31、f):window=Tk()#Create a windowwindow.title(Animation Demo)#Set a titlecanvas=Canvas(window,bg=white,width=250,height=50)canvas.pack()x=0#Starting x positioncanvas.create_text(x,30,text=Message moving?,tags=text)dx=3while True:canvas.move(text,dx,0)#Move text dx unit canvas.after(lOO)#Sleep for 100 m

32、illiseconds canvas.update()#Update canvas if x width:x+=dx#Get the current position for string else:x=0#Reset string position to the beginning canvas.delete(text)#Redraw text at the beginningcanvas.create_text(x,30,text=Message moving?,tags=text)window.mainloop()AnimationDcmo()#Create GUI移动文字from tk

33、inter import*#Import tkinterclass MouseKeyEventDemo:def_init_(self):鼠标键盘事件window=Tk()#Create a windowwindow.title(Event Demo)#Set a titlecanvas=Canvas(window,bg=white,width=200,height=100)canvas.pack()canvas.bind(,self.processMouseEvent)#Bind with event canvas.bind(,self.processKeyEvent)canvas.fbcus

34、_set()window.mainloop()#Create an event loopdef processMouseEvent(self,event):print(clicked at,event.x,event.y)print(Position in the screen,event.x_root,event.y_root)print(Which button is clicked?,event.num)def processKeyEvent(self,event):print(keysym?,event.keysym)print(char?,event.char)print(keyco

35、de?,event.keycode)MouseKeyEventDemo()#Create GUIdef bi_search(lst,rand):beg=0end=len(lst)-1二分查找while beg rand:end=mid-1elif lstmidO=rand:return lstmidlelse:beg=mid+1 return lstmidl def swap(lst,a,b):tmp=lsta交换两个lsta=lstb lstb=tmp词的位置def selectionsort(lst):for i in range(len(lst)-1):ininidx=ifbr j in

36、 range(i+1,len(lst):if lstj lsti+1:swap(lst,i,i+1)is_changed=True end-=1students=Zhang,84,Wang,77,Li,100,Zhao,53students.sort(key=lambda x:xl,reverse=True)print students系统内置排序方式xx.sort()或sorted()import csvimport ref=open(periodictable.cs v)reader=csv.reader(f)element_weight=for row in reader:if row0

37、.isdigit():element_weightrow2 compond=raw_input(Input:)elements=compond.split(-)s=0计算质量分数for element in elements:pattern=(A-Za-z*)(d*)result=re.match(pattern,element)if result:c=rcsult.group(l)n=result.group(2)if n=n=1=float(row3)else:n=int(n)s+=element_weighte*n print s中文按词划分def fmm(sentence,die,ma

38、x_len):sentence=unicode(sentence,utf-8)beg=0 words=while beg max len:maxlen=len(word)return die,max_len die,max len=load_dic()sentence=raw_input(Input:)words=frnm(sentence,die,max len)print/.join(words)Python常见错误1)忘记在 if,elif,else,for,while,class,def 声明末尾添加:(导致 HSyntaxError:invalid syntax)2)使用=而不是=(

39、导致SyntaxError:invalid syntax)=是赋值操作符而=是等于比军姆作。3)错误的使用缩进量。(导致IndentationError:unexpected indent.IndentationError:unindent does not match any outer indetation level 以及 IndentationError:expected an indented block)4)在 for 循环语句中忘记调用 len()(导致TypeError:list object cannot be interpreted as an integer)5)尝试修改

40、 string 的值(导致TypeError:str object does not support item assignment)6)尝试连接非字符串值与字符串(导致TypeError:Cant convert int object to str implicitly)7)在字符串首尾忘记加引号(导致 HSyntaxError:EOL while scanning string literal)8)变量或者函数名拼写错误(导致NameError:name fooba is not defined)9)方法名拼写错误(导致AttributeError:str object has no at

41、tribute lowerr)10)弓|用超过 list 最大索引(导致 IndexError:list index out of range)11)使用不存在的字典键值(导致KeyError:spam)12)尝试使用Python关键字作为变量名(导致SyntaxError:invalid syntax)13)在一个定义新变量中使用增值操作符(导致NameError:name foobar is not defined)14)在定义局部变量前在函数中使用局部变量(此时有与局部变量同名的全局变量存在)(导致 UnboundLocalError:local variable foobar referenced before assignment)15)尝试range。创建整数歹 1表(导致TypeError:range object does not support item assignment)16)忘记为方法的第一个参数添加 self 参数(导致TypeError:myMethodQ takes no arguments(1 given)

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服