Python完全新手教程.docx

上传人:b****8 文档编号:23579272 上传时间:2023-05-18 格式:DOCX 页数:25 大小:31.92KB
下载 相关 举报
Python完全新手教程.docx_第1页
第1页 / 共25页
Python完全新手教程.docx_第2页
第2页 / 共25页
Python完全新手教程.docx_第3页
第3页 / 共25页
Python完全新手教程.docx_第4页
第4页 / 共25页
Python完全新手教程.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

Python完全新手教程.docx

《Python完全新手教程.docx》由会员分享,可在线阅读,更多相关《Python完全新手教程.docx(25页珍藏版)》请在冰豆网上搜索。

Python完全新手教程.docx

Python完全新手教程

Lesson1准备好学习Python的环境

下载的地址是:

www.python.org

linux版本的我就不说了,因为如果你能够使用linux并安装好说明你可以一切自己搞定的。

运行环境可以是linux或者是windows:

1、linux

redhat的linux安装上去之后一定会有python的(必须的组件),在命令行中输入python回车。

这样就可以进入一个

>>>的提示符

2、windows

安装好了python之后,在开始菜单里面找到Python2.3->IDLE,运行也会进入一个有

>>>提示符的窗口

开始尝试Python

1、输入:

welcome="Hello!

"

回车

然后又回到了>>>

2、输入:

printwelcome

回车

然后就可以看到你自己输入的问候了。

Lesson2搞定环境之后的前行

Python有一个交互式的命令行,大家已经看到了吧。

所以可以比较方便的学习和尝试,不用“新建-存档-编译-调试”,非常适合快速的尝试。

一开始从变量开始(其实说变量,更准确的是对象,Python中什么都可以理解为对象)。

变量

welcome="hello!

"

welcome就是变量名,字符串就是变量的类型,hello!

就是变量的内容,""表示这个变量是字符串,""中间的是字符串的内容。

熟悉其他语言的人,特别是编译类型的语言,觉得没有变量的声明很奇怪。

在python中用赋值来表示我要这么一个变量,即使你不知道要放什么内容,只是要先弄一个地方来放你的东西,也要这么写:

store=""

不过这个还是说明了store是字符串,因为""的缘故。

haveatry

  代码:

 

tmp_storage=""

welcome="hello!

"

tmp_storage=welcome

printtmp_storage

你会发现同样的问候出现了。

字符串

字符串是用""标记的,但是用''也可以(不要说你看不出一个是双引号,一个是单引号),两者之间是有一丁点区别,不过你可以不用理会。

其实是差不多的。

字符串有很多自己的操作,最常用的是这样的:

  代码:

 

welcome="hello"

you="world!

"

printwelcome+you

运行之后就会发现她输出了helloworld!

更多变量

变量还有几种类型。

字符串

列表

字典

文件

勿庸置疑,这些都是非常非常常用的。

对于数字就不用讲了那就是:

  代码:

  

radius=10

pi=3.14

area=pi*radius**2

print"theareais",area

下次讲列表和字典

Lesson3Python中的数学结构

数学中你学什么东西最多遍?

我想根据我的一点浅薄经验(虽然我是数学系的),学得最多的是集合,无论什么数学书都从集合开始讲起。

然后讲函数呢,又必然把映射再讲一遍。

可以说,集合和映射是数学中最基本的结构了。

Python对于数据结构非常明智的内置了两个,回想我写C的程序,往往是一开始就是用struct拼一个链表出来(重复劳动)。

Python中提供了列表(list)和字典(dict)两种数据结构。

他们分别对应的原型是集合和映射。

这个你应该明白了,只是表示方法有一点不一样而已。

列表

列表的英文名是list嘛,所以我取一个名字叫

  代码:

 

my_list=[]

这个就产生了一个空的列表。

然后给它赋值

my_list=[1,2]

printmy_list

my_list.append(3)

printmy_list

非常容易明白的。

append前面加了一个点,这个表示append是my_list方法。

我实在不想又去给你解释什么是对象,什么是成员方法,然后扯出一大段出来。

list是可以索引的:

printmy_list[1]

不过你或许会不明白为什么是2,而不是显示的是1。

因为索引从0开始,要输出第一个元素:

printmy_list[0]

字典

  代码:

 

contact={}

这个产生了一个空字典,contact。

然后往里面填充内容:

  代码:

 

contact={}

contact["name"]="taowen"

contact["phone"]=68942443

name就是你查字典的时候要查找的单词,taowen就是查到的内容。

不过你现在不是查,而是在写这个字典。

同理添加了phone这个词条。

现在添加好了,看看contact的内容,怎么查看?

自己想办法吧。

如果你悟性够,就会发现python很多操作是通用的,既然能够print1,print"",printmy_list,那么其他数据类型的变量就没有理由不能用了。

结合列表和字典

  代码:

 

contact_list=[]

contact1={}

contact1['name']='taowen'

contact1['phone']=68942443

contact_list.append(contact1)

contact2={}

contact2['name']='god'

contact2['phone']=44448888

contact_list.append(contact2)

呵呵,够复杂的吧。

你可以想出我为什么要用两个contact字典呢?

Lesson4用不同的方式来操作Python

到现在为止,我们用的都是交互式的命令行来操作的,的却是很方便,是吧?

不过,复杂一些的情况就不那么好使了,来换一种方式来操作Python

在IDLE中点击File->NewWindow,出现一个新窗口(对于linux下,你要用vim或者emacs或者pico把文本的源文件写好了)。

为了方便,先点击File->Save,填入my_try.py。

这样能够让编辑器知道在编辑python的源文件,会把你输入的代码进行一点上色的处理。

填入下面的代码:

  代码:

i=5

n=0

whilei>0:

  n=n+i

  i=i-1

printn

你会发现输入:

之后,自动会给缩进。

而且也没有在python中发现和C/C++中类似的{}标记也没有pascal中的beginend;,其实缩进就是python中表示一段代码的从属关系的标记方法。

表示n=n+1和i=i-1这两句都是while的。

程序的运行逻辑应该不用解释了吧。

就是运行5+4+3+2+1的结果。

运行代码

按F5,可能提示你没有存盘,照着办就是了。

发挥你的能力,计算从1到10的所有偶数的和(提示,可能没有你想象的那么智能)。

Lesson5Python中的输入与判断

健全的程序大凡都需要输入的功能,所以要学习一下简单的输入:

输入要使用的是raw_input或者input函数,区别是raw_input直接把你的输入作为字符串返回,而input则在raw_input的基础上把字符串转换为数字返回(如果你输入$@#$$怎么办?

自己试试看)。

我们就利用这两个输入函数来作一些有趣的事情。

  代码:

 

your_name=raw_input("pleaseinputyourname:

")

hint="welcome!

%s"%your_name

printhint

不简单吧,还有%呢。

%s表示在这个位置插入一个字符串,%表示把后面提供的参数“推”入前面的字符串中,所以推的结果是把%s推出去了,把your_name给填入那个地方了。

printf知道吧,C中的printf就是一样的嘛。

  代码:

  

inputed_num=0

while1:

  inputed_num=input("inputanumberbetween1and10\n")

  ifinputed_num>=10:

      pass

  elifinputed_num<1:

      pass

  else:

      break

print"hehe,don'tfollow,won'tout"

pass就是pass了,过了嘛,什么都不干了。

break就是跳出这个while1(无穷循环,1总是真的,while总是执行)。

\n是换行,不会全部忘光了吧。

Lesson6Python余兴节目

代码:

  

fromTkinterimport*

root=Tk()

w=Label(root,text="Hello,world!

")

w.pack()

root.mainloop()

呵呵,一次太超前了一点,不过也不是解释不清楚。

我干脆也不解释了吧。

给大家增进一点兴趣。

---------

还是解释一下

fromtTkinterimport*

是引入一个模块,这个模块用来创建GUI(GraphicUserInterface)窗口

Tk()创建了一个主窗口

Label()创建一个标签

Label的第一个参数是root表明Label是在这个主窗口中的。

w.pack()是指用缺省的方式把Label放置在主窗口中

root.mainloop()开始了一个循环,是等待你的输入的循环。

Lesson7Python基本语法要素齐动员

现在的目的是尽量想出一个用的东西仅限于内置的变量类型和语句的一个综合的例子,我想还是那个联系人表的例子吧

  代码:

################

#呵呵,还忘记了讲注释

#第一个算是完整的程序

################

contact={}

contact_list=[]

while1:

  contact['name']=raw_input("pleaseinputname:

")

  contact['phone']=raw_input("pleaseinputphonenumber:

")

  contact_list.append(contact.copy())

  go_on=raw_input("continue?

\n")

  ifgo_on=="yes":

      pass

  elifgo_on=="no":

      break

  else:

      print"youdidn'tsayno\n"

i=1

forcontactincontact_list:

  print"%d:

name=%s"%(i,contact['name'])

  print"%d:

phone=%s"%(i,contact['phone'])

  i=i+1

首先是回忆一下字符串

字符串既能够用""也能够用''。

然后是很有特色的%操作,起到格式化字符串的作用,前面仅仅在字符串中有一个%s,现在有%d和%s两个,分别代表插入十进制数值和字符串于%x标记的位置处。

然后是列表

列表是顺序的序列,用append在后面附加,也能构用索引值索引。

所以我们完全可以用一个变量保存len(contact_list)得到的长度,然后一个个的遍历,不过这里展示了另外一种非常方便的方法。

而且值得注意的是append()中的参数,我使用了contact.copy(),你可以尝试着把copy()给去掉,观察结果你就知道了所谓的append是怎么干的了,特别是你对指针之类的东西很有感觉的话(但是在Python中是没有指针这个概念的)

再来看看字典

字典是键(key)和值(value)的对应组合成的无序的序列。

所以你存的时候要指明键(name或者phone),而且取的时候也是一样的。

接下来是判断

if是很好用的,==表示判断两个是否相等,=表示把右边的赋给左边的。

而且可以直接判断字符串是否相等,这个太方便了,如果你曾经用过strcpy()的话,就知道了。

elif是表示elseif的意思,如果if不满足就判断elif的条件是否满足,最后是到else中去。

循环是个主体

while和for都是循环。

不过这里while就没什么说的了,又是很经典的while1,死循环,然后必须在里面用break来跳出。

for和C中的for是不一样的,forin才是一个完整的语句,指的是从一个能够逐一取值的序列中(比如list),一个一个的取出值赋给for后面指定的变量中,直到取空,循环结束。

其实回想一般用C中的for的经历,也大体如此。

而且你还可以用foriinrange(1,100)来指定一个范围从多少到多少。

可以说forin充分体现了python的体贴周到,用起来很直观,不会绕弯。

接下来就是运行了,大家慢慢调试吧。

下次可能是讲异常处理,因为我觉得在深入到使用各种高级的要素之前,先要学会怎么去处理异常。

最常见的异常应该是input(),然后你给出的输入是一个无法转换为数字的字符串了,那么我们就要来处理它。

Lesson8Python中的错误检测

写程序什么最重要?

完成功能最重要。

但是程序中难免要有用户的输入,对于这些写的时候未可预知的因素中间可能出现的错误,一般称作异常。

对于异常情况的处理,不同语言有不同的做法,比如检查函数的返回值之类的,但是那种办法会把代码弄成一团浆糊。

Python在这个方面是比较先进的,我们从一个例子来看看:

  代码:

  

printinput()

呵呵,看不同吧。

其实input是输入,print是输出。

也就是把输入的东西立即输出。

但是这个和

  代码:

printraw_input()

有什么不同呢?

不同的地方是,input()会在raw_input()接收了“字符串”的输入之后进行一些处理,比如你是输入1+2,然后输出的就是3了,而raw_input就是原原本本的1+2的输出了。

用代码表示就是

  代码:

  

eval(raw_input())

eval是求表达式的值,任何一个简单的python表达式,就像1+2这样的作为字符串送入,就能把值从eval处理之后取出来。

现在你实验一下"sdfsdf”之后,你会发现提示你

  引用:

Traceback(mostrecentcalllast):

  File"",line1,in-toplevel-

  input()

  File"",line0,in-toplevel-

NameError:

name'sdfsdf'isnotdefined

如果输入其他稀奇古怪的字符串还可能有其他的出错提示,我们现在要做的就是捕捉这种由用户输入引起的错误。

这么来作:

  代码:

  

try:

  printinput()

except:

  print'thereisanerrorinyourinput'

这下你无论怎么输入都不会有什么其他的提示了,就是自己设定的print语句作为提示。

现在把tryexcept的组合去掉,回到printinput()你再尝试一下:

1/0

这个显然是一个错误,被零除的错误。

那么专门来捕捉一下这个错误:

  代码:

 

try:

  printinput()

exceptZeroDivisionError:

  print'cannotbedividedbyzero'

这下你能够捕捉到被零除的错误了。

然后你再尝试其他的输入,可能错误就没有被捕捉了。

所以再补上:

  代码:

try:

  printinput()

exceptZeroDivisionError:

  print'cannotbedividedbyzero'

except:

  print'thereisanerrorinyourinput'

注意,捕捉所有错误的except必须放在所有的except的最后一位。

明白了?

OK

还有更多的能够捕捉的错误,自己查手册吧(暂时看不了手册没关系,慢慢来嘛)。

以后还能够自己raise(引发)异常呢。

不过那都是比较高级的应用了,对于出错处理从一开始就有这个印象,并牢记在心中对于以后写大一些的软件很有好处。

Lesson9走向模块化的第一步

大规模的程序设计需要你把一个大的程序拆分成n个模块。

然后把模块进行组合,交互成为一个完整的程序。

你不可能像现在这样,从顶写到尾。

那么我们从函数开始。

  代码:

defsquare(x):

  returnx**2

printsquare(5)

简单吧,这个是我看过的函数定义中最简洁的。

def表示这个开始定义一个函数,x是参数,参数是不需要类型的,因为python是不需要明确指出类型的。

return是返回值,返回的值插入到调用函数的地方。

再复杂一些

  代码:

defmultiply(a,b):

  returna*b

printmultiply(1,2)

这是两个参数的函数。

那么返回两个值呢?

  代码:

defswap(a,b):

  return(b,a)

printswap(1,2)

呵呵,其实这里返回的并不是两个值,而是一个值。

怎么说呢。

(b,a)就是一个东西,是一个元组(turple),你可以用这样的方式成生一个元组,并使用它。

元组是基本的变量类型:

  代码:

my_turple=(1,2,3)

my_list=[]

foriinmy_turple:

  my_list.append(i)

printmy_list

其实元组和列表非常像,但是列表的长度是可以变化的,而且成员是可以改变的。

但是元组是什么都不能变的,是只读的。

对于高级一点的话题:

传递进来的参数是否可以被修改,这个问题取决于你传递了什么近来。

如果是数字或者字符串,是不能够改变的,但是如果是这样的:

  代码:

deftest_func(list_be_passed):

  list_be_passed[0]='towin'

my_list=['taowen']

printmy_list

test_func(my_list)

printmy_list

就能够改变传递近来的参数了,所以处理的时候要小心,必要的时候copy一下再传递。

函数简单吧,但是很好用的。

想起C中的函数那么那么多麻烦,真是感慨万千啊。

下面是应该讲GUI编程呢,还是面向对象呢?

思考一下

Lesson10Python的文件操作

文件操作....是一个语言和外界联系的主要方法....现在以txt为例简单的讲一下...

首先是建立关联...假设在存在以下文件c:

\a.txt

  代码:

Thisisline#1

Thisisline#2

Thisisline#3

END

  代码:

>>>xxx=file('c:

\\a.txt','r')

关键字的第一部分,是文件路径及名称。

注意这里面,路径需要用\\

第二部分,是对文件的模式或者叫权限,一般有以下3种"r"(read),"w"(write)和"a"(append).

之后,就可以利用

xxx_content=infile.read()

xxx_content=infile.readlines()

来读取文件内容了

  代码:

>>>xxx=file('c:

\\a.txt','r')

>>>xxx_content=xxx.read()

>>>printxxx_content

Thisisline#1

Thisisline#2

Thisisline#3

END

>>>xxx.close()

>>>

>>>infile=file('c:

\\a.txt','r')

>>>xxx=file('c:

\\a.txt','r')

>>>forxxx_lineinxxx.readlines():

    print'Line:

',xxx_line

    

Line:

Thisisline#1

Line:

Thisisline#2

Line:

Thisisline#3

Line:

END

>>>xxx.close()

>>>

然后是文件的写入

  代码:

>>>xxx=file('c:

\\test.txt','w')

>>>xxx.write('billrice')

>>>xxx.write('testtest')

>>>xxx.write('enter\n')

>>>xxx.writelines(['billrice','ricerice'])

>>>xxx.close()

>>>

>>>xxx=file('c:

\\test.txt','r')

>>>content=xxx.read()

>>>printcontent

billricetesttestenter

billricericerice

>>>

需要注意的是...在xxx.close()之前,c盘下面只有一个空空的test.txt,xxx.close()的作用相当于最后的存盘。

Lesson11走向模块化的第二步

函数上面还能是什么呢?

内嵌函数^_^,其实python是支持的。

不过用起来会让你吐血的,LGB名称查找规则。

(寒)。

python是面向对象的,对于面向对象的支持挺好玩的。

  代码:

classperson:

  def__init__(self):

      self.name='taowen'

      self.id=20022479

  defsay_id(self):

      print"%s'sidis%d"%(self.name,self.id)

me=person()

me.say_id()

比较复

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1