http://www.cppblog.com/oosky/archive/2005/10/11/639.html
Lesson 1 准备好学习Python的环境
Python 的官方网址:
www.python.org
点击下面连接就可以直接下载了,这里只提供了Windows下的Python。
http://www.python.org/ftp/python/2.4.2/python-2.4.2.msi
linux版本的我就不说了,因为如果你能够使用linux并安装好说明你可以一切自己搞定的。
Python入门教程顺便也贴上来:http://lj0508.blogchina.com/inc/Python.rar
运行环境可以是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 = 10 pi = 3.14 area = pi*radius**2 print "the area is", area |
下次讲列表和字典
Lesson 3 Python中的数学结构
数学中你学什么东西最多遍?我想根据我的一点浅薄经验(虽然我是数学系的),学得最多的是集合,无论什么数学书都从集合开始讲起。然后讲函数呢,又必然把映射再讲一遍。可以说,集合和映射是数学中最基本的结构了。
Python对于数据结构非常明智的内置了两个,回想我写C的程序,往往是一开始就是用struct拼一个链表出来(重复劳动)。Python中提供了列表(list)和字典(dict)两种数据结构。他们分别对应的原型是集合和映射。这个你应该明白了,只是表示方法有一点不一样而已。
列表
列表的英文名是list嘛,所以我取一个名字叫
代码:
my_list = [] 这个就产生了一个空的列表。然后给它赋值 my_list = [1,2] print my_list my_list.append(3) print my_list |
字典
代码:
contact = {} |
这个产生了一个空字典,contact。然后往里面填充内容:
代码:
contact={} contact["name"]="taowen" contact["phone"]=68942443 |
name就是你查字典的时候要查找的单词,taowen就是查到的内容。不过你现在不是查,而是在写这个字典。同理添加了phone这个词条。
现在添加好了,看看contact的内容,怎么查看?自己想办法吧。。。
如果你悟性够,就会发现python很多操作是通用的,既然能够print 1, print "", print my_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字典呢?。。。
Lesson 4 用不同的方式来操作Python
到现在为止,我们用的都是交互式的命令行来操作的,的却是很方便,是吧?不过,复杂一些的情况就不那么好使了,来换一种方式来操作Python
在IDLE中点击File->New Window,出现一个新窗口(对于linux下,你要用vim或者emacs或者pico把文本的源文件写好了)。为了方便,先点击File->Save,填入my_try.py。这样能够让编辑器知道在编辑python的源文件,会把你输入的代码进行一点上色的处理。
填入下面的代码:
代码:
i = 5 n = 0 while i>0: n = n + i i = i - 1 print n |
你会发现输入:之后,自动会给缩进。而且也没有在python中发现和C/C++中类似的{}标记也没有pascal中的begin end;,其实缩进就是python中表示一段代码的从属关系的标记方法。表示n=n+1和i=i-1这两句都是while的。程序的运行逻辑应该不用解释了吧。就是运行5+4+3+2+1的结果。
运行代码
按F5,可能提示你没有存盘,照着办就是了。
发挥你的能力,计算从1到10的所有偶数的和(提示,可能没有你想象的那么智能)。
your_name = raw_input("please input your name:") hint = "welcome! %s" % your_name print hint |
inputed_num = 0 while 1: inputed_num = input("input a number between 1 and 10/n") if inputed_num >= 10: pass elif inputed_num < 1: pass else: break print "hehe, don't follow, won't out" |
from Tkinter import * root = Tk() w = Label(root, text="Hello, world!") w.pack() root.mainloop() |
################ #呵呵,还忘记了讲注释 #第一个算是完整的程序 ################ contact = {} contact_list = [] while 1: contact['name'] = raw_input("please input name: ") contact['phone'] = raw_input("please input phone number: ") contact_list.append(contact.copy()) go_on = raw_input("continue?/n") if go_on == "yes": pass elif go_on == "no": break else: print "you didn't say no/n" i = 1 for contact in contact_list: print "%d: name=%s" % (i, contact['name']) print "%d: phone=%s" % (i, contact['phone']) i = i + 1 |
print input() |
print raw_input() |
eval(raw_input()) |
Traceback (most recent call last): File "", line 1, in -toplevel- input() File "", line 0, in -toplevel- NameError: name 'sdfsdf' is not defined |
try: print input() except: print 'there is an error in your input' |
try: print input() except ZeroDivisionError: print 'can not be divided by zero' |
try: print input() except ZeroDivisionError: print 'can not be divided by zero' except: print 'there is an error in your input' |
def square(x): return x**2 print square(5) |
def multiply(a, b): return a*b print multiply(1,2) |
def swap(a, b): return (b,a) print swap(1,2) |
my_turple = (1, 2, 3) my_list = [] for i in my_turple: my_list.append(i) print my_list |
def test_func(list_be_passed): list_be_passed[0] = 'towin' my_list = ['taowen'] print my_list test_func(my_list) print my_list |
This is line #1 This is line #2 This is line #3 END |
>>> xxx = file('c://a.txt', 'r') |
>>> xxx = file('c://a.txt', 'r') >>> xxx_content = xxx.read() >>> print xxx_content This is line #1 This is line #2 This is line #3 END >>> xxx.close() >>> >>> infile = file('c://a.txt', 'r') >>> xxx = file('c://a.txt', 'r') >>> for xxx_line in xxx.readlines(): print 'Line:', xxx_line Line: This is line #1 Line: This is line #2 Line: This is line #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() >>> print content billricetesttestenter billricericerice >>> |
class person: def __init__(self): self.name = 'taowen' self.id = 20022479 def say_id(self): print "%s's id is %d" % (self.name, self.id) me = person() me.say_id() |
class person: school = 'bit' def __init__(self): self.name = 'taowen' self.id = 20022479 def say_id(self): print "%s's id is %d" % (self.name, self.id) me = person() me.say_id() print me.school |
# setup.py from distutils.core import setup import py2exe setup(name="guess_number", scripts=["guess_number.py"], ) |
# setup.py from distutils.core import setup import glob import py2exe setup(name="myscript", scripts=["myscript.py"], data_files=[("bitmaps", ["bm/large.gif", "bm/small.gif"]), ("fonts", glob.glob("fonts//*.fnt"))], ) |
from Tkinter import * root = Tk() root.mainloop() |
from Tkinter import * root = Tk(className='bitunion') label = Label(root) label['text'] = 'be on your own' label.pack() root.mainloop() |
from Tkinter import * root = Tk(className='bitunion') label = Label(root) label['text'] = 'be on your own' label.pack() button = Button(root) button['text'] = 'change it' button.pack() root.mainloop() |
from Tkinter import * def on_click(): label['text'] = 'no way out' root = Tk(className='bitunion') label = Label(root) label['text'] = 'be on your own' label.pack() button = Button(root) button['text'] = 'change it' button['command'] = on_click button.pack() root.mainloop() |
from Tkinter import * def on_click(): label['text'] = text.get() root = Tk(className='bitunion') label = Label(root) label['text'] = 'be on your own' label.pack() text = StringVar() text.set('change to what?') entry = Entry(root) entry['textvariable'] = text entry.pack() button = Button(root) button['text'] = 'change it' button['command'] = on_click button.pack() root.mainloop() |