1 new commit in obp.RWPy4learner.v1:
https://bitbucket.org/ZoomQuiet/obp.rwpy4learner.v1/changeset/912c41fa96e7/
changeset: 912c41fa96e7
user: ream D
date: 2012-05-31 11:36:46
summary: 三、四、五节 第二次修改完成!
affected #: 3 files
diff -r 63b1e7a93e2a3e9f42ad0f40c5c1683844c207ca -r 912c41fa96e7dc23a0d2dca903fc6d2bd1c30180 source/ch01/Usefor.rst
--- a/source/ch01/Usefor.rst
+++ b/source/ch01/Usefor.rst
@@ -43,7 +43,7 @@
.. image:: ../_static/snap/ch01-4-list3.png
-“嗯。“value_start = ”、“end_value = ”“sample_list = ”是熟悉的赋值变量的语句。。删除一个值?读取 一个值?这些都是什么东西呢?”小白想“这个 sample_list 后面跟着一个 ['a','b',0,1,3] 这个应该就是列表吧?列表中放着的那些 'a','b',0,1,3 应该就是储存在列表里的信息吧?先什么都不管了,就拿到 IDLE 里试试看会有什么结果吧,反正他代码都已经给出来了,试试说不定就能看出结果来,先拿简单的读取操作来试试吧!反正我的程序里只需要一个读取操作。”
+“嗯。“value_start = ”、“end_value = ”“sample_list = ”是熟悉的赋值变量语句。。删除一个值?读取 一个值?这些都是什么东西呢?”小白想“这个 sample_list 后面跟着一个 ['a','b',0,1,3] 这个应该就是列表吧?列表中放着的那些 'a','b',0,1,3 应该就是储存在列表里的信息吧?”小白思索道。“还是先什么都不管了,就先把这代码拿到 IDLE 里试试看会有什么结果吧,反正网页上代码都已经给出来了,试试说不定就能看出个所以然来,先拿简单的读取操作来试试吧!反正我的程序里只需要一个读取操作。”
::
@@ -86,7 +86,7 @@
IndexError: list index out of range
>>>
-”哦哦哦,我明白了,0 读取 a ,1 读取 b , 2 读取 0...... 这不是按照列表中的东东 'a','b',0,1,3 来读取的吗!原来 Python 是从 0 开始计数的!我明白了!!!“小白狂吼道。”那么,-1 是不是就是从后面开始读取起来的呢?这就试试!“小白兴奋道。
+“哦,我明白了,0 读取出了列表中的 a ,1 读取出了列表中的 b , 2 读取出了列表中的 0...... 这不是按照列表中的东东 'a','b',0,1,3 的先后顺序读取的吗!原来 Python 是从 0 开始计数的!我明白了!!!“小白狂吼道。”那么,网页中的那段代码 end_value = sample_list[-1] 是不是就是从后面开始读取起来的呢?毕竟是 -1 嘛。”小白迅速在 IDLE 中敲下代码。
::
@@ -99,7 +99,7 @@
0
>>>
-”Oh!果然是这样。“小白为依靠自己力量又成功的解决了一个感到兴奋。”可是,这列表用起来好像还是省不了多少步骤啊,如果是要调用列表中的东东的话,还是得用 sample_list[0]、sample_list[1] ... 这样调用,虽然是省了很多变量,但是却省不了 if 啊?还是要写很多的 if ,这只是方便了信息的管理罢了。“小白突然灵光一现:”对哇,行者还说过有一个叫 for 的东西可以处理全部 list 中的信息,这个应该可以更简便吧?!先不管了,先到简明上看看这个东西再说。“小白想。
+“OMG!果然是这样!”小白为依靠自己力量又成功的解决了一个感到兴奋。“可是,这列表用起来好像还是省不了多少步骤啊,如果是要调用列表中的东东的话,还是得用 sample_list[0]、sample_list[1] ... 这样调用,虽然是省了很多变量,但是却省不了 if 啊?还是要写很多的 if ,这只是方便了联系人信息的管理罢了。”小白突然灵光一现:“对哇,行者不是还说过有一个叫 for 的东西可以处理全部 list 中的信息。这个 for 到底能不能实现处理全部 list 中的信息呢?先不管了,无论多渺小的机会都要抓住!先到简明上看看这个东西再说。”小白想。
小白翻开简明,迅速找到了 for 这个章节。
@@ -109,14 +109,14 @@
.. image:: ../_static/snap/ch01-4-list5.png
-”递归 即逐一使用队列中的每个项目。这是什么意思呢?这个 range 是什么意思呢?他下面为什么会有 1,2,3,4 这样的输出呢?“小白百思不得其解,他烦恼地狂按键盘,胡乱地复制着代码,突然,他在胡乱地把一段代码复制到 IDLE 后,让他有了新发现、
+”递归 即逐一使用队列中的每个项目。这是什么意思呢?这个 range 是什么意思呢?他下面为什么会有 1,2,3,4 这样的输出呢?“小白百思不得其解,他郁闷地敲击着键盘,胡乱地复制着代码。突然,他胡乱地把一段代码复制到 IDLE 运行后,有了新发现。
::
>>> range(1,5)
[1, 2, 3, 4]
>>>
-”哇靠,range(1,5) 竟然返回了一个 [1, 2, 3, 4] 的列表,难道这里 for 的后面的range(1,5)其实是一个列表来的吗?“小白赶快在IDLE中进行了 range 的实验。
+”哇靠,range(1,5) 竟然返回了一个 [1, 2, 3, 4] 的列表,难道这里 for 的后面的 range(1,5) 其实等同于一个列表来的吗?“小白在 IDLE 中进行了 range 的实验。
::
@@ -132,7 +132,7 @@
[1, 2, 3, 4, 5]
>>>
-”果然是这样: range(x,y)的话会把x数 到 y数 中的数都返回到列表里,而且返回的最后一个值是 y-1 。”小白明白了range的含义。“可是,为什么简明教程中的返回值是 1,2,3,4 呢?这个好像还是有些难理解。先不管了,既然 range 返回的是一个列表,那么就是说把它换成我自己的列表不就也可以顺利执行 for 语句吗?先让他顺利动起来再说!“小白决定暂且先放下刚刚他所发现的问题,先走一步算一步。
+“果然是这样: range(x,y)的话会把x数 到 y数 中的数都返回到列表里,而且返回的最后一个值是 y-1 。”小白明白了range的含义。“可是,为什么简明教程中的实例最后 print 出来的是 1,2,3,4 呢?这个好像还是有些难理解。先不管了,既然 range 返回的是一个列表,那么就是说把它换成我自己的列表不也可以顺利执行 for 语句吗?先让这 for 顺利动起来再说!”小白决定暂且先放下刚刚他所发现的问题,走一步算一步。
::
@@ -147,7 +147,7 @@
3
>>>
-“哦?难道?!难道?!我明白了!”小白高呼“原来它是依次把列表中的项目 'a','b',0,1,3 赋值给 i 然后循环打印出i来?如果是这样的话,最后一个赋值给 i 的应该是列表里的最后一个项目 3 吧?”小白思索道“如果最后一个赋值给 i 的是 3 那么就证明我的结论成立!那么,只要 print 一下 i 变量就可以知道结论是否成立了”小白迅速打开 IDLE ,敲下键盘:
+“哦?难道?!难道?!我明白了!”小白高呼:“原来它是依次把列表中的项目 'a','b',0,1,3 赋值给 i 然后循环打印出i来。如果是这样的话,最后一个赋值给 i 的应该是列表里的最后一个项目 3 吧?”小白思索道“如果最后一个赋值给 i 的是 3 那么就证明我的结论成立!那么,只要 print 一下 i 变量就可以知道我的推断是否成立了”小白迅速打开 IDLE ,敲下键盘:
::
@@ -171,9 +171,11 @@
else:
Num = Num + 1
-“对对,程序写好。”小白兴奋道“我这个程序结构真是太巧妙了,当用户输入联系人后, for 进行判断,当判断正确后,就会 +1 读取联系人后面的值,而我在联系人后面的就是联系人的号码!”小白为自己的设计感到无比的自豪。“果然行者说的没错,用 for 和 if 果然就能简化掉很多的程序。”小白兴奋道。
+“搞定!”小白吼道。“我这个程序结构真是太巧妙了,当用户输入联系人后, for 进行判断,当判断正确后,就会 +1 读取联系人后面的值,而我在联系人后面的就是联系人的号码!”小白为自己的设计感到无比的自豪:“果然行者说的没错,用 for 和 if 果然就能简化掉很多的程序。”
-小白兴奋的把程序那回到班上给大家试用,大家使用了一阵子后,同学就普遍反馈了一个问题:“这个通信录就只有这个功能吗?有没有更多的,比如添加联系人什么的功能呢?一个功能这也太简陋了吧!”。“也是,这样的通信录还不能称之为真正的通信录,看来还要进一步对它进行完善”小白想。
+小白兴奋的把程序那回到班上给大家试用,大家使用了一阵子后,同学就普遍反馈了一个问题:“这个通信录就只有这个功能吗?只有查询功能不太实用啊。如果有个添加联系人的功能话,就能自己添加自己想添加的同学,那就实用多了。”。
+
+“同学说得也对,这样的通信录还不能称之为真正的通信录,看来还要进一步对它进行完善”小白想。
“好,为了让我的程序更加易用,拥有添加联系人的功能是必不可少的。我已经用 list 成功的实现了一个拥有查询功能的通信录了。那么,能不能在现有 list 的基础上,继续完善程序,使程序拥有添加联系人的功能呢?“小白对目前的形式进行了分析:“我们目前显示联系人的方式是通过打印 list 中的一个姓名值(包含联系人姓名的值)和这个值后面的一个电话值(包含联系人电话的值)进行的。如果要实现添加联系人的功能,就得往 list 中添加两个值:一个姓名值和一个电话值,这样的话,我原先设计的查找联系人程序就也能适用于这个含有新添加的联系人信息的列表了。按照这样计算的话,下面只要找到在列表中添加新值的办法就行了。”
@@ -272,7 +274,7 @@
print Info_list[Num+1]
IndexError: list index out of range
-“list index out of range??!这是怎么回事,好像是因为 Num+1 的值超出了列表的范围!怎么会这样?”小白一遍又一遍的运行程序,然后仔细观察输出,他发现,每次都是运行到第二次:输入名字 的时候会出错。“为什么会这样呢?问题应该就是出在 Num+1 上,我的程序就是通过这个获取列表中对应的值然后打印,超出范围的话...难道是说这个值太大了吗?而且均在第二次运行发生异常。”突然小白灵光一现:“我明白了,第一次执行的时候 Num 是等于 0 的,执行完一次之后到第二次时,由于 Num 并没有恢复为原来的 0,在没有复 0 的时候执行第二次,在提取列表值的时候自然就会超出列表范围出错了!”小白成功分析出他程序的问题所在,他在它的程序 while 的开头加了个 Num = 0 ,每次执行完一次之后就复 0 。
+“list index out of range??!这是怎么回事,好像是因为 Num+1 的值超出了列表的范围!怎么会这样?”小白一遍又一遍的运行程序,然后仔细观察输出,他发现,每次都是运行到第二次:输入名字 的时候会出错。“为什么会这样呢?问题应该就是出在 Num+1 上,我的程序就是通过这个获取列表中对应的值然后打印,超出范围的话...难道是说这个值太大了吗?而且均在第二次运行发生异常。”突然小白灵光一现:“我明白了,第一次执行的时候 Num 是等于 0 的,执行完一次之后到第二次时,由于 Num 并没有恢复为原来的 0,在没有复 0 的时候执行第二次,在提取列表值的时候自然就会超出列表的范围出错了!”小白成功分析出他程序的问题所在,他在它的程序 while 的开头加了个 Num = 0 ,每次执行完一次之后就复 0 。
::
diff -r 63b1e7a93e2a3e9f42ad0f40c5c1683844c207ca -r 912c41fa96e7dc23a0d2dca903fc6d2bd1c30180 source/ch01/usedict.rst
--- a/source/ch01/usedict.rst
+++ b/source/ch01/usedict.rst
@@ -50,7 +50,7 @@
KeyError: 'Spammer'
>>>
-“哈哈,这个字典真是太好用了,竟然能通过对应的键列出对应的值,太棒了,这样我的通信录又能简化不少啊,连 list 都不用用了,而且看着还清楚,真是太方便了”小白迫不及待想要把他的通信录改成用字典的通信录。“对,咱就先实现字典读取,再实现字典添加,先一步步来。”小白马上动起手来。
+“哈哈,这个字典真是太好用了,竟然能通过对应的键列出对应的值,太棒了,这样我的通信录又能简化不少啊,连 list 都不用用了,而且看着还清楚,真是太方便了”小白迫不及待想要把他的通信录改成用字典的通信录。“对,咱就先用字典实现读取联系人功能,再实现添加联系人功能,一步步来。”小白马上动起手来。
::
@@ -82,7 +82,7 @@
“对哇,没有作一个判断,以判断用户输入的键是否在字典里,这样的话如果用户输入一个不存在的键的话,程序就会像这样报错了,可是,怎样才能判断字典里面有没有某个键呢?直接读取不存在的键是肯定不行的呀,这样肯定出错!有没有判断一个字典里面有没有某个键的办法呢?”这时,小白想到了一个绝对能找到答案的办法:python 的 help()
-“对嘛,前面早就已经知道python有help()这个办法了,为何不用一下呢?”小白在简明中已经知道了字典的是 dict 。“那么,只要 help(dict) 不就可以了吗?”小白马上动手。
+“对嘛,前面早就已经知道python有help()这个办法了,为何不用一下呢?”小白在简明中已经知道了字典的E文是 dict 。“那么,只要 help(dict) 不就可以查看到所有有关字典的用法了吗?”小白马上动手。
::
@@ -177,14 +177,14 @@
......
-小白仔细观察 help 出来的用方法,这时,一个用法吸引了他的注意:
+小白仔细观察 help 出来的东东,这时,一个叫 has_key 的东东吸引了他的注意:
::
| has_key(...)
| D.has_key(k) -> True if D has a key k, else False
-“True if D has a key k, else False?如果字典 D 有键 k 就返回 True,否则返回 False?这正是我需要的!看样子,它的用法就是 D.has_key(k) 嘛,马上试一下看到底是不是这样用的!”小白立即对其进行了尝试:
+“True if D has a key k, else False?如果字典 D 有键 k 就返回 True,否则返回 False?这正是我需要的!看样子,它的用法就是 D.has_key(k) 嘛,马上试一下看到底是不是这样用的!”小白马上打开 IDLE 进行了尝试:
::
@@ -197,7 +197,7 @@
False
>>>
-“哈哈,真的是这样,接下来在原程序上加个 if 判断不就可以了吗?马上把他融入到我的程序里试试。”小白迅速动作:
+“哈哈,真的是这样。接下来只要在在原程序上加个 if ,用 has_key 判断就可以了。”小白迅速动作:
::
@@ -229,7 +229,7 @@
输入联系人名:退出
>>>
-“对,果然成功了,一切都在意料之中,用字典真是太方便了,接下来就是把我已经知道的 ab['Guido'] = '
gu...@python.org' 这个用法融入到程序中就能实现联系人添加功能了”小白迅速进行融入:
+小白敲打着键盘:“Ok,成功,一切都在意料之中,这字典真是太方便了,接下来就是把我已经知道的 ab['Guido'] = '
gu...@python.org' 这个用法添加到程序中就能实现联系人添加功能了。”:
::
@@ -252,7 +252,7 @@
else:
print "无此联系人"
-“写好!调试一下程序看会不会有问题。”小白想。
+“搞定!调试一下程序看会不会有问题。”小白想。
::
@@ -270,6 +270,6 @@
输入联系人名:退出
>>>
-“好,程序果然没有问题。诶?如果这样做的话就会有一个 bug 哇,用户退出了程序之后他添加的联系人就全都没了哇!”小白又陷入了沉思......
+“好,程序果然没有问题。诶?”小白敲了敲自己的脑袋。“如果这样做的话就会有一个 bug ,用户退出了程序之后他添加的联系人就全都没了!前面的 list 通信录添加功能也有这个问题,怎样才能解决他们呢?”小白又陷入新的思考中......
(第一章完)
\ No newline at end of file
diff -r 63b1e7a93e2a3e9f42ad0f40c5c1683844c207ca -r 912c41fa96e7dc23a0d2dca903fc6d2bd1c30180 source/ch01/useif.rst
--- a/source/ch01/useif.rst
+++ b/source/ch01/useif.rst
@@ -36,7 +36,7 @@
print 'Done' #程序执行完了打印句 Done?
-读完程序后,他发现了有下面这几个问题是他不知道的:
+读完程序后,他发现了有下面这几个问题是他看不明白的:
1. elif 是什么?
2. 判断条件的 if 为什么要和下面要执行的语句留出一些 空格 来呢?
Repository URL:
https://bitbucket.org/ZoomQuiet/obp.rwpy4learner.v1/
--
This is a commit notification from
bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.