summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHui Lan <lanhui@zjnu.edu.cn>2019-04-14 08:44:05 +0800
committerHui Lan <lanhui@zjnu.edu.cn>2019-04-14 08:44:05 +0800
commite92875d96595389b4fe293adf77425efb24b9771 (patch)
tree46b1ae61ffd13dc33fbc5a9a1d2ec0a5d355e3d2
parent520be4fe4cd388fc772f9da9f6057e9997c1aa39 (diff)
added Preface and included a few questions asked by a novice programmer.
-rw-r--r--LectureNotesOnPython.html166
-rw-r--r--LectureNotesOnPython.rst38
2 files changed, 130 insertions, 74 deletions
diff --git a/LectureNotesOnPython.html b/LectureNotesOnPython.html
index eb0b066..b505698 100644
--- a/LectureNotesOnPython.html
+++ b/LectureNotesOnPython.html
@@ -370,56 +370,78 @@ ul.auto-toc {
<tr><th class="docinfo-name">Authors:</th>
<td>蓝珲 (lanhui AT zjnu.edu.cn)</td></tr>
<tr><th class="docinfo-name">Version:</th>
-<td>0.1 of 2019/03/30</td></tr>
+<td>0.1.1 of 2019-04-14</td></tr>
</tbody>
</table>
-<p>非学究写书,无空洞行文。Python语法简洁,库函数全面强大,编程速度快,运行速度也不慢。</p>
<div class="contents topic" id="id1">
<p class="topic-title first">内容目录</p>
<ul class="simple">
-<li><a class="reference internal" href="#python" id="id16">Python的发音纠正</a></li>
-<li><a class="reference internal" href="#id2" id="id17">Python源流</a></li>
-<li><a class="reference internal" href="#id3" id="id18">Python的关键词</a></li>
-<li><a class="reference internal" href="#id4" id="id19">值的类型</a></li>
-<li><a class="reference internal" href="#variable" id="id20">变量(Variable)</a></li>
-<li><a class="reference internal" href="#mutable" id="id21">可变(mutable)类型与不可变类型</a></li>
-<li><a class="reference internal" href="#id5" id="id22">数与格式化显示</a></li>
-<li><a class="reference internal" href="#strings" id="id23">字符串(Strings)</a></li>
-<li><a class="reference internal" href="#concatenation" id="id24">字符串相加(concatenation)</a></li>
-<li><a class="reference internal" href="#slice" id="id25">子串(slice)</a></li>
-<li><a class="reference internal" href="#id6" id="id26">搜索字符串</a></li>
-<li><a class="reference internal" href="#string" id="id27">String类(对象)方法</a></li>
-<li><a class="reference internal" href="#in" id="id28">in操作符</a></li>
-<li><a class="reference internal" href="#id7" id="id29">字符串比较</a></li>
-<li><a class="reference internal" href="#id8" id="id30">列表</a></li>
-<li><a class="reference internal" href="#id9" id="id31">列表作为参数</a></li>
-<li><a class="reference internal" href="#append" id="id32">注意区别 <tt class="docutils literal">append</tt> 与 <tt class="docutils literal">+</tt> 操作符</a><ul>
-<li><a class="reference internal" href="#tdd-test-driven-development" id="id33">TDD - Test-driven Development</a></li>
-<li><a class="reference internal" href="#id10" id="id34">计算复杂度</a></li>
+<li><a class="reference internal" href="#id2" id="id17">前言</a></li>
+<li><a class="reference internal" href="#python" id="id18">Python的发音纠正</a></li>
+<li><a class="reference internal" href="#id3" id="id19">Python源流</a></li>
+<li><a class="reference internal" href="#id4" id="id20">Python的关键词</a></li>
+<li><a class="reference internal" href="#id5" id="id21">值的类型</a></li>
+<li><a class="reference internal" href="#variable" id="id22">变量(Variable)</a></li>
+<li><a class="reference internal" href="#mutable" id="id23">可变(mutable)类型与不可变类型</a></li>
+<li><a class="reference internal" href="#id6" id="id24">数与格式化显示</a></li>
+<li><a class="reference internal" href="#strings" id="id25">字符串(Strings)</a></li>
+<li><a class="reference internal" href="#concatenation" id="id26">字符串相加(concatenation)</a></li>
+<li><a class="reference internal" href="#slice" id="id27">子串(slice)</a></li>
+<li><a class="reference internal" href="#id7" id="id28">搜索字符串</a></li>
+<li><a class="reference internal" href="#string" id="id29">String类(对象)方法</a></li>
+<li><a class="reference internal" href="#in" id="id30">in操作符</a></li>
+<li><a class="reference internal" href="#id8" id="id31">字符串比较</a></li>
+<li><a class="reference internal" href="#id9" id="id32">列表</a></li>
+<li><a class="reference internal" href="#id10" id="id33">列表作为参数</a></li>
+<li><a class="reference internal" href="#append" id="id34">注意区别 <tt class="docutils literal">append</tt> 与 <tt class="docutils literal">+</tt> 操作符</a><ul>
+<li><a class="reference internal" href="#tdd-test-driven-development" id="id35">TDD - Test-driven Development</a></li>
+<li><a class="reference internal" href="#id11" id="id36">计算复杂度</a></li>
</ul>
</li>
-<li><a class="reference internal" href="#dictionary" id="id35">字典(Dictionary)</a><ul>
-<li><a class="reference internal" href="#incremental-development" id="id36">递增开发(Incremental Development)</a></li>
-<li><a class="reference internal" href="#keyvalue" id="id37">key与value互换</a></li>
+<li><a class="reference internal" href="#dictionary" id="id37">字典(Dictionary)</a><ul>
+<li><a class="reference internal" href="#incremental-development" id="id38">递增开发(Incremental Development)</a></li>
+<li><a class="reference internal" href="#keyvalue" id="id39">key与value互换</a></li>
</ul>
</li>
-<li><a class="reference internal" href="#id11" id="id38">函数</a><ul>
-<li><a class="reference internal" href="#id12" id="id39">局部变量</a></li>
-<li><a class="reference internal" href="#id13" id="id40">全局变量</a></li>
-<li><a class="reference internal" href="#id14" id="id41">调用函数与传递参数</a></li>
-<li><a class="reference internal" href="#flow-of-execution" id="id42">函数执行顺序 (flow of execution)</a></li>
+<li><a class="reference internal" href="#id12" id="id40">函数</a><ul>
+<li><a class="reference internal" href="#id13" id="id41">局部变量</a></li>
+<li><a class="reference internal" href="#id14" id="id42">全局变量</a></li>
+<li><a class="reference internal" href="#id15" id="id43">调用函数与传递参数</a></li>
+<li><a class="reference internal" href="#flow-of-execution" id="id44">函数执行顺序 (flow of execution)</a></li>
</ul>
</li>
-<li><a class="reference internal" href="#id15" id="id43">参考</a></li>
+<li><a class="reference internal" href="#id16" id="id45">参考</a></li>
</ul>
</div>
+<div class="section" id="id2">
+<h1><a class="toc-backref" href="#id17">前言</a></h1>
+<p>非学究写书,无空洞行文。</p>
+<p>Python语法简洁,库函数全面强大,编程速度快,运行速度也不慢。</p>
+<p>大学里, 往往是专家教初学者。 专家也是从初学者过来的,只不过专家经常忘
+记这一点。 要知道,初学者可能只写过不到10行的程序,而专家已经写了至少
+10000行程序了。 两者的大脑构造不同。 学习是困难的, 教育或培训应把专
+家的工作流程放慢100倍! 初学者要做的是尽量快的使自己的程序量到达1000,
+这包括中间无数次除错, 每次除错都是一次微小的学习。 要想感到舒服, 只
+有积累自己的经验, 无其它捷径。</p>
+<p>面对新东西,初学者往往会问这些困惑 (ask the student's name):</p>
+<ul class="simple">
+<li>这个东西是什么意思?</li>
+<li>怎么来的?</li>
+<li>有什么用?</li>
+<li>怎么用?</li>
+<li>什么情况下用?</li>
+<li>为什么程序中要加入这个东西?</li>
+</ul>
+<p>动态的教育方式会更好。专家与初学者坐在电脑前, 逐步回答上述问题, 直到
+初学者说“我明白了”。</p>
+</div>
<div class="section" id="python">
-<h1><a class="toc-backref" href="#id16">Python的发音纠正</a></h1>
+<h1><a class="toc-backref" href="#id18">Python的发音纠正</a></h1>
<p>国人普遍把th发作s。 Not quite correct。</p>
<p>ˈpī-ˌthän , -thən <a class="reference external" href="https://cn.bing.com/search?q=define%20python&amp;tf=U2VydmljZT1EaWN0aW9uYXJ5QW5zd2VyVjIgU2NlbmFyaW89RGVmaW5pdGlvblNjZW5hcmlvIFBvc2l0aW9uPU5PUCBSYW5raW5nRGF0YT1UcnVlIEZvcmNlUGxhY2U9RmFsc2UgUGFpcnM9RGljdGlvbmFyeVdvcmQ6cHl0aG9uO3NjbjpEZWZpbml0aW9uU2NlbmFyaW87cDpRQVM7IHw%3d&amp;hs=hyRBF0mYq9hrfQUq66DIZnFVta1ZGRfBiBks25oUguk%3d">pronounciation</a></p>
</div>
-<div class="section" id="id2">
-<h1><a class="toc-backref" href="#id17">Python源流</a></h1>
+<div class="section" id="id3">
+<h1><a class="toc-backref" href="#id19">Python源流</a></h1>
<p>Python之父Guido van Rossum,荷兰人,1956年生,1982年阿姆斯特丹大学获得
数学与计算机科学硕士学位。有过ABC语言的工作经验。1989年设计了Python语
言。</p>
@@ -468,8 +490,8 @@ ul.auto-toc {
</div>
</blockquote>
</div>
-<div class="section" id="id3">
-<h1><a class="toc-backref" href="#id18">Python的关键词</a></h1>
+<div class="section" id="id4">
+<h1><a class="toc-backref" href="#id20">Python的关键词</a></h1>
<div class="line-block">
<div class="line">def pass</div>
<div class="line">from import</div>
@@ -490,8 +512,8 @@ ul.auto-toc {
</div>
<p>关键词被语言留用(reserved),无法作变量名。</p>
</div>
-<div class="section" id="id4">
-<h1><a class="toc-backref" href="#id19">值的类型</a></h1>
+<div class="section" id="id5">
+<h1><a class="toc-backref" href="#id21">值的类型</a></h1>
<p>所有的值都是对象。a = 5, help(a) a.bit_length()</p>
<p>数字。1, 1.,1.1, .1, 1e1, 1e-1, 1E1, 1E-1</p>
<dl class="docutils">
@@ -511,7 +533,7 @@ A list of objects</dd>
<p>元组(tuple),字典(dict)。</p>
</div>
<div class="section" id="variable">
-<h1><a class="toc-backref" href="#id20">变量(Variable)</a></h1>
+<h1><a class="toc-backref" href="#id22">变量(Variable)</a></h1>
<p>是一个名字(name),是指向一个值(value)的名字。</p>
<p>值存放在内存(memory)中的某个地址。</p>
<p>尽量选有意义的简短的名字。比如,代表个数用n,代表索引用i,j,k。</p>
@@ -600,7 +622,7 @@ A list of objects</dd>
</ul>
</div>
<div class="section" id="mutable">
-<h1><a class="toc-backref" href="#id21">可变(mutable)类型与不可变类型</a></h1>
+<h1><a class="toc-backref" href="#id23">可变(mutable)类型与不可变类型</a></h1>
<p>字符串是不可变的(immutable)类型,不能在原内存地址改变。</p>
<p>a = 'hello' 不可以原地修改a[0] = 'H'。需要修改a的值时,需要对a进行重新赋值a = 'Hello'。</p>
<p>列表是可变(mutable)类型,能在原内存地址改变。</p>
@@ -624,8 +646,8 @@ A list of objects</dd>
</div>
</blockquote>
</div>
-<div class="section" id="id5">
-<h1><a class="toc-backref" href="#id22">数与格式化显示</a></h1>
+<div class="section" id="id6">
+<h1><a class="toc-backref" href="#id24">数与格式化显示</a></h1>
<blockquote>
<div class="line-block">
<div class="line">x = 3.1415926</div>
@@ -673,7 +695,7 @@ A list of objects</dd>
</blockquote>
</div>
<div class="section" id="strings">
-<h1><a class="toc-backref" href="#id23">字符串(Strings)</a></h1>
+<h1><a class="toc-backref" href="#id25">字符串(Strings)</a></h1>
<p>由字符组成。</p>
<div class="line-block">
<div class="line">fruit = 'banana!'</div>
@@ -729,7 +751,7 @@ A list of objects</dd>
<p>以上 <tt class="docutils literal"># [start,stop,step]</tt> 代表注释(comment),注释以 <tt class="docutils literal">#</tt> 号开头。</p>
</div>
<div class="section" id="concatenation">
-<h1><a class="toc-backref" href="#id24">字符串相加(concatenation)</a></h1>
+<h1><a class="toc-backref" href="#id26">字符串相加(concatenation)</a></h1>
<p>输出Jack, Kack, Lack, Mack, Nack, Ouack, Pack, and Quack</p>
<div class="line-block">
<div class="line">prefixes = 'JKLMNOPQ'</div>
@@ -748,7 +770,7 @@ A list of objects</dd>
</div>
</div>
<div class="section" id="slice">
-<h1><a class="toc-backref" href="#id25">子串(slice)</a></h1>
+<h1><a class="toc-backref" href="#id27">子串(slice)</a></h1>
<p>s[n:m],其中n或m可省略。
包括第n个字符,不包括第m个字符。(索引自0开始)</p>
<div class="line-block">
@@ -771,8 +793,8 @@ A list of objects</dd>
<div class="line">new_greeting = 'J' + greeting[1:]</div>
</div>
</div>
-<div class="section" id="id6">
-<h1><a class="toc-backref" href="#id26">搜索字符串</a></h1>
+<div class="section" id="id7">
+<h1><a class="toc-backref" href="#id28">搜索字符串</a></h1>
<div class="line-block">
<div class="line">def find(word, c):</div>
<div class="line-block">
@@ -798,7 +820,7 @@ A list of objects</dd>
<p>练习:用上面三参数的find来做。</p>
</div>
<div class="section" id="string">
-<h1><a class="toc-backref" href="#id27">String类(对象)方法</a></h1>
+<h1><a class="toc-backref" href="#id29">String类(对象)方法</a></h1>
<div class="line-block">
<div class="line">upper()</div>
<div class="line">lower()</div>
@@ -811,14 +833,14 @@ A list of objects</dd>
</div>
</div>
<div class="section" id="in">
-<h1><a class="toc-backref" href="#id28">in操作符</a></h1>
+<h1><a class="toc-backref" href="#id30">in操作符</a></h1>
<p>'a' in 'banana'
'seed' in 'banana'</p>
<p>练习:写出下面的函数,使得
in_both('apples', 'oranges')返回'aes'。</p>
</div>
-<div class="section" id="id7">
-<h1><a class="toc-backref" href="#id29">字符串比较</a></h1>
+<div class="section" id="id8">
+<h1><a class="toc-backref" href="#id31">字符串比较</a></h1>
<p>字典序(alphabetical order)。大写字母排在小写字母前。</p>
<p>字符串之间可以有以下对比操作:</p>
<div class="line-block">
@@ -833,8 +855,8 @@ in_both('apples', 'oranges')返回'aes'。</p>
<p>计算复杂度。</p>
<p>即兴定义函数,制造一个长度不小于4的密码。</p>
</div>
-<div class="section" id="id8">
-<h1><a class="toc-backref" href="#id30">列表</a></h1>
+<div class="section" id="id9">
+<h1><a class="toc-backref" href="#id32">列表</a></h1>
<p>语言的内置(built-in)类型。注意与String类比,index也是从0开始, in操作符, 求长度,获得字串,遍历操作类似。</p>
<blockquote>
<div class="line-block">
@@ -951,8 +973,8 @@ a与b是指向[1,2,3]的两个references。
因为[1,2,3]是mutable的,所以使用a对[1,2,3]做改变同样影响到b对应的值。
error-prone(易错)</p>
</div>
-<div class="section" id="id9">
-<h1><a class="toc-backref" href="#id31">列表作为参数</a></h1>
+<div class="section" id="id10">
+<h1><a class="toc-backref" href="#id33">列表作为参数</a></h1>
<blockquote>
<div class="line-block">
<div class="line">def delete_head(t):</div>
@@ -968,7 +990,7 @@ error-prone(易错)</p>
</blockquote>
</div>
<div class="section" id="append">
-<h1><a class="toc-backref" href="#id32">注意区别 <tt class="docutils literal">append</tt> 与 <tt class="docutils literal">+</tt> 操作符</a></h1>
+<h1><a class="toc-backref" href="#id34">注意区别 <tt class="docutils literal">append</tt> 与 <tt class="docutils literal">+</tt> 操作符</a></h1>
<blockquote>
<div class="line-block">
<div class="line">t1 = [1, 2]</div>
@@ -995,7 +1017,7 @@ error-prone(易错)</p>
</dl>
</blockquote>
<div class="section" id="tdd-test-driven-development">
-<h2><a class="toc-backref" href="#id33">TDD - Test-driven Development</a></h2>
+<h2><a class="toc-backref" href="#id35">TDD - Test-driven Development</a></h2>
<p>测试驱动开发。 My favourite。 刺激有挑战性。 帮助厘清需求。 帮助编写代码。</p>
<p>推荐使用pytest。如何安装? 使用命令 <tt class="docutils literal">pip install pytest</tt>。</p>
<p>在 <tt class="docutils literal">test_cases.py</tt> 写如下测试用例。然后在命令行运行: <tt class="docutils literal">python <span class="pre">-m</span> pytest test_cases.py</tt> 。</p>
@@ -1034,14 +1056,14 @@ error-prone(易错)</p>
<span class="keyword">print</span><span class="punctuation">(</span><span class="name">pwd</span><span class="punctuation">)</span>
</pre>
</div>
-<div class="section" id="id10">
-<h2><a class="toc-backref" href="#id34">计算复杂度</a></h2>
+<div class="section" id="id11">
+<h2><a class="toc-backref" href="#id36">计算复杂度</a></h2>
<p>用Big O表述复杂度。O(n), O(n^2), O(n^3)。</p>
<p>密码实验回顾。</p>
</div>
</div>
<div class="section" id="dictionary">
-<h1><a class="toc-backref" href="#id35">字典(Dictionary)</a></h1>
+<h1><a class="toc-backref" href="#id37">字典(Dictionary)</a></h1>
<p>Mutable数据类型。</p>
<p>实际开发中超级有用。</p>
<blockquote>
@@ -1065,7 +1087,7 @@ error-prone(易错)</p>
<p>key-value pair (item)</p>
<p>item的顺序不可预测,不是按照创建时的顺序。</p>
<div class="section" id="incremental-development">
-<h2><a class="toc-backref" href="#id36">递增开发(Incremental Development)</a></h2>
+<h2><a class="toc-backref" href="#id38">递增开发(Incremental Development)</a></h2>
<p>每次完成一小点。从易到难。</p>
<p>练习:给定一个字符串,数出每个字母出现的频率。</p>
<pre class="code python literal-block">
@@ -1173,7 +1195,7 @@ error-prone(易错)</p>
<p>练习: 改写函数 <tt class="docutils literal">word_frequency</tt> , 使它能接受第三个参数, <tt class="docutils literal">black_lst</tt>。 <tt class="docutils literal">black_lst</tt> 是包含要排除考虑的单词的列表。 例如, <tt class="docutils literal">black_lst</tt> 可以是 <tt class="docutils literal">['the', 'and', 'of', 'to']</tt> 。</p>
</div>
<div class="section" id="keyvalue">
-<h2><a class="toc-backref" href="#id37">key与value互换</a></h2>
+<h2><a class="toc-backref" href="#id39">key与value互换</a></h2>
<p>注意到在原来的字典中一个value可能对应多个key的值。比如 <tt class="docutils literal">d = <span class="pre">{'a':1,</span> <span class="pre">'b':2,</span> <span class="pre">'c':2}</span></tt> 中,2就对应两个key,'b'与'c'。</p>
<pre class="code python literal-block">
<span class="keyword">def</span> <span class="name function">inverse_dictionary</span><span class="punctuation">(</span><span class="name">d</span><span class="punctuation">):</span>
@@ -1210,8 +1232,8 @@ error-prone(易错)</p>
</pre>
</div>
</div>
-<div class="section" id="id11">
-<h1><a class="toc-backref" href="#id38">函数</a></h1>
+<div class="section" id="id12">
+<h1><a class="toc-backref" href="#id40">函数</a></h1>
<p>函数 <tt class="docutils literal">unique_words</tt> 与 <tt class="docutils literal">unique_words2</tt> 哪个运行速度快?</p>
<pre class="code python literal-block">
<span class="keyword">def</span> <span class="name function">unique_words</span><span class="punctuation">(</span><span class="name">lst</span><span class="punctuation">):</span>
@@ -1228,12 +1250,12 @@ error-prone(易错)</p>
<span class="keyword">print</span><span class="punctuation">(</span><span class="name">unique_words</span><span class="punctuation">([</span><span class="literal string single">'hello'</span><span class="punctuation">,</span> <span class="literal string single">'world'</span><span class="punctuation">,</span> <span class="literal string single">'am'</span><span class="punctuation">,</span> <span class="literal string single">'he'</span><span class="punctuation">]</span> <span class="operator">*</span> <span class="name">N</span><span class="punctuation">))</span>
<span class="keyword">print</span><span class="punctuation">(</span><span class="name">unique_words2</span><span class="punctuation">([</span><span class="literal string single">'hello'</span><span class="punctuation">,</span> <span class="literal string single">'world'</span><span class="punctuation">,</span> <span class="literal string single">'am'</span><span class="punctuation">,</span> <span class="literal string single">'he'</span><span class="punctuation">]</span> <span class="operator">*</span> <span class="name">N</span><span class="punctuation">))</span>
</pre>
-<div class="section" id="id12">
-<h2><a class="toc-backref" href="#id39">局部变量</a></h2>
+<div class="section" id="id13">
+<h2><a class="toc-backref" href="#id41">局部变量</a></h2>
<p>在函数之内。函数执行结束,局部变量消失。</p>
</div>
-<div class="section" id="id13">
-<h2><a class="toc-backref" href="#id40">全局变量</a></h2>
+<div class="section" id="id14">
+<h2><a class="toc-backref" href="#id42">全局变量</a></h2>
<p>全局变量位于函数之外,模块之内。全局变量对所有模块内的函数可见(可读)。如果在函数内要对全局变量重新赋值,那么要先用 <tt class="docutils literal">global</tt> 声明之 (declare)。</p>
<pre class="code python literal-block">
<span class="name">verbose</span> <span class="operator">=</span> <span class="name builtin pseudo">True</span>
@@ -1282,8 +1304,8 @@ error-prone(易错)</p>
</pre>
<p>练习: 定义一个函数 <tt class="docutils literal">empty_dict</tt> 清空字典 <tt class="docutils literal">record</tt>。 要求: 不能用 <tt class="docutils literal">return</tt> 语句。 提示: 可以用 <tt class="docutils literal">pop</tt> 方法, 或者直接给 <tt class="docutils literal">record</tt> 赋值 <tt class="docutils literal">{}</tt> 。</p>
</div>
-<div class="section" id="id14">
-<h2><a class="toc-backref" href="#id41">调用函数与传递参数</a></h2>
+<div class="section" id="id15">
+<h2><a class="toc-backref" href="#id43">调用函数与传递参数</a></h2>
<p>在使用函数前要先确定函数已经被定义。</p>
<p>区别 <tt class="docutils literal">argument</tt> 与 <tt class="docutils literal">parameter</tt> 。传过去的是 <tt class="docutils literal">argument</tt> , 函数头的参数列表是 <tt class="docutils literal">parameter</tt> 。 <tt class="docutils literal">argument</tt> 的值赋给 <tt class="docutils literal">parameter</tt> , <tt class="docutils literal">parameter</tt> 是函数的局部变量。</p>
<p><tt class="docutils literal">argument</tt> 与 <tt class="docutils literal">parameter</tt> 的名字可以相同也可以不同。</p>
@@ -1304,13 +1326,13 @@ error-prone(易错)</p>
<p>以上 t 一个是全局变量一个是局部变量。</p>
</div>
<div class="section" id="flow-of-execution">
-<h2><a class="toc-backref" href="#id42">函数执行顺序 (flow of execution)</a></h2>
+<h2><a class="toc-backref" href="#id44">函数执行顺序 (flow of execution)</a></h2>
<p>函数的定义不执行,被调用时才执行。</p>
<p>顺序执行。 当遇到函数调用时,跳转到函数,执行函数,函数返回后继续执行跳转地后一条语句。</p>
</div>
</div>
-<div class="section" id="id15">
-<h1><a class="toc-backref" href="#id43">参考</a></h1>
+<div class="section" id="id16">
+<h1><a class="toc-backref" href="#id45">参考</a></h1>
<ul class="simple">
<li>Think Python 2e – Green Tea Press. <a class="reference external" href="http://greenteapress.com/thinkpython2/thinkpython2.pdf">http://greenteapress.com/thinkpython2/thinkpython2.pdf</a>.</li>
</ul>
diff --git a/LectureNotesOnPython.rst b/LectureNotesOnPython.rst
index 0aa6f53..a4cd91f 100644
--- a/LectureNotesOnPython.rst
+++ b/LectureNotesOnPython.rst
@@ -5,14 +5,48 @@ Lecture Notes on Python
:Authors:
蓝珲 (lanhui AT zjnu.edu.cn)
-:Version: 0.1 of 2019/03/30
+:Version: 0.1.1 of 2019-04-14
-非学究写书,无空洞行文。Python语法简洁,库函数全面强大,编程速度快,运行速度也不慢。
+
.. contents:: 内容目录
+
+前言
+--------------------------------------------------------------------
+
+非学究写书,无空洞行文。
+
+Python语法简洁,库函数全面强大,编程速度快,运行速度也不慢。
+
+大学里, 往往是专家教初学者。 专家也是从初学者过来的,只不过专家经常忘
+记这一点。 要知道,初学者可能只写过不到10行的程序,而专家已经写了至少
+10000行程序了。 两者的大脑构造不同。 学习是困难的, 教育或培训应把专
+家的工作流程放慢100倍! 初学者要做的是尽量快的使自己的程序量到达1000,
+这包括中间无数次除错, 每次除错都是一次微小的学习。 要想感到舒服, 只
+有积累自己的经验, 无其它捷径。
+
+面对新东西,初学者往往会问这些困惑 (ask the student's name):
+
+- 这个东西是什么意思?
+
+- 怎么来的?
+
+- 有什么用?
+
+- 怎么用?
+
+- 什么情况下用?
+
+- 为什么程序中要加入这个东西?
+
+动态的教育方式会更好。专家与初学者坐在电脑前, 逐步回答上述问题, 直到
+初学者说“我明白了”。
+
+
+
Python的发音纠正
------------------------------