跟老齐学Python之一个免费的实验室

在学生时代,就羡慕实验室,老师在里面可以鼓捣各种有意思的东西。上大学的时候,终于有机会在实验室做大量实验了,因为我是物理系,并且,遇到了一位非常令我尊敬的老师——高老师,让我在他的实验室里面,把所有已经破旧损坏的实验仪器修理装配好,并且按照要求做好实验样例。经过一番折腾,才明白,要做好实验,不仅仅花费精力,还有不菲的设备成本呢。后来工作的时候,更感觉到实验设备费用之高昂,因此做实验的时候总要小心翼翼。

再后来,终于发现原来计算机是一个最好的实验室。在这里做实验成本真的很低呀。

扯的远了吧。不远,现在就扯回来。学习Python,也要做实验,也就是尝试性地看看某个命令到底什么含义。通过实验,研究清楚了,才能在编程实践中使用。

怎么做Python实验呢?

走进Python实验室

在《集成开发环境(IDE)》一章中,我们介绍了Python的IDE时,给大家推荐了IDLE,进入到IDLE中,看到>>>符号,可以在后面输入一行指令。其实,这就是一个非常好的实验室。

另外一个实验室就是UNIX操作系统(包含各种Linux和Mac OSx)的shell,在打开shell之后,输入python,出现如下图所示:

如果看官是用windows的,也能够通过cmd来获得上图类似的界面,依然是输入python,之后得到界面。

在上述任何一个环境中,都可以输入指令,敲回车键运行并输出结果。

在这里你可以随心所欲实验。

交互模式下进行实验

前面的各讲中,其实都使用了交互模式。本着循序渐进、循环上升的原则,本讲应该对交互模式进行一番深入和系统化了。

通过变量直接显示其内容

从例子开始:

>>> a="http://qiwsir.github.io"
>>> a
'http://qiwsir.github.io'
>>> print a
http://qiwsir.github.io

当给一个变量a赋值于一个字符串之后,输入变量名称,就能够打印出字符串,和print a具有同样的效果。这是交互模式下的一个特点,如果在文件模式中,则不能,只有通过print才能打印变量内容。

缩进

>>> if bool(a):
...   print "I like python"
...
I like python

对于if语句,在上一讲《从if开始语句的征程》中,已经注意到,if下面的执行语句要缩进四个空格。在有的python教材中,说在交互模式下不需要缩进,可能是针对python3或者其它版本,我使用的是python2.7,的确需要缩进。上面的例子就看出来了。

看官在自己的机器上测试一下,是不是需要缩进?

报错

在一个广告中看到过这样一句话:程序员的格言,“不求最好,只求报错”。报错,对编程不是坏事。如何对待报错呢?

一定要认真阅读所提示的错误信息。

还是上面那个例子,我如果这样写:

>>> if bool(a):
... print "I like python"
 File "<stdin>", line 2
   print "I like python"
       ^
IndentationError: expected an indented block

从错误信息中,我们可以知道,第二行错了。错在什么地方呢?python非常人性化就在这里,告诉你错误在什么地方:

IndentationError: expected an indented block

意思就是说需要一个缩进块。也就是我没有对第二行进行缩进,需要缩进。

另外,顺便还要提醒,>>>表示后面可以输入指令,...表示当前指令没有结束。要结束并执行,需要敲击两次回车键。

探索

如果看官对某个指令不了解,或者想试试某种操作是否可行,可以在交互模式下进行探索,这种探索的损失成本非常小,充其量就是报错。而且从报错信息中,我们还能得到更多有价值的内容。

例如,在《眼花缭乱的运算符》中,提到了布尔运算,其实,在变量的类型中,除了前面提到的整数型、字符串型,布尔型也是一种,那么布尔型的变量有什么特点呢?下面就探索一下:

>>> a
'http://qiwsir.github.io'
>>> bool(a)   #布尔型,用bool()表示,就类似int(),str(),是一个内置函数
True
>>> b=""
>>> bool(b)
False
>>> bool(4>3)
True
>>> bool(4<3)
False
>>> m=bool(b)
>>> m
False
>>> type(m)
<type 'bool'>
>>>

从上面的实验可以看出,如果对象是空,返回False,如果不是,则返回True;如果对象是False,返回False。上面探索,还可以扩展到其它情况。看官能不能通过探索,总结出bool()的特点呢?

(0)

相关推荐

  • 跟老齐学Python之有容乃大的list(3)

    对list的操作 向list中插入一个元素 前面有一个向list中追加元素的方法,那个追加是且只能是将新元素添加在list的最后一个.如: >>> all_users = ["qiwsir","github"] >>> all_users.append("io") >>> all_users ['qiwsir', 'github', 'io'] 从这个操作,就可以说明list是可以随时改变的.

  • 跟老齐学Python之有容乃大的list(1)

    前面的学习中,我们已经知道了两种python的数据类型:int和str.再强调一下对数据类型的理解,这个世界是由数据组成的,数据可能是数字(注意,别搞混了,数字和数据是有区别的),也可能是文字.或者是声音.视频等.在python中(其它高级语言也类似)把状如2,3这样的数字划分为一个类型,把状如"你好"这样的文字划分一个类型,前者是int类型,后者是str类型(这里就不说翻译的名字了,请看官熟悉用英文的名称,对日后编程大有好处,什么好处呢?谁用谁知道!). 前面还学习了变量,如果某个变

  • 跟老齐学Python之画圈还不简单吗?

    在python中,循环有一个语句:for语句. 简单的for循环例子 >>> hello = "world" >>> for i in hello: ... print i ... w o r l d 上面这个for循环是怎么工作的呢? hello这个变量引用的是"world"这个str类型的数据 变量 i 通过hello找到它所引用的"world",然后从第一字符开始,依次获得该字符的引用. 当 i=&quo

  • 跟老齐学Python之list和str比较

    相同点 都属于序列类型的数据 所谓序列类型的数据,就是说它的每一个元素都可以通过指定一个编号,行话叫做"偏移量"的方式得到,而要想一次得到多个元素,可以使用切片.偏移量从0开始,总元素数减1结束. 例如: >>> welcome_str = "Welcome you" >>> welcome_str[0] 'W' >>> welcome_str[1] 'e' >>> welcome_str[le

  • 跟老齐学Python之再深点,更懂list

    list解析 先看下面的例子,这个例子是想得到1到9的每个整数的平方,并且将结果放在list中打印出来 >>> power2 = [] >>> for i in range(1,10): ... power2.append(i*i) ... >>> power2 [1, 4, 9, 16, 25, 36, 49, 64, 81] python有一个非常有意思的功能,就是list解析,就是这样的: >>> squares = [x**2

  • 跟老齐学Python之有容乃大的list(2)

    对list的操作 合并list <有容乃大的list(1)>中,对list的操作提到了list.append(x),也就是将某个元素x 追加到已知的一个list后边. 除了将元素追加到list中,还能够将两个list合并,或者说将一个list追加到另外一个list中.按照前文的惯例,还是首先看官方文档中的描述: list.extend(L) Extend the list by appending all the items in the given list; equivalent to a

  • 跟老齐学Python之一个免费的实验室

    在学生时代,就羡慕实验室,老师在里面可以鼓捣各种有意思的东西.上大学的时候,终于有机会在实验室做大量实验了,因为我是物理系,并且,遇到了一位非常令我尊敬的老师--高老师,让我在他的实验室里面,把所有已经破旧损坏的实验仪器修理装配好,并且按照要求做好实验样例.经过一番折腾,才明白,要做好实验,不仅仅花费精力,还有不菲的设备成本呢.后来工作的时候,更感觉到实验设备费用之高昂,因此做实验的时候总要小心翼翼. 再后来,终于发现原来计算机是一个最好的实验室.在这里做实验成本真的很低呀. 扯的远了吧.不远,

  • 跟老齐学Python之玩转字符串(1)

    如果对自然语言分类,有很多中分法,比如英语.法语.汉语等,这种分法是最常见的.在语言学里面,也有对语言的分类方法,比如什么什么语系之类的.我这里提出一种分法,这种分法尚未得到广大人民群众和研究者的广泛认同,但是,我相信那句"真理是掌握在少数人的手里",至少在这里可以用来给自己壮壮胆. 我的分法:一种是语言中的两个元素(比如两个字)和在一起,出来一个新的元素(比如新的字):另外一种是两个元素和在一起,知识两个元素并列.比如"好"和"人",两个元素和

  • 跟老齐学Python之深入变量和引用对象

    在<永远强大的函数>那一讲中,老齐我已经向看官们简述了一下变量,之后我们就一直在使用变量,每次使用变量,都要有一个操作,就是赋值.本讲再次提及这个两个事情,就是要让看官对变量和赋值有一个知其然和知其所以然的认识.当然,最后能不能达到此目的,主要看我是不是说的通俗易懂了.如果您没有明白,就说明我说的还不够好,可以联系我,我再为您效劳. 变量和对象 在<learning python>那本书里面,作者对变量.对象和引用的关系阐述的非常明了.我这里在很大程度上是受他的启发.感谢作者Mar

  • 跟老齐学Python之使用Python查询更新数据库

    回顾一下已有的战果:(1)连接数据库;(2)建立指针:(3)通过指针插入记录:(4)提交将插入结果保存到数据库.在交互模式中,先温故,再知新. 复制代码 代码如下: >>> #导入模块 >>> import MySQLdb >>> #连接数据库 >>> conn = MySQLdb.connect(host="localhost",user="root",passwd="123123&

  • 跟老齐学Python之坑爹的字符编码

    字符编码,在编程中,是一个让学习者比较郁闷的东西,比如一个str,如果都是英文,好说多了.但恰恰不是如此,中文是我们不得不用的.所以,哪怕是初学者,都要了解并能够解决字符编码问题. >>> name = '老齐' >>> name '\xe8\x80\x81\xe9\xbd\x90' 在你的编程中,你遇到过上面的情形吗?认识最下面一行打印出来的东西吗?看人家英文,就好多了 >>> name = "qiwsir" >>&g

  • 跟老齐学Python之Python安装

    任何高级语言都是需要一个自己的编程环境的,这就好比写字一样,需要有纸和笔,在计算机上写东西,也需要有文字处理软件,比如各种名称的OFFICE.笔和纸以及office软件,就是写东西的硬件或软件,总之,那些文字只能写在那个上边,才能最后成为一篇文章.那么编程也是,要有个什么程序之类的东西,要把程序写到那个上面,才能形成最后类似文章那样的东西. 刚才又有了一个术语--"程序",什么是程序?本文就不讲了.如果列为观众不是很理解这个词语,请上网google一下. 注:推荐一种非常重要的学习方法

  • 跟老齐学Python之网站的结构

    很早很早的时候,computer这个东西习惯于被称之为计算机,因为它的主要功能是完成一些科学计算的东西,我记得自己鼓捣它的时候,就是计算,根本就没有想到它有早一日还可以用来做别的.后来另外一个名字"电脑"逐渐被人们接收了,特别是网络发展起来之后,computer这个东西,如果要不上网,简直就不知道干什么.而且,现在似乎还有一个趋势,越来越强化网络的作用,而本机的功能虽然硬件在提升,可以做的事情感觉不多了. 不管怎么,网络是离不开了.上网,连上网之后干什么呢?就是要登录某某网站.不是联网

  • 跟老齐学Python之用Python计算

    一提到计算机,当然现在更多人把她叫做电脑,这两个词都是指computer.不管什么,只要提到她,普遍都会想到她能够比较快地做加减乘除,甚至乘方开方等.乃至于,有的人在口语中区分不开计算机和计算器. 那么,做为零基础学习这,也就从计算小学数学题目开始吧.因为从这里开始,数学的基础知识列为肯定过关了. 复习 还是先来重温一下伟大时刻,打印hello world. 打开电脑,让python idle运行起来,然后输入: >>> print 'Hello, World' Hello, World

  • 跟老齐学Python之正规地说一句话

    小孩子刚刚开始学说话的时候,常常是一个字一个字地开始学,比如学说"饺子",对他/她来讲,似乎有点难度,大人也聪明,于是就简化了,用"饺饺"来代替,其实就是让孩子学会一个字就能表达.当然,从教育学的角度,有人不赞成这种方法.这个此处不讨论了.如果对比学习编程,就好像是前面已经学习过的那些各种类型的数据(对应这自然语言中的单个字.词),要表达一个完整的意思,或者让计算机完成一个事情(动作),不得不通过一句话,这句话就是语句,它是按照一定规则组织起来的.自然语言中的一句话

随机推荐