来自www.cnblogs.com/taowen/articles/11239.html
Lesson 1 准备好学习Python的环境
下载的地址是:
www.python.org
为了大家的方便,我在校内作了copy:
http://10.1.204.2/tool/compiler&IDE/Python-2.3.2-1.exe
linux版本的我就不说了,因为如果你能够使用linux并安装好说明你可以一切自己搞定的。
运行环境可以是linux或者是windows:
1、linux
redhat的linux安装上去之后一定会有python的(必须的组件),在命令行中输入python回车。这样就可以进入一个
>>>的提示符
2、windows
安装好了python之后,在开始菜单里面找到Python2.3->IDLE,运行也会进入一个有
>>>提示符的窗口
开始尝试Python
1、输入:
welcome = "Hello!"
回车
然后又回到了>>>
2、输入:
print welcome
回车
然后就可以看到你自己输入的问候了。
Lesson 2 搞定环境之后的前行
Python有一个交互式的命令行,大家已经看到了吧。所以可以比较方便的学习和尝试,不用“新建-存档-编译-调试”,非常适合快速的尝试。
一开始从变量开始(其实说变量,更准确的是对象,Python中什么都可以理解为对象)。
变量
welcome = "hello!"
welcome就是变量名,字符串就是变量的类型,hello!就是变量的内容,""表示这个变量是字符串,""中间的是字符串的内容。
熟悉其他语言的人,特别是编译类型的语言,觉得没有变量的声明很奇怪。在python中用赋值来表示我要这么一个变量,即使你不知道要放什么内容,只是要先弄一个地方来放你的东西,也要这么写:
store = ""
不过这个还是说明了store是字符串,因为""的缘故。
have a try
- tmp_storage = ""
- welcome = "hello!"
- tmp_storage = welcome
- print tmp_storage
字符串
字符串是用""标记的,但是用''也可以(不要说你看不出一个是双引号,一个是单引号),两者之间是有一丁点区别,不过你可以不用理会。其实是差不多的。字符串有很多自己的操作,最常用的是这样的:
- welcome = "hello"
- you = "world"
- print welcome + you
运行之后就会发现她输出了helloworld!。
更多变量
变量还有几种类型。
数
字符串
列表
字典
文件
勿庸置疑,这些都是非常非常常用的。对于数字就不用讲了那就是:
- radius = 3
- pi = 3.14
- area = pi*radius**2
- print "the area is",area
- >>>
- the area is 28.26
Lesson 3 Python中的数学结构
数学中你学什么东西最多遍?我想根据我的一点浅薄经验(虽然我是数学系的),学得最多的是集合,无论什么数学书都从集合开始讲起。然后讲函数呢,又必然把映射再讲一遍。可以说,集合和映射是数学中最基本的结构了。
Python对于数据结构非常明智的内置了两个,回想我写C的程序,往往是一开始就是用struct拼一个链表出来(重复劳动)。Python中提供了列表(list)和字典(dict)两种数据结构。他们分别对应的原型是集合和映射。这个你应该明白了,只是表示方法有一点不一样而已。
列表
列表的英文名是list,取一个名字叫my_list
- # -*- coding: cp936 -*-
- my_list = [] #一个空列表,然后赋值
- my_list = [1,2]
- print my_list
- my_list.append(5)#append-->添加、附加
- print my_list
- print my_list[2]
- >>>
- [1, 2]
- [1, 2, 5]
- 5
非常容易明白的。append前面加了一个点,这个表示append是my_list方法。我实在不想又去给你解释什么是对象,什么是成员方法,然后扯出一大段出来。list是可以索引的。
字典
- # -*- coding: cp936 -*-
- contact = {} #产出一个空字典,然后往里面填充内容
- contact["name"] = "zhengzhong"
- contact["phonenum"] = "1360887XXXX"
- print contact
- print contact["name"]
- print contact["phonenum"]
- >>>
- {'phonenum': '1360887XXXX', 'name': 'zhengzhong'}
- zhengzhong
- 1360887XXXX
结合列表和字典
- my_list = []
- contact1 = {}
- contact1["name"] = "zhengzhong"
- contact1["phoneunm"] = "1360887XXXX"
- my_list.append(contact1)
- contact2 = {}
- contact2["name"] = "happy"
- contact2["phonenum"] = "5187XXX"
- my_list.append(contact2)
- print my_list
- print contact1
- print contact2
- >>>
- [{'phoneunm': '1360887XXXX', 'name': 'zhengzhong'}, {'phonenum': '5187XXX', 'name': 'happy'}]
- {'phoneunm': '1360887XXXX', 'name': 'zhengzhong'}
- {'phonenum': '5187XXX', 'name': 'happy'}
Lesson 4 用不同的方式来操作Python
到现在为止,我们用的都是交互式的命令行来操作的,的却是很方便,是吧?不过,复杂一些的情况就不那么好使了,来换一种方式来操作Python。在IDLE中点击File->New Window,出现一个新窗口(对于linux下,你要用vim或者emacs或者pico把文本的源文件写好了)。为了方便,先点击File->Save,填入my_try.py。这样能够让编辑器知道在编辑python的源文件,会把你输入的代码进行一点上色的处理。关闭当前窗口,File->Close!
填入下面的代码:
- x = 100
- y = 0
- while x > 0:
- y = y + x
- x = x - 1
- print y
- >>>
- 5050
你会发现输入:之后,自动会给缩进。而且也没有在python中发现和C/C++中类似的{}标记也没有pascal中的begin end;,其实缩进就是python中表示一段代码的从属关系的标记方法。表示n=n+1和i=i-1这两句都是while的。
Lesson 5 Python中的输入与判断
健全的程序大凡都需要输入的功能,所以要学习一下简单的输入:
输入要使用的是raw_input或者input函数,区别是raw_input直接把你的输入作为字符串返回,而input则在raw_input的基础上把字符串转换为数字返回(如果你输入$@#$$怎么办?自己试试看)。我们就利用这两个输入函数来作一些有趣的事情。
- # -*- coding: cp936 -*-
- name = raw_input("请输入你的名字:")
- print "Your name is %s" %name
- >>>
- 请输入你的名字:zheng
- Your name is zheng
不简单吧,还有%呢。%s表示在这个位置插入一个字符串,%表示把后面提供的参数“推”入前面的字符串中,所以推的结果是把%s推出去了,把your_name给填入那个地方了。
- inputed_num = 0
- while 1:
- inputed_num =input("inpu a number between 1 and 10:")
- if inputed_num >= 10:
- pass
- elif inputed_num < 1:
- pass
- else:
- break
- print inputed_num
- print "hehe,don't follow,won't out!"
pass就是pass了,过了嘛,什么都不干了。break就是跳出这个while 1(无穷循环,1总是真的,while总是执行)。/n是换行。
Lesson 6 Python余兴节目
- # -*- coding: cp936 -*-
- from Tkinter import * #引入一个用来创建GUI窗口的模块
- root = Tk() #创建一个主窗口
- w = Label(root,text="what's it?" #创建一个标签,第一个参数root表明Label是这个主窗口中的
- w.pack() #用缺省的方式把Label放置在这个主窗口中
- root.mainloop() #开始一个循环,等待你的输入结果
Lesson 7 Python基本语法要素齐动员
现在的目的是尽量想出一个用的东西仅限于内置的变量类型和语句的一个综合的例子,我想还是那个联系人表的例子吧
- # -*- coding: cp936 -*-
- contact = {} #空字典
- mycont_list = [] #空列表-->联系人表
- while 1:
- contact["name"] = raw_input("input your name:")
- contact["phonenum"] = raw_input("input your phonenum:")
- mycont_list.append(contact.copy())
- go_o = raw_input("continue?/n")
- if go_o == "yes":
- pass
- elif go_o == "no":
- break
- else:
- print "you didn't say yes or no/n"
- i = 1
- for contact in mycont_list:
- #print "%d:name=%s" %(i,contact["name"])
- print i,mycont_list
- print "%d:phonenum=%s" %(i,contact["phonenum"])
- i = i + 1
运行:
- >>>
- input your name:a
- input your phonenum:123
- continue?
- yes
- input your name:b
- input your phonenum:321
- continue?
- no
- 1 [{'phonenum': '123', 'name': 'a'}, {'phonenum': '321', 'name': 'b'}]
- 1:phonenum=123
- 2 [{'phonenum': '123', 'name': 'a'}, {'phonenum': '321', 'name': 'b'}]
- 2:phonenum=321
首先是回忆一下字符串
字符串既能够用""也能够用''。然后是很有特色的%操作,起到格式化字符串的作用,前面仅仅在字符串中有一个%s,现在有%d和%s两个,分别代表插入十进制数值和字符串于%x标记的位置处。
然后是列表
列表是顺序的序列,用append在后面附加,也能构用索引值索引。所以我们完全可以用一个变量保存len(contact_list)得到的长度,然后一个个的遍历,不过这里展示了另外一种非常方便的方法。而且值得注意的是append()中的参数,我使用了contact.copy(),你可以尝试着把copy()给去掉,观察结果你就知道了所谓的append是怎么干的了,特别是你对指针之类的东西很有感觉的话(但是在Python中是没有指针这个概念的)
再来看看字典
字典是键(key)和值(value)的对应组合成的无序的序列。所以你存的时候要指明键(name或者phone),而且取的时候也是一样的。
接下来是判断
if是很好用的,==表示判断两个是否相等,=表示把右边的赋给左边的。而且可以直接判断字符串是否相等,这个太方便了,如果你曾经用过strcpy()的话,就知道了。elif是表示else if的意思,如果if不满足就判断elif的条件是否满足,最后是到else中去。
循环是个主体
while和for都是循环。不过这里while就没什么说的了,又是很经典的while 1,死循环,然后必须在里面用break来跳出。for和C中的for是不一样的,for in才是一个完整的语句,指的是从一个能够逐一取值的序列中(比如list),一个一个的取出值赋给for后面指定的变量中,直到取空,循环结束。其实回想一般用C中的for的经历,也大体如此。而且你还可以用for i in range(1,100)来指定一个范围从多少到多少。可以说for in充分体现了python的体贴周到,用起来很直观,不会绕弯。