简单的编程0基础下python入门指引

你曾经想知道计算机是如何工作的吗?尽管我们不能在一篇文章里面教会你所有的东西,但是可以通过学习如何写出你自己的程序来获得一个良好的开端。在这篇python教程中,你将会学到计算机编程的基础知识,使用对新手来说最棒的编程语言之一。
什么是编程?

尽可能简单的讲,编程是编写代码,命令计算机去完成某项任务的艺术。这里讲的某项任务,可以是简单的两数相加,或是像把飞船送入轨道这样的复杂任务!

一个程序里面,最小的组成部分被称作语句(statement)——代表了对计算机做出的一条指令。

201541112130558.jpg (400×300)

当你完成了自己的程序后,编译器会把你写的代码转换为机器码——计算机语言的最底层。机器码指示中央处理器工作(central processing unit),或者叫做cpu,这里面包含一些诸如加载某个值或是做数学运算的步骤。

如果你曾经听过某人说:“我编译了我的程序”,那代表他们已经把代码转换成了机器码。

为什么不直接写机器码呢?原因很显然,程序码具有可读性。下面比较了python版的程序和其对应的机器码:

python代码

print “hello, world!”

“hello, world!”

对应的机器码

c7 3c 2a 3c 2a 2b 2a 5c 3c 28 5c 2a 2b 2a 5c 3c
28 5c 2a 2b 2a 5c 3c 28 5c 2a 2b 2a 5c 3c 28 5c
2a 2b 2a 5c 3c 28 5c 2a 2b 2a 5c 3c 28 5c 2a 2b
2a 5c 3c 28 5c 2a 2b 2a 5c 3c 28 5c 2a 2b 2a 5c
3c 28 5c 2a 2b 2a 5c 3c 28 5c 2a 2b 2a 5c 3c 28
5c 2a 2b 2a 5c 3c 28 5c 2a 2b 2a 5c 3c 28 5c 2a
2b 2a 00 00 01 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 64 48 65 6c 6c 6f 2c 20 57
6f 72 6c 64 21 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

“hello, world!”

很明显为什么你不会想要直接编写机器码了。但是,确实有一些人会去写机器码——萝卜白菜各有所爱嘛!

上面我们忽略了一个小问题。python是一种解释型语言;你并不会像上面我们暗示的那样,把它直接编译成为机器码。

实际上是这样的,python使用一个叫做解释器的东西。解释器是另外一个程序,把代码编译成叫做二进制码的东西,然后再程序运行的时候再转换成机器码。你等下会学到更多和解释器有关的内容。

当你最终运行程序的时候,你刚编译的那些机器码会被加载到内存中,cpu会读取它并执行程序。

然而,在刚开始学习使用python编程的时候,你并不需要完全理解编译器的内部工作原理,但是你必须确保你已经安装了python。
准备开始

如果你在使用mac,你走运了——python已经预装在mac中了。在mac中使用python解释器,打开**终端**(**terminal.app**);你可以再应用程序/工具文件夹下找到它,或者在spotlight中输入,像这样:

201541112208754.jpg (427×114)

打开终端后,输入下面的指令然后按下回车:

$ python

你会看到类似下面这样的结果:

注意:如果你没有得到上面的结果,把输出结果复制到论坛,我们会尽力帮助你的!**

windows

在windows上,这一过程稍微有点复杂——但是还是要说,大部分的东西还是在windows!上:]

首先,在浏览器中访问python官网的下载页面。

201541112245971.jpg (690×534)

滚动页面跳过所有的python 3.x.x版本,直接到python 2.7.x。下载windows安装包(windows installer),运行,按照指引来做,接受默认的选项。
一旦安装包安装完成,你就可以启动它了。

在windows vista或者windows 7上,这样启动:

1. 点击左下角的开始菜单。
2. 点击所有程序
3. 打开python文件夹
4. 双击idle解释器

如果你使用windows 8,这样启动:
1. 点击左下角开始菜单
2. 在搜索框中输入idle
3. 点击idle(python gui)

201541112537226.jpg (455×702)

不管你是如何启动解释器的,你应该确保它能够工作,在终端中输入如下命令,或者是在windows的命令提示符中输入如下指令并按回车:

print “hello world!”

尽管看上去并不像,但是你已经写完你第一个python程序了!在学习大多数语言的时候,打印出hello, world被认为是一个起点。

`python` 命令指示计算机在屏幕上输出后面的字符——而不是在你的打印机上打印!注意“hello world”两边的引号,引号中的任何东西都被看做常规的文本儿不会被解释为一个指令。
变量

变量,是在计算机内存中存放数据的一种方式;在你的程序中你会经常用到它们。在一些语言中,变量有特定的类型,指明了这些变量属于那些类。

在python中,你不需要声明变量的类型。现在暂时不需要在意这些细节;在本教程稍后的章节中你会学到关于这个内容的知识。
在解释器中输入如下命令并按回车:

hello = “hello world!”

这么做声明了hello变量并且把hello world赋值类了它。现在,你不需要在程序中需要“hello world”的地方输入这个字符串了,取而代之的是,你可以使用hello这个变量。

在解释器中输入如下命令并按回车:

print hello

这个指令会产生和hello world例子相同的结果,但是它是打印出了hello这个变量的值。

变量同样也可以用来储存数字。在解释器中输入如下命令:

x = 5
print x
y = 10
z = x + y
print z

注意:从现在起,你可能要输入多行语句,只需要在每行末尾输入回车即可**

先猜猜看上面的代码会做些上面,再看下面的答案:

这段代码会打印5,然后打印15.第一个`print`语句打印了被你赋值为5的变量x。然后它打印了y+x的结果。因为y被赋值为10,x是5,所以打印了15。

对于你生命中的绝大部分程序变量是其核心。在你学习本教程的过程中,你会对变量变得非常熟悉。
变量类型

在之前的教程中你已经遇到了变量,但是我们并没有仔细的介绍它。不同的变量类型存储不同类型的值。

注意:对于全部的内建类型,请查看python官方文档

到目前为止,你仅仅和python中两个基本类型打过交道:整型(`integers`)和字符串型(`strings`),你还会遇到布尔类型(`boolean`),你可以用它来储存`true`或者`false`。

下面有关于这些变量类型的一点介绍:

整型
一个整型数,是一个整数。整型数的范围,在32位机上是-2147483648 到 2147483647 ,在64位机上是 -9223372036854775808 to 9223372036854775807。

你可以像这样简单的输入一个数字来创建整型,不需要任何引号:

foo = 5

字符串型
字符串是一串字符;你可以使用字符串来表示很多东西,从屏幕上的任何文本到整个网页请求。

通过用引号包含一串字符来创建字符串,就像下面一样:

布尔类型

布尔类型代表了true或false。

你通过使用大写开头的true或false 来创建布尔类型,不需要引号,就像下面这样:

`isfoo = true`

变量两边没有引号;如果你用引号包含了true,你则是创建了一个字符串类型!
字符串连接和整数相加

python让两个字符串钩在一起变得很容易,我们也称之为字符串连接。你可以使用`str()`把一个整数类型转换成字符串,相反,你也可以使用`int()`把一个字符串转换为整型。

在你的解释器中输入下面指令:

“1” + “1”
1 + 1
1 + int(“1”)

下面解释上面代码做了些什么:

– 第一条语句连接了两个字符串;引号确保了这两个数字被当做字符串除了。结果就是”11″。
– 第二条语句把两个数作为整数相加,结果是2.
– 最后一条语句把一个整数和另一个被转换为整数的字符串相加,结果还是2。

if 语句

if语句检查某个条件是不是真,如果是,则执行一段代码。条件语句通常是这样的形式`值 – 操作符 – 值`,通常是比较两个值。

比如,你可以使用`x == 0`评价一个值是不是等于0,`==` 是等于操作符。

下面是python中的一些常见比较

a == b: #checks if a and b are equal
a != b: #checks if a and b are not equal
a > b: #checks if a is greater than b
a < b: #checks if a is less than b a >= b: #checks if a is greater than or equal to b
a 10:
break

这样就好多了!上面的代码会打印0到10然后退出。这里用到的技巧是break语句,它会直接跳出循环。不论出于何种原因,如果你想要在for循环中提前跳出,也可以使用这个技巧。
捕获用户输入

python中一件很酷的事情是可以非常简便的以文本的方式获取输入用户输入。输入是指任何从外部提供给程序的数据,比如文本或者是其他会影响程序行为的指令。

在你的解释器中输入下面代码:

name = raw_input(“what is your name? “)
print “hello, ” + name

上面的代码首先会让你进行输入;一旦用户输入了问题的答案,程序会把它赋值给name变量。这一过程完成后,程序会连接字符串“hello,”和变量name 的内容。

raw_input()函数是python内建函数;它完成打印从控制台输入字符串的工作,捕获用户输入的文本,然后把它们作为函数值返回。

利用上面捕获输入的技术,你可以创建简单的计算器。在你的解释器中输入下面的代码:

a = raw_input(“number 1: “)
b = raw_input(“number 2: “)
print int(a) + int(b)

首先,你捕获了两个用户输入的值然后把它们分别赋值给a和b。然后你把他们转换成了整型并相加。

为什么要有转换这一步呢?仅仅是因为解释器中所有的输入都是以字符串形式进行的,而你是希望吧两个整数的值相加。

如果你不转换这些字符串为整数,你觉得会怎样呢?没错,程序会连接你输入的字符串,这并不是你想要的!
导入

在我们深入研究导入之前,介绍一下python的模块是必要的。一个模块,是一组python函数的集合,你希望在不同的程序中重用它们。导入一个模块等价于从一个模块中把所有的代码取出来放到你自己的程序里面所以你可以在任何时候去使用他们,但是又不需要去剪切和复制,哪怕是一行代码!

在python社区中,存在着大量的模块,但是目前来讲,你仅会接触到随机数模块(random module)。

要导入模块,在解释器中输入下面的代码:

import random

一旦导入了模块,你就可以像下面这样使用它了:

print random.randint(0, 100)

这将会打印0到100间随机的整数;很直观的东西。到目前为止你已经学到很多知识了,足以把他们揉在一个小程序里来练习一下你目前学到的知识了!
猜谜游戏

这将是你辛苦学习python编程得到的回报。你将创造属于你自己的猜谜游戏!

首先,你需要一个与在解释器中一句一句直接执行程序相比更好的方式。

为了做到这一点,你需要创建python文件。

mac

在mac系统下创建python文件,在终端中输入下面的命令:

$ touch guess.py
$ open -t guess.py

这将会使用`touch` 命令创建一个空的`guess.py` 文件,然后通过`open -t`命令,使用默认的文本编辑器打开它,

一旦你的python文件中有了一些内容后,你就可以在终端中输入`python guess.py` 来执行它。

windows

在windows系统下,点击idle中的文件按钮(file) 找到新建文件(new file)。你会发现一个文本编辑器映入眼帘,你可以在里面输入你的新程序。

201541113039293.jpg (690×727)

再次点击文件按钮,选择保存。把文件名命名为`guess.py` 然后把它保存在你想要保存的地方。

运行你的程序,在菜单中选择runrun,就像这样:

201541113152417.jpg (690×734)

游戏时间!

猜谜游戏将会生成一个随机数,然后在一个循环中,反复询问游戏者他们的猜测结果。如果用户猜中,则结束循环;否则程序会提醒用户他们的猜测是过高还是过低并继续询问结果直到猜中。

import random
number = random.randint(0, 100)

上面这段程序会导入随机数模块,然后生成一个0到100之间的随机数并把它储存在变量number中。

接下来,你需要询问游戏者他们的答案。把这些代码加到程序的后面:

guess = raw_input(“guess the number: “)

这段代码,和你猜的一样,让用户输入它们的答案并且把它保存在guess变量中。记住,现在这个变量是一个字符串,你需要把它转换为整型。

在程序中添加下面的代码,就加在上面的代码后面:

guess_int = int(guess)

这个代码把用户输入的字符串转换为整型然后赋值给guess_int变量。

下面你需要比较用户猜测的值和随机数的大小。

在程序结尾添加下面的代码:

if number > guess_int:
print “too low!”
if number < guess_int: print "too high!" if number == guess_int: print "you got it!"

点击菜单按钮的runrun module或是在终端中输入`python guess.py` 来运行程序;当程序提示你的时候,输入数字。发生了什么?程序在你输入数字后会把结果显示到屏幕上然后就停止了。哎呀!

你想让程序循环的询问你结果直到你猜中。你需要用一个running变量来添加这个功能。

running = true

running会被用在while循环中来控制你程序的循环。当用户输入正确的答案,程序会把running变量赋值为false然后while就会停止。

在你让用户输入结果的前面添加下面这段代码:

while running:
guess = raw_input(“guess the number: “)
…etc

下面,缩进剩下的代码到同一层,这样while循环才能认出它们是循环中的代码块。

最后,你需要添加用户获胜时,把running赋值为false的语句:

if number == guess_int:
print “you got it!”
running = false

确保if下面的两行代码被缩进两层。

运行你的程序,现在再试一下。你需要多少回才能猜中正确答案?

你最终的程序看上去是这个样子的:

import random
running = true
number = random.randint(0, 100)
while running:
guess = raw_input(“guess the number: “)
guess_int = int(guess)
if number > guess_int:
print “too low!”?
if number < guess_int: print "too high!" if number == guess_int: print "you got it!" running = false

恭喜你——你已经写出了你的第一个python程序。别不是那么难,对吧?
从这里,到何方?

现在你已经完成了python新手教程,我打赌你一定渴望一次挑战。尝试在你的程序中添加如下功能:

猜测次数统计
更大的随机数产生范围
一个电脑操控的游戏对手

如果你想要做一个稍微复杂一点的游戏,请看我的另一个教程:《beginning game programming for teens with python》

Posted in 未分类