转贴一篇不错的Python入门教程

  • 格式:doc
  • 大小:88.00 KB
  • 文档页数:20

转贴一篇不错的Python入门教程- Instant Hacking[译文]原文 /python/instant-hacking.phpInstant Hacking[译文]译者:肯定来过这是一篇简短的关于python程序设计语言的入门教程,原文在这里,翻着词典翻译了来!这是一份对编程艺术的简短介绍,其中的例子是用python写成的。

(如果你已经知道了该如何编程,但是想简单了解一下python,你可以查阅我的另一篇文章Instant Python。

)这篇文章已经被翻译为意大利、波兰、日本、塞尔维亚以及巴西葡萄亚语等许多种语言,而且正在被翻译为韩语。

(译者:当然,现在已经包括了中文版本,只是作者并不知道。

)这篇文章和如何闯入别人的计算机系统之类的东西无关。

我不关注那类事情,所以请不要email问我那些东西。

注意:要使此文中的例子正确运行,你应该把它们写在一个文本文件中,然后用解释器运行;不要试图直接在交互方式下运行它们--不是所有的都可以这样运行。

(不要问我和此有关的具体细节。

最好查阅python文档或者email给help@)。

1. 运行环境要用python写程序,你必须先安装一个python的解释器。

它可以存在于大多数平台(包括Macintosh、Unix和Windows)。

更多与此有关的信息可以在python的网站上找到。

你还应该有一个文本编辑器(象emacs、notepad或者类似的东西)。

2. 编程是什么?为计算机写程序其实就是给它一系列的指令告诉它去做什么。

计算机程序在某些方面就象是菜谱,指导我们如何做菜的那种。

例如[1]:假日火腿沙拉原料:腌泡汁:1/4杯酸橙汁1/4杯低钠大豆酱油1/4杯水1大汤匙植物油3/4茶匙小茴香1/2茶匙牛至1/4茶匙热胡椒粉2片丁香、大蒜,捣碎沙拉:1份(12盎司)罐装少钠午餐肉火腿切成条状1个洋葱,切片胡椒粉,切好的生菜12个樱桃西红柿,切半方法:把腌泡汁装在有合适盖子的广口瓶里摇匀。

用塑料袋装上火腿,泼上腌泡汁,封住袋口。

在电冰箱里腌制30分钟。

从塑料袋里取出火腿;准备2大汤匙腌泡汁,在煮锅里煮一下。

加上火腿、洋葱、绿色的胡椒。

烧3到4分钟直到火腿熟了为止……当然,没有一台计算机会懂这个……而且即便是懂,大多数计算机也不可能烧制出一份沙拉。

那么,我们该如何让这些变得对计算机来说更为友好一些呢?从根本上说依赖于两点:首先,我们必须以计算机可以理解的方式与之交流;其次还要和它谈论它能够做到的事情。

第一点意味着我们必须使用一种语言--一种已经为之准备好了解释器的程序设计语言,第二点意味着我们不能期望计算机为我们做一份沙拉--但是我们可以让它做数字累加或者在屏幕上打印东西之类的事情。

3. Hello……程序设计教程有一个传统,通常以在屏幕上打印“Hello, world!”这样的程序做为开始。

对python来说,这非常简单:1.print "Hello, world!"复制代码它从根本上说很象上面的菜谱(尽管要短得多!)。

它告诉计算机做什么:打印“Hello, world!”。

如果让它打印更多的废话该怎么做呢?很简单:1.print "Hello, world!"2.print "Goodbye, world!"复制代码不比上一个难,是不是?但是不怎么有趣……我们希望它可以处理更多的元素,就象沙拉菜谱那样。

那么,我们都有哪些元素呢?首先,有字符串,象“Hello, world!”,除此之外还有数字。

假设我们打算让计算机为我们计算矩形的面积。

我们可以给它如下的菜谱:1.# The Area of a Rectangle2.3.# Ingredients:4.5.width = 206.height = 307.8.# Instructions:9.10.area = width * height11.print area复制代码你大概可以看出它同火腿沙拉菜谱的相似性(尽管有些细微的差别)。

但它是如何工作的呢?首先,以#开始的行叫做注释事实上会被计算机忽略。

然而插入象这样小段的注释对于增强你程序的可读性来说是很重要的。

接下来,看起来象 foo = bar 这样的行叫做赋值。

对于 width = 20 这样的情况来说就是告诉计算机从这里开始width就代表20了。

它还意味着一个名字为“width”的变量从此被创建了(如果它先前已经存在,那么会被重新覆盖)。

所以,我们以后使用这个变量的时候,计算机就知道了它的值。

因此,width * height本质上同20 * 30一样会计算出600这个结果,然后赋给名称为“area”的变量。

程序的最后一句在屏幕上打印出变量“area”的值,所以你看到这个程序运行的最终结果仅仅是600注意:在某些程序设计语言中,你必须在程序开始的时候告诉计算机你将会用到哪些变量(就象沙拉中的元素)--而python足够聪明,所以你可以根据需要随时创建。

4. 反馈现在,你可以执行一些简单,或者再复杂一点的计算了。

比方说,你或许打算写一段程序来计算圆形的面积而不是矩形的:1.radius = 302.3.print radius * radius * 3.14复制代码然而,这事实上并不比计算矩形面积的那个程序更有意思。

至少在我看来是这样。

它有些僵硬。

如果我们看到半径为31的圆该怎么办?怎样让计算机知道?这有点象沙拉菜谱中的:“烧3到4分钟直到火腿熟了为止。

”要知道何时烧熟,我们必须检查。

我们需要反馈,或者提示。

计算机如何知道我们圆形的半径?同样需要输入资料……我们可以做的是告诉计算机半径是多少:1.radius = input("What is the radius?")2.print radius * radius *3.14复制代码现在程序变得漂亮一些了……input是个被称为函数的东西。

(很快你将学习创建你自己的函数。

而input是python内建的函数。

)仅仅写下input什么也不会做……你必须在它的后面放上一对括号。

所以input()可以工作--它会简单的要求用户输入半径的长度。

而上面的那个版本对用户来说也许更友好一些,因为它首先打印出了一个问题。

当我们将诸如提问字符串“What is the radius?”之类的东西放在函数调用的括号中时,这个过程被称为函数的参数传递。

括号中的内容被称为参数。

在上个例子中我们传递了一个提问作为参数以便input知道在获得答案前应该先打印什么。

但是获得的答案如何到达radius变量呢?函数input,调用时,会返回一个值(象许多其它函数一样)。

你不一定非要使用这个值,但象我们这种情况,我们要使用它。

这样,下面这两个表达式有着很大的差别:1.foo = input2.bar = input()复制代码foo现在包含input函数本身(所以它事实上可以象foo("What is your age?"这样使用;这被称为动态函数调用)而bar包含用户键入的值。

5. 流程现在我们可以编写程序执行简单的任务(运算和打印)并且可以获得用户输入了。

这很有用,但仍然局限在按顺序执行命令,也就是说--它们必须按照事先安排好的顺序执行。

大多数火腿沙拉菜谱是象这样顺序或者线性叙述的。

但是如果我们打算让计算机检查沙拉是否烧好该怎样告诉它呢?如果烧好了,那么应该从烘箱里把它取出来--否则的话,应该接着让它烧更长一段时间什么的。

我们如何表达这个?我们想做的,其实是控制程序的流程。

它可以从两个方向执行--要么拿开火腿,要不继续让它留在烘箱里。

我们可以选择,条件是它是否烧好。

这被称为条件执行。

我们可以这样写:1.temperature = input("What is the temperature of the spam?")2.3.if temperature >; 50:4. print "The salad is properly cooked."5.else:6. print "Cook the salad some more."复制代码意思很明显:如果温度超过50(摄氏度),那么打印出信息告诉用户烧好了,否则,告诉用户再烧制一段时间。

注意:缩进在python中很重要。

条件执行(还有循环执行以及函数定义--见后面)中的语句块必须被缩进(而且要缩进同等数量的空格;一个键相当于8个空格)以便解释器可以知道它们从哪里开始到哪里结束。

这同时也使程序变得更加可读。

让我们回到先前的面积计算问题。

能看出来这段程序做什么吗?1.# Area calculation program2.3.print "Welcome to the Area calculation program"4.print "---------------------------------------"5.print6.7.# Print out the menu:8.print "Please select a shape:"9.print "1 Rectangle"10.print "2 Circle"11.12.#Get the user's choice:13.shape = input(">; ")14.15.#Calculate the area:16.if shape == 1:17. height = input("Please enter the height: ")18. width = input("Please enter the width: ")19. area = height *width20. print "The area is ", area21.else:22. radius = input("Please enter the radius: ")23. area = 3.14 * (radius**2)24. print "The area is ", area复制代码这个例子中的新东西:1. 只使用print本身将打印出一个空行2. ==检查两个值是否相等,与=不同,后者把表达式右侧的值赋给左侧的变量。

这是一个非常重要的差别!3. **是python的幂运算符--因此半径的平方被写成radius**24. print能够打印出不止一个东西。