首页 > 代码库 > python启程——第一篇

python启程——第一篇

关于自己python学习的内容分享分享(更多可以访问http://www.yibencezi.com/notes/9073进行学习):

0,环境安装(自行百度)
在线环境:http://pythonfiddle.com/
1,我的第一个python:

技术分享

2,简单的print:
rint,中文意思是打印,在python里它不是往纸上打印,而是打印在命令行,或者叫终端、控制台里面。print是python里很基本很常见的一个操作,它的操作对象是一个字符串(什么是字符串,此处按住不表,且待日后慢慢道来)。基本格式是:
print 你要打印的东西
或者
print(你要打印的东西)
这里一定要英文字符的括号,所有程序中出现的符号都必须是英文字符,注意别被你的输入法坑了。

注意:如果你是python3及以后的版本,一定得用print(),不然会出错。

实例演示:

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

接在print后面加一段文字来输出的话,需要给文字加上双引号或者单引号。大家发现,print除了打印文字之外,还能输出各种数字、运算结果、比较结果等。你们试着自己print一些别的东西,看看哪些能成功,哪些会失败,有兴趣的话再猜一猜失败的原因。

注意:python3记得在后面必须加上()
其实在python命令行下,print是可以省略的,默认就会输出每一次命令的结果。就像这样:

>>> ‘Your YiDa!‘
‘Your YiDa!‘
>>> 2+13+250
265
>>> 5<50
True


#======== 短期目标 ========#
短期目标就是一个很简单很弱智的小游戏:

COM: Guess what I think?
5
COM: Your answer is too small.
12
COM: Your answer is too large.
9
COM: Your answer is too small.
10
COM: BINGO!!!

解释一下:首先电脑会在心中掐指一算,默念一个数字,然后叫你猜。你猜了个答案,电脑会厚道地告诉你大了还是小了,直到最终被你果断猜中。

3,IDE
什么是IDE?英文叫做Integrated Development Environment,中文就是集成开发环境。嗯,等于没说。

打个不恰当的比方,如果说写代码是制作一件工艺品,那IDE就是机床。再打个不恰当的比方,PS就是图片的IDE,Word就是doc文档的IDE,PowerPoint就是ppt文件的IDE。python也有自己的IDE,而且还有很多。

python自带了一款IDE,叫做IDLE。先说Windows,Windows上安装了之后,可以在“开始菜单”->“程序”->“Python 2.7”里找到它。打开后之后很像我们之前用过的命令行。没错,它就是的,在里面print一下试试。不知之前用命令行的同学有没有注意到,命令行输一行命令就会返回结果,而且之前print了那么多,关掉之后也不知道到哪里去了。所以它没法满足我们编写弱智小游戏的大计划。我们需要用新的方法!

点击窗口上方菜单栏的“File”->“New Window”,会打一个长得很像的新窗口,但里面什么也没有。这是一个文本编辑器,在这里面就可以写我们的python程序了。继续print几行,这次可以多print一点:

print ‘Hello‘
print ‘IDE‘
print ‘Here I am.‘

现在是,见证奇迹的时刻!点击“Run”->“Run Module”,或者直接按快捷键F5。会提示你保存刚才文件,随便取个名字,比如“lesson3.py”。(.py是python代码文件的类型,虽然不指定.py也是可以的,但建议还按规范来)保存完毕后,之前那个控制台窗口里就会一次性输出你要的结果。

以后想再次编辑或运行刚才的代码,只要在IDLE里选择“File”->“Open...”,打开刚才保存的.py文件就可以了。

Mac上的IDLE是预装好了,在“终端”里输入“IDLE”就可以启动,使用方法同Windows。也可以在文件夹/usr/bin里可以找到IDLE。如果是重新下载安装了python,似乎是可以在“应用程序”里找到IDLE的,Mac的同学可以验证下。(有同学反馈说 Mac 上默认的 Python 里是不带 IDLE 的,需要自行下载安装 Python 后里面才有)

除了官配的 IDLE,还有一些很好用的第三方 IDE,把文件目录、文本编辑器、命令行都整合到了一起,还增加了很多辅助功能,配置好之后用起来应该比 IDLE 方便。这其中首推 PyCharm,它之前是收费软件,现在已经推出了免费版本,足够一般的学习和开发使用。有兴趣的同学也可以去找来试试看。

另外,Windows下还有一个第三方的免费IDE,叫PyScripter,地址:http://sourceforge.net/projects/pyscripter/。但 PyScripter 的编码设置有时会导致奇怪的问题,还有要注意它的安装位置和.py文件的保存位置都不能有中文,另外其官方的维护也不给力,所以现在不是十分推荐。

今天的内容有点长。配置开发环境这种事最麻烦了,大家耐心一点,毕竟一次投入,长期受益。以后我们的课程都会在IDE中进行,基本不再往命令行里直接敲代码了。

最后说下,有很多python程序员都不使用任何IDE。至于原因嘛,可能就像优秀的手工艺人是不会用机床来加工艺术品的吧。

4,输入
前期回顾:
1. 命令行,包括Win下的控制台(CMD)和Mac下的终端(Terminal)。
它可以帮我们确认自己电脑上的python是不是正常。但是这种方法很难帮我们实现写一个完整小程序的目标。

2. IDE,包括python自带的IDLE和其他第三方的IDE。
不知道大家是不是都顺利搞定,并且能顺利保存并打开py文件了呢?以后我们课程里的内容,你都可以在这里面进行。

3. 在线编辑器,compileonline或者pythonfiddle。
他们同样包括代码编辑器(写代码的地方)和控制台(输出结果的地方)两部分。所以我们在本地IDE里的操作都可以在其中实现。只不过保存文件会有些复杂,compileonline是点击download files打包下载,pythonfiddle需要注册一下。当然,你也可以直接把你写好的代码复制下来,保存在本地,下次再粘贴上去接着写。

#======== 进入今天的正题 ========#
之前print了那么多,都是程序在向屏幕“输出”。那有来得有往,有借得有还,有吃。。。咳咳!那啥,我们得有向程序“输入”信息的办法,才能和程序对话,进行所谓的“人机交互”。

python有一个接收命令行下输入的方法:
input()
注意,和print不同的是,这次我们必须得加上()了,而且得是英文字符的括号。

好了,终于可以搬出那个弱智小游戏了,耶!游戏里我们需要跟程序一问一答,所以我们先把话给说上。

打开我们的python编辑器,不管是IDLE,在线编辑器,还是其他的IDE。在代码编辑器中输入下面几句代码:

print "Who do you think I am?"
input()
print "Oh, yes!"

然后,Run!(Forrest Run!)你会在命令行中看到,程序输出了第一句之后就停住了,这是input在等待你的输入。

输入你的回答,回车。你会看到程序的回答。注意!引号!!又是引号!!!和print一样,如果你输的是一串文字,要用引号‘‘或者""引起来,如果是数字则不用。

(插一句,python还有一个输入的方法:raw_input(),它把所有的输入都直接当作一串字符,于是就可以不用加引号,有兴趣的同学可以试一试,体会一下两者的不同。关于这个令人纠结的引号,我们以后会再讨论它。)

技术分享

看上去不错哦,似乎就这么对上话了。是不是觉得离小游戏的完成迈进了一大步?可是大家发现没有,即使你说"Idiot!",程序仍然会淡定地回答"Oh, yes!"因为它左耳进右耳出,根本就没听进去我们到底说了啥。那怎么才能让它认真听话呢?啪!且听下回分解。


PS:今天心情不错,给大家讲个很冷的程序员笑话。

一位程序员对书法十分感兴趣,退休后决定在这方面有所建树。于是花重金购买了上等的文房四宝。一日,饭后突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风范,又具颜真卿气势,定神片刻,泼墨挥毫郑重地写下一行字:
hello world !

5,变量
#======== 变量 ========#

Python之神说,要有变量!于是就有了变量。

变量,望文生义,就是变化的量。python里创建一个变量的方法很简单,给它起个名字,然后给它一个值。举起几个栗子:

name = ‘Crossin‘
myVar = 123
price = 5.99
visible = True

“=”的作用是把右边的值赋予给左边的变量。

这里说一下另外一个概念,叫做“数据类型”,上面4颗栗子分别代表了python中较常见的四种基本类型:

● 字符串 - 表示一串字符,需要用‘‘或""引起来
● 整数
● 浮点数 - 就是小数
● bool(布尔) - 这个比较特殊,是用来表示逻辑“是”“非”的一种类型,它只有两个值,True和False。(注意这里没有引号,有了引号就变成字符串了)

再次用到我们熟悉的print。这次,我们升级了,要用print输出一个“变量”:

name = ‘Crossin‘
print name

看到结果了吗?没有输出“name”,也没有报错,而是输出了“Crossin”。现在是不是能想明白一些,为什么之前print一段文字没加引号就会报错,而print一个数字就没有问题呢?

它叫变量,那就是能变的。所以在一次“赋值”操作之后,还可以继续给它赋予新的值,而且可以是不同类型的值。

a = 123
print a
a = ‘hi‘
print a

“=”的右边还可以更复杂一点,比如是一个计算出的值:

value = http://www.mamicode.com/3 * 4
print value
value = http://www.mamicode.com/2 < 5
print value

甚至,也可以是input():

name = input()
print name

于是,我们又可以进化一下我们的小游戏了。把上次写的内容稍微改一下,加上变量:

print "Who do you think I am?"
you = input()
print "Oh, yes! I am a"
print you

看来程序已经知道我们的输入了。接下来,就要让它学会对不同的答案做出判断。这个我们留到下次再说。

实例:

技术分享

小游戏进阶:

技术分享

6,bool(布尔值)
昨天说到了python中的几个基本类型,字符串、整数、浮点数都还算好理解,关于剩下的那个bool(布尔值)我要稍微多说几句。

逻辑判断在编程中是非常重要的。大量的复杂程序在根本上都是建立在“真”与“假”的基本逻辑之上。而bool所表示的就是这种最单纯最本质的True/False,真与假,是与非。

来看下面的例子:

a = 1 < 3
print a
b = 1
c = 3
print b > c

通过用“>”“<”来比较两个数值,我们就得到了一个bool值。这个bool值的真假取决于比较的结果。
方法
“>”“<”在编程语言中被成为逻辑运算符,常用的逻辑运算符包括:

>:大于
<:小于
>=:大于等于
<=:小于等于
==:等于。比较两个值是否相等。之所以用两个等号,是为了和变量赋值区分开来。
!=:不等与
not:逻辑“非”。如果x为True,则not x为False
and:逻辑“与”。如果x为True,且y为True,则x and y为True
or:逻辑“或”。如果x、y中至少有一个为True,则x or y为True

关于bool值和逻辑运算其实远不止这些,但现在我们暂时不去考虑那么多,以免被绕得找不到北。最基本的大于、小于、等于已经够我们先用一用的了。

试试把bool加到我们的小游戏里:

num = 10
print ‘Guess what I think?‘
answer = input()

result = answer<num
print ‘too small?‘
print result

result = answer>num
print ‘too big?‘
print result

result = answer==num
print ‘equal?‘
print result

代码比之前稍微多了一点,解释一下。
第一段代码:先创建一个值为10的变量num,输出一句提示,然后再输入一个值给变量answer。
第二段代码:计算answer<num的结果,记录在result里,输出提示,再输出结果。
第三段、第四段都与第二段类似,只是比较的内容不一样。

看看结果是不是跟你预期的一致?虽然看上去还是有点傻,但是离目标又进了一步。

现在数数你手上的工具:输入、输出,用来记录数值的变量,还有可以比较数值大小的逻辑运算。用它们在你的python里折腾一番吧。
实例:

 技术分享

7,if
#======== if ========#

继续上次的程序。我们已经能让程序程序判断我们输入的值了,但这程序还是有点呆,不管怎样都要把话说三遍。因为到目前为止,我们的程序都是按照顺序从上到下一行接一行地执行。有同学发来问题了:怎么能让它根据我们输入的结果来选择执行呢?答案就是 -- if

来看一张图(纯手绘,渣画质)

技术分享

解释一下,程序顺序往下执行遇到if语句的时候,会去判断它所带条件的真假。
“如果”为True,就会去执行接下来的内容。“如果”为False,就跳过。

语法为:

if 条件:
选择执行的语句

特别说明:条件后面的冒号不能少,同样必须是英文字符。
特别特别说明:if内部的语句需要有一个统一的缩进,一般用4个空格。python用这种方法替代了其他很多编程语言中的{}。你也可以选择1/2/3...个空格或者按一下tab键,但必须整个文件中都统一起来。千万不可以tab和空格混用,不然就会出现各种莫名其妙的错误。所以建议都直接用4个空格。

上栗子:

thisIsLove = input()
if thisIsLove:
print "再转身就该勇敢留下来"

试试看?输入True,就会得到回答。输入False,什么也没有。(如果你那里输出中文有问题,请自行改成英文)

技术分享

所以,我们的游戏可以这样改写:

num = 10
print ‘Guess what I think?‘
answer = input()
if answer<num:
print ‘too small!‘
if answer>num:
print ‘too big!‘
if answer==num:
print ‘BINGO!‘

技术分享

if在编程语言中被称为“控制流语句”,用来控制程序的执行顺序。还有其他的控制流语句,后面我们会用到。

技术分享

#======== 课后作业 ========#

有不少同学强烈要求布置作业。好吧,满足你们。还记得之前那个“你觉得我是什么人?”的程序吧?(不记得的请回复4。。。)
改写一下,只有你回答某些好话的时候,程序才会Oh yes。其他都不理你。甚至说某些词的时候,它还要反驳你。
至于用哪些词哪些条件,你们自己设定吧。

8,while
#======== 注释 ========#

先介绍一个新东西:注释。
python里,以“#”开头的文字都不会被认为是可执行的代码。
print “hello world”

print "hello world" #输出一行字
是同样的效果。但后者可以帮助开发者更好地理解代码。
在接下来的课程中,我会经常用注释来解释代码。

#======== while ========#

用if改进完我们的小游戏后,功能已经基本实现了。很多同学做完后纷纷表示,每次只能猜一次,完了之后又得重新run,感觉好麻烦。能不能有办法让玩家一直猜,直到猜中为止?答案很显然,如果这种小问题都解决不了,那python可就弱爆了。

最简单的解决方法就是while。

同if一样,while也是一种控制流语句,另外它也被称作循环语句。继续来看渣画质手绘流程图:

 技术分享

程序执行到while处,“当”条件为True时,就去执行while内部的代码,“当”条件为False时,就跳过。

语法为:

while 条件:
循环执行的语句

同if一样,注意冒号,注意缩进。

今天的栗子:

a = 1 #先a设为1
while a != 0: #a不等于0就一直做
print "please input"
a = input()
print "over"

想想怎么用while改进小游戏?有多种写法,大家自己思考下,我不多做说明了。下图给出一种方法。

技术分享

注意,这里出现了两层缩进,要保持每层缩进的空格数相同。

到此为止,小游戏已经基本成型了。不过好像还差一点:每次自己都知道答案,这玩起来有神马意思。
明天来讲,怎么让你不知道电脑的答案。

python启程——第一篇