Python完全新手教程--12007-08-1717:43作者:taowen,billriceLesson1准备好学习Python的环境下载的地址是:为了大家的方便,我在校内作了copy:linux版本的我就不说了,因为如果你能够使用linux并安装好说明你可以一切自己搞定的。运行环境可以是linux或者是windows:1、linuxredhat的linux安装上去之后一定会有python的(必须的组件),在命令行中输入python回车。这样就可以进入一个的提示符2、windows安装好了python之后,在开始菜单里面找到Python2.3-IDLE,运行也会进入一个有提示符的窗口开始尝试Python1、输入:welcome=Hello!回车然后又回到了2、输入:printwelcome回车然后就可以看到你自己输入的问候了。Lesson2搞定环境之后的前行Python有一个交互式的命令行,大家已经看到了吧。所以可以比较方便的学习和尝试,不用“新建-存档-编译-调试”,非常适合快速的尝试。一开始从变量开始(其实说变量,更准确的是对象,Python中什么都可以理解为对象)。变量welcome=hello!welcome就是变量名,字符串就是变量的类型,hello!就是变量的内容,表示这个变量是字符串,中间的是字符串的内容。熟悉其他语言的人,特别是编译类型的语言,觉得没有变量的声明很奇怪。在python中用赋值来表示我要这么一个变量,即使你不知道要放什么内容,只是要先弄一个地方来放你的东西,也要这么写:store=不过这个还是说明了store是字符串,因为的缘故。haveatry代码:[复制到剪贴板]tmp_storage=welcome=hello!tmp_storage=welcomeprinttmp_storage你会发现同样的问候出现了。字符串字符串是用标记的,但是用''也可以(不要说你看不出一个是双引号,一个是单引号),两者之间是有一丁点区别,不过你可以不用理会。其实是差不多的。字符串有很多自己的操作,最常用的是这样的:代码:[复制到剪贴板]welcome=helloyou=world!printwelcome+you运行之后就会发现她输出了helloworld!。更多变量变量还有几种类型。数字符串列表字典文件勿庸置疑,这些都是非常非常常用的。对于数字就不用讲了那就是:代码:[复制到剪贴板]radius=10pi=3.14area=pi*radius**2printtheareais,area下次讲列表和字典Lesson3Python中的数学结构数学中你学什么东西最多遍?我想根据我的一点浅薄经验(虽然我是数学系的),学得最多的是集合,无论什么数学书都从集合开始讲起。然后讲函数呢,又必然把映射再讲一遍。可以说,集合和映射是数学中最基本的结构了。Python对于数据结构非常明智的内置了两个,回想我写C的程序,往往是一开始就是用struct拼一个链表出来(重复劳动)。Python中提供了列表(list)和字典(dict)两种数据结构。他们分别对应的原型是集合和映射。这个你应该明白了,只是表示方法有一点不一样而已。列表列表的英文名是list嘛,所以我取一个名字叫代码:[复制到剪贴板]my_list=[]这个就产生了一个空的列表。然后给它赋值my_list=[1,2]printmy_listmy_list.append(3)printmy_list非常容易明白的。append前面加了一个点,这个表示append是my_list方法。我实在不想又去给你解释什么是对象,什么是成员方法,然后扯出一大段出来。list是可以索引的:printmy_list[1]不过你或许会不明白为什么是2,而不是显示的是1。因为索引从0开始,要输出第一个元素:printmy_list[0]字典代码:[复制到剪贴板]contact={}这个产生了一个空字典,contact。然后往里面填充内容:代码:[复制到剪贴板]contact={}contact[name]=taowencontact[phone]=68942443name就是你查字典的时候要查找的单词,taowen就是查到的内容。不过你现在不是查,而是在写这个字典。同理添加了phone这个词条。现在添加好了,看看contact的内容,怎么查看?自己想办法吧。。。如果你悟性够,就会发现python很多操作是通用的,既然能够print1,print,printmy_list,那么其他数据类型的变量就没有理由不能用了。结合列表和字典代码:[复制到剪贴板]contact_list=[]contact1={}contact1['name']='taowen'contact1['phone']=68942443contact_list.append(contact1)contact2={}contact2['name']='god'contact2['phone']=44448888contact_list.append(contact2)呵呵,够复杂的吧。你可以想出我为什么要用两个contact字典呢?。。。Lesson4用不同的方式来操作Python到现在为止,我们用的都是交互式的命令行来操作的,的却是很方便,是吧?不过,复杂一些的情况就不那么好使了,来换一种方式来操作Python在IDLE中点击File-NewWindow,出现一个新窗口(对于linux下,你要用vim或者emacs或者pico把文本的源文件写好了)。为了方便,先点击File-Save,填入my_try.py。这样能够让编辑器知道在编辑python的源文件,会把你输入的代码进行一点上色的处理。填入下面的代码:代码:[复制到剪贴板]i=5n=0whilei0:n=n+ii=i-1printn你会发现输入:之后,自动会给缩进。而且也没有在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_nameprinthint不简单吧,还有%呢。%s表示在这个位置插入一个字符串,%表示把后面提供的参数“推”入前面的字符串中,所以推的结果是把%s推出去了,把your_name给填入那个地方了。printf知道吧,C中的printf就是一样的嘛。代码:[复制到剪贴板]inputed_num=0while1:inputed_num=input(inputanumberbetween1and10\n)ifinputed_num=10:passelifinputed_num1:passelse:breakprinthehe,don'tfollow,won'toutpass就是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()开始了一个循环,是等待你的输入的循环。Python基本语法要素齐动员现在的目的是尽量想出一个用的东西仅限于内置的变量类型和语句的一个综合的例子,我想还是那个联系人表的例子吧代码:[复制到剪贴板]#################呵呵,还忘记了讲注释#第一个算是完整的程序################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:passelifgo_on==no:breakelse:printyoudidn'tsayno\ni=1forcontactincontact_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()