经过一番尝试/除了作为老师之外,我选择坚持类似的事情:
(从无到有,调整到自己的水平)
- 简而言之,什么是 Python 以及你可以用它做什么。跳过技术内容的演讲,专注于他们想做的事情:音乐、GUI、网站、重命名文件等。
- 安装Python,运行解释器。如果可以的话,使用iPython http://ipython.scipy.org/.
- 变量、基本字符串和
print()
.
- Int 和类型(包括类型错误和转换)。
- 基本微积分。给他们看
1 / 0
, 10 / 3
但不要用细节来打扰他们.
- 将微积分结果放入变量中。
- 在微积分中使用变量。
- 字符串格式设置为
%
。仅显示“%s”,就足够了并且始终有效。始终使用元组(以逗号结尾),即使它只包含一项。
- 列表、索引、切片和常见错误。然后将元组显示为冻结列表(和转换)。表明则可以相互包含。让他们继续努力,直到他们完美掌握为止: 这个非常非常重要。
- 字典,有常见错误。与元组和列表嵌套。坚持最后一点。
-
For
循环字符串,然后列表,然后元组,然后字典。
-
For
嵌套类型上的循环。变得令人讨厌。慢慢来。充分了解这一部分会改变一切。
- 字典
items()
, values()
and keys()
.
- 使用读取文件
for
, 包括IOErrors
.
- 写入文件。
- 使用方法。使用字符串作为示例显示
strip()
, lower()
, split()
, etc. 不要解释 OOP,只是如何使用方法。从现在开始多使用世界“方法”。
- 创建模块文件并使用它。仅一个模块。一切尽在其中。
- 功能(仅适用于
return
, no print()
. Forbid print()
在函数中).
- 函数参数。
- 命名参数。
- 默认值参数。
-
Try
/ Except
和例外情况。
-
Import
并创建您自己的目录模块。显示所有特殊情况(解释它需要比您想象的更多的时间)。
- 演示一些标准模块(但是不要花太多时间,只是为了展示):日期时间、字符串、操作系统和系统。避免像 itertools 这样抽象的东西,它们是程序员的梦想,但却是学生的噩梦。
之后你就可以将 OOP 带到桌面上,但它有点复杂。使用字符串、列表和文件来引入对象的概念。当他们得到它时,就开始上课。那么愿力量与你同在:-)
使用起来很诱人print
在函数中展示它是如何工作的,并且使用起来更有吸引力raw_input
. 你应该不惜一切代价避免它。第一个使得引入“返回值”的概念变得非常困难,第二个隐藏了程序的真实流程,学生们很难理解你需要链接函数,而不是向用户询问你想要的每个值。需要。
一般来说,选择一种对某件事有效的方法并坚持下去。不要展示替代方法。例如:
仅显示字符串格式%
,并忽略+
and ,
。对于那些想了解更多的人,您可以随时在讲座材料中添加一些“进一步”块。只显示for
并不是while
。您可以编写几乎 90% 的 Python 程序,无需while
. Avoid +=
。不要表明您可以将字符串/列表/字典与整数相乘。这并没有错,但会导致他们产生误解。您需要他们专注于主要概念。
不显示集合。集合非常有用,但很少使用。鼓励他们在家编码,并在他们无法解决问题时询问您。在这种情况下,显示集合是否是解决方案。认识集合需要时间和学生的大脑资源,而这些资源可以用于更常用的事情。稍后,如果没有您,他们将有充足的时间学习新工具:专注于独自学习困难或耗时的事情。
同样适用于enumerate
。有C或Java背景的同学会使用索引来循环而不是for
如果你给他们enumerate
。出于类似的原因,请保留len
, fd.read
, fd.realines
and range
如果你有时间的话,最后一门课程的标题是“高级Python”。
甚至不要考虑生成器、元类和装饰器。很少有学生能够理解这些,即使经过几个月的练习。列表理解,with
如果你觉得你的学生很聪明,可以在最后的一些课程中引入三元运算。
最终,任意执行良好做法。 PEP8 格式、良好的架构、命名约定、没有不可变的默认参数等等。他们只是现在不知道。不用担心,你是老师,你有权时不时地说“就是这样”。
哦,如果他们不从学习字节码、递归、汇编、复杂性、冒泡排序、堆栈、实现细节等开始,他们就会成为更好的程序员。你浪费时间把这些教给那些不能写出像样代码的人Python程序,他就是看不出来这到底是怎么回事。实践是运用理论的最佳工具。再说一遍,如果你准备得正确,他们稍后会自己学习其他所有内容,所以优先考虑并且不要害怕跳过概念,即使是简单/重要的概念.