ChinesePythonTutor.docx
- 文档编号:30478865
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:18
- 大小:26.06KB
ChinesePythonTutor.docx
《ChinesePythonTutor.docx》由会员分享,可在线阅读,更多相关《ChinesePythonTutor.docx(18页珍藏版)》请在冰豆网上搜索。
ChinesePythonTutor
快速Python语言入门教学,课程,课件,教材,自学,概念
为非程序员准备的简洁Python语言教材,欢迎提问,欢迎转帖。
Python的中文意思是巨蟒,大蟒蛇。
∙快速Python语言入门教学,课程,课件,教材,自学,概念
o计算机编程主要概念
▪基本编程
▪定义函数
▪循环(loop)
oPython数据概念
▪列表(list)
▪元组(tuple)
▪字典(dict)
▪集合(set)
▪模块(module)
▪类(class)
▪字符串的对象性质
oPython程序员编程习惯
▪完整例子
o参考资料
▪基础资料
▪中文编码
▪网络编程
▪图形界面
▪Python小例子
▪深入学习
计算机编程主要概念
首先,要明确一点,那就是,编程是不需要任何数理化知识的,最多最多只需要会数数,1,2,3,4,5的往上数。
只有在编程解决数学问题的时候,才会用到数学知识。
一般情况下,网络应用,文件处理、分割,数据提取,报表通知这些应用的编程,根本不需要任何数学知识。
计算机语言编程的主要内容就这些:
数字,文字,重复,公式,变量
∙数字:
1,2,3,5.6,120,32.4,3.1415926,-3,-0.123,反正是个数都算。
∙文字:
您好,我好,你太牛了,很黄很暴力,这类的文字。
一般用双引号(")或者单引号(')括起来。
术语叫字符串,就是一堆字符,串起来。
∙重复:
重复的做一件事对于计算机来说叫做循环(loop)。
计算机是一个很笨的机器,基本上只会做加,减,乘,除,大于,小于,等于和循环这些简单的工作。
编程就是把复杂的问题,拆成简单的单元让他重复。
循环具体来说,就是先设定一个条件,当条件符合的时候,重复执行一系列操作。
直到设定的条件不再符合了,就可以结束循环了。
幸亏有下面讲到的公式,所以很多较复杂的问题已经有了解决方法,我们只是重复的套用别人做好的解决公式就可以了,不用拆得太细。
Python语言最大的优势,就是这个语言中包含了大量解决常见问题的公式,您想干的事,基本上都有人帮您干了,您只是需要把他们组织,捆绑起来就可以了。
比如下载文件的公式,分析网页内容的公式,压缩文件的公式,处理电子邮件的公式等等。
∙公式:
公式更专业的叫法是函数(function)。
函这个字本身有盒子的意思。
当初翻译成函数的意思大概是强调它本身像一个神奇的盒子,往里面输入几个数字,就神奇的蹦出来一个结果。
写做f(x,y)=g。
这个f就是所谓函数盒子,g就是结果,往f里塞入x,y两个数字,就跑出来g这个结果。
至于具体怎么得到结果的,就是我们公式的具体内容了。
x,y这些输入的信息,叫做参数。
打个比方,就像买火车票,售票口就是个函数,果然是个神奇的盒子,所以跟大爷似的。
告诉它:
2人,2月18日,去武汉,这些输入信息,它就吐出两张2月18号去武汉的车票了。
当然函数比售票口完美的地方是,正常函数它不收您钱。
使用的时候就直接调用f(x,y),譬如买票f(2,2.18,武汉),那么就得到结果:
两张票。
可以看到,因为编程用的函数不是数学函数,只是概念相同,所以输入的内容不限于数字,也可以是文字或者其他的东西。
至于售票口后面的售票员或者售票机,是怎么计算里程,怎么查找当天剩票数量,这些工作,就是函数的具体内容,盒子里的秘密。
我们买票的不关心,不解释!
当然铁路局的人需要把这些内容填进去,这个工作就是写函数内容。
在编程的时候,使用的公式不是数学公式,所有没有什么数学推导,推论之类的玩意儿。
更类似于建设售票口里面的出票流程。
只是把我们想做的操作,捆成一堆,以便我们可以在不同的地方重复使用这些操作,这就是编程的公式了。
这样就不用每次干同样的事的时候,进行重复的细节工作。
再比如说洗衣服吧,泡衣服,打肥皂,搓衣服,用清水投三遍,拧干,再晾起来。
这些每次洗衣服都要重复的事情,全被洗衣机变成一件事了,只要每次放进不同的衣服,再放进重量不同的洗衣粉,一按“开始”键,就可以让他去洗了。
完了打开盖,洗好了:
返回干净的衣服了。
这洗衣机就是我们的公式,洗的过程就是我们捆绑进去的各种每次洗衣服都要重复的操作,这是公式内容,洗衣机厂帮我们弄好了。
而每次放进去的不同量的衣服,不同重量的洗衣粉,就是套公式用的参数了,就是上面例子里的x啊,y啊的东西。
为了让程序的结构清晰,我们往往会定义很多函数。
把复杂的问题分成很多小的,简单的问题。
每个小问题放到一个单独的函数里,然后在解决复杂问题的函数里,使用这些小的问题函数解决大问题。
更重要的是我们可以大量的使用别人写好的函数来解决自己的问题,也就是买洗衣机而不是自己造洗衣机。
几个小公式可以组合成大公式,做更复杂的工作。
例如您要是工作,学习忙,没时间干家务,或者纯粹就是个懒字,那么就请回来一位家务助理。
得,家务助理用洗衣机,吸尘器,微波炉等等公式,再加上他自己对这些公式的进一步操作,组合,循环,把这些小公式捆绑起来,就成为一个大公式了。
您每次交了钱,回家一看,卫生就打扫了,饭也做好了。
这家务助理做的工作,对于您来说,也就是一个更复杂的公式了,每次打电话预约,交钱就可以套用完成家务的公式了。
函数的作用是让程序结构清晰,而且可以在不同的地方重复套用。
∙变量:
就是上面的a,b这种可以代表任何值,可以放进不定值的单词,变量,变量,他代表的量可能会改变。
我们用变量来存储我们程序中用到的各种数字,文字,公式。
所谓参数,就是定义公式时用到的变量,就叫参数,换个马甲而已。
换成术语,我们有:
数字(number)
=>
数字
字符串(string)
=>
文字
循环(loop)
=>
重复
函数/方法(function/method)
=>
公式
变量(variable)
=>
变量
到这里,基本上编程就没什么可学得了。
剩下的就是掌握各种不同编程语言特定的函数和循环的书写格式,再掌握了别人已经写好的函数的用法,组合起来就得了。
基本编程
最基本的Python程序:
print("世界,您好!
")
存到文件hello.py里,然后命令行下输入pythonhello.py就可以看到结果了。
这里就用到了函数和字符串,在屏幕上输出一行:
世界,您好!
Python里函数的用法是:
函数名(参数1,参数2)
这里print是函数;在屏幕上打印内容,"世界,您好!
"是参数,套print这个公式用的。
学会怎么用函数了,再学会定义函数的格式,就差不多了。
Python里注释符号是"#"。
就是说,在#符号后的那一行文字,都当做解释,不做为程序的命令。
print("打酱油!
")#print("关我屁事")
只打印出“打酱油”,剩下的,因为是在#后面,所以程序把他们当做注释语言自动忽略了。
定义函数
defa_b_pingfang(a,b):
c=a**2+2*a*b+b**2
returnc
我们定义一个(a+b)2的函数,def是英语define的缩写,意思是定义函数,定义公式。
第1行就是说我们要定义一个函数名叫a_b_pingfang的函数,用他的时候,需要两个参数a和b。
尾巴上有个冒号,冒号的意思是说:
“下面的一段话就是公式定义了,要注意了”。
计算机编程里,*代表乘法,/代表除法,**代表乘方,b**2就是b的二次方。
注意:
Python是用缩进空格来表示段落的,冒号(:
)来表示段落开始。
第2行先缩进4个空格,说明下面缩进4格的,都是同一段落,用来具体计算上面定义的公式的。
把a2+2*a*b+b2的计算结果,放到c里。
c类似于a,b,都是表示一个变量,他可以用来存放数字,文字,甚至函数。
这里他存放的是用a,b计算后得到的结果。
因为不是在函数名里,所以术语叫做“变量”,用在函数名里,就叫参数了。
“变量”就是用一个单词来代表一个可以变化的量的。
单词里可以有字母,数字和下加线(_),数字不能打头。
第3行,把函数执行的结果,告诉使用者。
这里把存在c里的结果,传回给函数的使用者。
return命令的意思,就是立即结束函数的执行,把return后面的值传给调用者,可以传回多个值。
return不是必需的,函数执行到最后一行,如果没有return,会自动结束。
如果前面有return,则提前结束。
现在可以使用这个公式了,我们把套公式叫调用函数:
ping2=a_b_pingfang(2,3)
ping2里存放了a_b_pingfang(2,3)得到的结果,也就是上面returnc这句,把c的内容,传给了外面的ping2。
把结果打印出来:
print(ping2)
全部程序就是:
defa_b_pingfang(a,b):
c=a**2+2*a*b+b**2
returnc
ping2=a_b_pingfang(2,3)
print(ping2)
存到test2.py,跑pythontest2.py就可以看到输出25。
循环(loop)
当然还有循环,怎么让程序重复的做事?
我们有while(当...),for(对于...)命令来进行循环控制。
a=0
whilea<100:
a=a+1
print(a)
这个循环说,当a<100的时候,把a增加1,再把他打印出来,然后重复。
当a等于100了,条件不符合了,就结束了。
我们有<,>,==,<=,>=,!
=来判断大于,小于,等于,小于等于,大于等于,不等于。
还有and(并且),or(或者),not(不是)来进行逻辑运算,所谓逻辑运算,就是测试多个不同判断之间的关系的:
(a==1)and(b!
=2)来测试这两个判断是否同时成立:
a等于1并且b不等于2。
(a==1)or(b!
=2)来测试这两个判断里是否有至少一个成立:
a等于1或者b不等于2。
nota==1来测试这个判断是否是错的。
错的就是对的,对的就是错的,颠倒黑白:
不是a等于1,那就是a不等于1了,好像有点脱裤子放屁。
其实在别的更复杂的判断组合里更有用些。
我们还有break(中断)来打断循环,和continue(继续)来立刻回到循环开始,也可以用if(如果)命令来进行判断:
a=0
whileTrue:
a=a+1
ifa>=100:
break
print(a)
这里True(正确)表示永远正确,相对的是False(错误)表示永远错误。
这一段是说一直执行,因为while的条件总是正确,就是说“当符合总是正确的条件的时候,不断重复”,当然是永远正确,永远重复了。
下面在if处判断如果a大于等于100,如果是,那么执行if下的段落,这里我们打断了循环。
如果条件不符,就跳过if下面的小段落,该干嘛干嘛,具体到这里就是打印a然后继续执行循环。
for循环是利用下面介绍的的列表数据结构对列表进行循环。
Python数据概念
下面具体说到Python特异功能,他有几个特殊的存储数据的格式。
∙列表:
list
∙元组:
tuple
∙字典:
dict(dictionary)
∙集合:
set
列表(list)
列表:
把很多变量存进一个列表里,叫列的意思,就因为他像列车一样,一节一节车厢,每厢放一个变量。
格式为[a,b,c,1,3,5,'葡萄','葡萄皮儿'],可以看到,方括号里,可以放具体的数字,文字,也可以放变量,用逗号分隔。
这些内容是在固定位置上,可以通过他们的位置,来提取:
alist=[1,3,5,'很傻','葡萄','葡萄皮儿',a,var1]
print(alist[0])#打印1
print(alist[3])#打印"很傻"
在Python里,次序是从0开始数的,开始是0,然后是1,2,3,4,5,所以上面的列表alist的第一个内容,可以用alist[0]来提取,第二个用alist[1]来提取。
就像年龄一样,一生下来是零岁,一年以后才是一岁,不是中国传统那样,生下来就一岁,那是虚岁。
蟒蛇语言他只认准确的东西,不玩儿虚的。
print(alist[4])#打印'葡萄'
这里,我们可以介绍用for循环来访问这个列表里的所有内容:
formeinalist:
print(me)
上面这一段,打印所有alist里的内容。
这个循环是,对于列表alist,从0位置开始,访问他的每一个位置,把这个位置上的值,放到me里,然后针对不同的me值,重复执行下面段落的内容。
in表示me在alist里,也可以用来判断:
if"葡萄"inalist:
print("葡萄在alist里!
")
列表的内容是可以改变的,我们可以把第4个位置设为"很天真":
alist[3]=alist[3]+'很天真'
print(alist[3])#打印'很傻很天真'
下面说道的元组的内容就不能改变了。
元组(tuple)
元组:
元组就是列表,但是他的内容是不能改变的,用圆括号()来表示。
他的内容只能一开始就设定。
但是,元组和列表之间是可以用函数互相转变的,转成列表就可以改变内容,转回元组就不能改了。
元组是用圆括号来表示,所以叫元组嘛。
atuple=(2,3,"老子")
alist=list(atuple)#变成[2,3,"老子"]
alist[0]=0
tuple2=tuple(alist)#变回(0,3,"老子")
在Python里,字符串也是一种特殊的元组,也就是内容不可变的字符列表。
txt='abcdefg'
print(txt[1])#打印b
字典(dict)
字典:
字典就像一般的字典,一个字,一个解释,再一个字,再一个解释。
用大括号表示:
adict={1:
"我是解释",
2:
"我是解释2",
"我是3":
3,
"我是4":
4
}
前面的字叫钥匙(key)或者索引,后面的解释,叫"值"。
索引不能重复,必须是唯一的。
我们可以看到,前面的字,和后面的解释可以是数字,文字,还可以是函数或者元组。
但是前面的字,不能是列表,因为列表内容是可变的,可变的东西都不能做索引。
我们用索引来提取,设定或者增加值,而不是用位置:
adict[1]#"我是解释"
adict["我是3"]#3
adict[1]=2#设定新的值
adict["新索引"]="没头脑和不高兴"#增加一个新索引和值
集合(set)
集合:
集合就是数学上用的集合,把一堆东西放到一起,类似列表,不同的地方是内容不重复,而且也没有次序。
aset=set([1,2,3,2,4,6])#去掉重复内容,所以是1,2,3,4,6
可以看出,建立一个集合的方式,是使用set()函数,函数的参数可以是列表,或者元祖,反正是一串儿的都可以。
集合的用处是利用他内容不可重复的特性,来去掉重复的内容。
至于其他的合集,交集也是这个特性的延伸。
集合也是可以变成列表的,利用list()函数。
alist=list(aset)#内容[1,2,3,4,6]
模块(module)
Python里包涵了很多别人写好的函数、方法让我们直接利用。
譬如写网络程序的函数,数学计算的函数,分析电邮文件的函数,加密的函数。
我们要做的就是套公式!
这些函数分门别类的放到叫“模块”的东西里。
一个模块里,包括很多功能相类的函数。
而具体实现上,一个模块,就是一个Python的程序文件。
如果模块还需要细分更多层,那么每层就是一个文件目录。
里面有很多做为模块的Python文件。
要使用模块,我们用“进口”这个命令:
import
importtime
now=time.clock()
print(now)
这里,我们先进口time模块,然后使用time模块里的函数clock(),得到当前时间,打印出来。
用个英文句点表示模块time里的clock函数:
模块名.函数名
在Python里,我们会用到很多别人写的模块,能自己少写点儿源码,尽量少写,懒不是?
类(class)
其实编程来说,类并不是必须的,但是因为很多Python提供的模块,里面的函数都是包在类里面的,所以我们需要介绍一下类。
面向对象编程,是现在比较流行的编程方式,是个人都得用“面像对象”的思路来编程,来显得自己跟得上形式。
其实面对对象并不是必须的,光棍并不可耻。
类就是种类的意思。
基本上面对对象就是把同类的函数,变量打包放到一个包袱里,这个包袱就叫“类”。
挺土气是吧?
其实面对对象也并不就一定时髦,也可以俗不可耐,就看您包袱打的怎么样了。
这个“类”一般上是以具体的东西为模板,譬如物种:
人类,猫类;物品:
家俱类,电器类。
他里面打包的函数,基本上是针对这个类进行操作的,譬如人说话,人吃饭,人的鼻子人的嘴,猫逮耗子,家居磨损。
使用类的时候,我们先具体化他,把种类变成个体。
人类变成某人,猫类变成某猫,家俱变成某件家俱。
这个具体化的类,就是所谓的“对象(object)”。
然后我们就可以使用这个具体人,猫,家居的函数,针对具体的人,物进行操作了,所谓操作对象。
定义类
classRenLei:
def__init__(self,mingzi):
#self是一个固定参数名,代表这个对象自己。
self.mingzi=mingzi#把名字存到对象自己的mingzi变量上。
self.xingbie="nv3"#性别,预设为女
defshui2(self):
#谁函数,提取姓名
returnself.mingzi
defgai3ming2(self,xin_mingzi):
#改名函数
self.mingzi=xin_mingzi
上面的例子,一开始就要求给这个对象一个名字。
∙目的:
我们在程序中定义类的目的,主要就是定义一些针对这个类本身的变量(如上例:
mingzi,xingbie)进行操作的函数。
把这些变量和相应的操作函数捆绑到一起,形成一个有机的整体,便于进行复杂的操作;而且有了分类,程序结构也更加清晰一点。
∙self:
在类的定义里,每一个函数,他的第一个参数,都是规定死的,必须是self。
self代表这个对象自己。
在对象内部,这个对像本身的变量,函数,都是通过这个self来存取的。
因为我们建立类的目的,是对类内部变量进行操作,所以这个代表对象本身的变量self,在我们类的函数中,就很重要了。
在使用类里的函数时,不用提供self这个参数,程序自动提供self,让我们使用他的内部函数,变量。
我们只要提供其他参数即可。
∙__init__():
这个类函数是一个特殊的函数,他代表从类具体化到对象的时候,需要套用的公式。
通过类建立对象的时候,程序会自动调用__init__()函数。
所以他叫做初始化函数。
建立对象的时候,有什么一开始的要求,都可以通过他来指定,比如要求“脚不大好头发没有麻子”。
当然如果没有初始要求,也可以不定义这个函数,那么程序就不会自动调用他了。
∙属性:
而类本身的变量,有个专用名词叫类的属性。
这些属性可以让我们保留类的一些状态值,并且通过类函数来提取或者改变这些状态。
例如:
除了人的名字,性别外,还可以保留一个吃饱的状态,吃饭函数可以顺手把这个状态设定成“吃撑了”,过了半个小时,可以通过别的函数把这个状态又改成饥饿状态了(消化能力是强了点儿)。
定义类的属性的方法,一般是在__init__这个类函数里,使用
self.属性名=初始值
的方式来定义的。
如果没有初始值,Python有一个特殊的None符号,来代表没有值,所有没有值的地方都可以用他。
∙类函数:
而类函数的定义,是直接在类里面,缩进四个空格,像一般函数定义就可以了。
只是别忘了第一个参数,一定要是self。
具体化类,建立对象
具体化类,也可以说是建立对象。
就像按照一个商品目录买回来一件具体的商品,跟上淘宝网一样。
他的格式是,直接把类的名称当作一个函数来使用,也就是后面加括号()和参数。
这个函数对应的参数,则是这个类的__init__() 函数所要求的参数。
如果没有__init__()函数,则不需要给参数。
使用类为函数后,会自动返回一个变量,这个变量就是我们的对象了。
所以我们建立一个具体的人的对象,那么就把人类这个类当函数来呼叫:
RenLei("如花"),他会自动返回一个名字叫如花的人的对象。
#建立对象,提供的参数对应__init__()函数,self这个参数程序会自动提供,不用我们提供。
xiaozhang1=RenLei("小张")#建立一个叫小张的人
mingzi=xiaozhang1.shui2()#使用“对象名.函数名()”的格式来调用类里的函数。
print(mingzi)#打印"小张"
字符串的对象性质
Python里的字符串,列表,元组,字典,他们本身都是面对对象的类,所以带有很多函数可以对自己进行操作,譬如:
a="脚不大好头发没有麻子".split()
split是字符串这个类的函数,他可以把字符串在给定位置分割,当我们不给他参数的时候,会在所有空白位置分割,然后返回一个列表,里面是被割裂的字符串。
结果,a的内容是["脚不大好","头发没有","麻子"],这是一个有3个元素的列表。
对于字符串,列表,字典之类的操作,请熟读说明手册对他们的说明,Python编程,主要就靠字符串,列表和字典了。
Python程序员编程习惯
重中之重:
大量的使用list这个列表方式来存储、操作数据。
一字长蛇阵是蟒蛇的绝招,多用没错。
写一个Python程序,我们一般的步骤是:
1.进口所有会用到到模块import
2.定义我们自己的类和函数。
对于每个函数里要用到的函数,被调用的函数一般放在调用函数的前面定义。
这样我们读程序的时候,如果从上到下,就知道调用的函数,在前面是怎么定义的,有什么功能,需要什么参数,返回什么值。
3.在文件的最下面,调用上面定义的函数和类,开始工作。
4.命令行的选项是通过sys.argv这个列表得到的。
5.尽量使用Python提供的内建函数和模块里的函数,所以我们对Python的模块说明手册要很熟悉。
6.程序的清晰比简洁重要,多写注释,表明自己下面要做什么。
越清晰的程序越容易修改。
否则十天半个月后您想
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ChinesePythonTutor