所以我完成了 Replit 的免费 100 天 Python 课程
这周我完成了 Replit 的100 Days of Python。
大约两个月前,我从一个朋友那里了解到 Replit,他开始学习他们的“100 天 Python 课程”,而我之前没有任何编程经验。我对 Python 一直不太感兴趣,但一直想学,只是在真正需要的时候才学。Python 确实以对初学者友好而闻名,所以我想,从 JavaScript 转移技能不需要花太多时间。无论如何,连续 100 天每天学习一点 Python 的想法听起来是可行的,而且考虑到人们对人工智能和机器学习的热情,我觉得现在终于可以尝试一下了。还应该指出的是,在我认识的那些有编程知识、参加过训练营或在工作中使用编程的人中,几乎所有人都学过 Python。
抛开那段介绍不谈,我确实觉得这门 Python 课程值得全面评测,因为在我看来,它是我上过的最好的编程课程之一,尤其适合完全的新手。如果你已经会编程,可以很快地完成(我64天就完成了)。课程页面上最有趣的功能之一是名为“旅程地图”的可视化课程路径,它会显示当天有多少人开始学习这门课程。如你所见,第一天就有超过22.5万人开始学习,大约11.4万人进入了第二天,这基本上相当于第一天的50%。
在所有开始的人中,截至撰写本文时,只有不到 1000 人成功完成了第 100 天(是的,包括我)。
从更直观的角度看,每 1000 个开始学习这门课程的人中只有 4 人能够完成课程。我不知道 0.4% 的完成率是否低,因为我没有其他课程的数据可以比较,但从我自己的经验来看,如果很多人发现自己在学习这些内容时遇到困难,甚至到了退学的地步,我不会感到惊讶。如果你碰巧也是这样,别担心,可能还有很多人和你一样,原因可能是课程本身,而不是你缺乏理解。话虽如此,这门课程有很多优点,其中一些你可能在其他地方找不到,甚至在面对面的课堂上也找不到。这就是为什么我认为如果那些学习代码的人因为挑战太难而半途而废,那将是一种遗憾。
在这篇评论中,我将讨论一些事情,即:
对于那些想要 TL;DR 的人,请直接跳到这里的结尾。
课程概述
课程和课程结构
课程共有 100 节课,每节课预计在一天内完成。这些课程的格式大致相同,点击 repl(也就是课程的“文件”或链接)后,您将看到以下主要部分:
- 您可以在视频课程中跟随讲师 David 讲解课程内容(您可以在 Replit 自己的 YouTube 频道上观看该课程,那里也有该课程的播放列表)
- 多页书面教程中包含课程内容的区域
main.py
包含您编写所有代码的文件的区域- 打开了控制台选项卡的区域(还有一个 shell 选项卡)
- 绿色的“运行”按钮,您可以在此运行或停止处理代码。
- 顶部附近还有一个蓝色按钮,您可以在课程结束时完成挑战后单击该按钮。
需要记住的一件事是,只有完成当前课程才能解锁下一课,因此完成后请务必单击蓝色按钮!
至于课程内容,你可以看到类似概览或教学大纲的内容。在学习中心,除了“旅程地图”之外,还有一个“旅程列表”视图,简要显示每一天或每节课的描述。即使你还没有完成其他课程,你仍然可以浏览“旅程列表”,了解接下来的学习内容。我发现这很有帮助,因为你可以了解接下来的课程内容,对一些人来说,这可以给他们一些期待,激励他们学习。
课程内容
对于一门长达100节课的课程来说,我认为他们想要涵盖的内容相当宏大。第一天,你会学习最基本的指令,print()
比如在控制台上打印一些内容;第100天,你会使用一个库从网页上抓取信息,然后通过设置好调度程序的电子邮件将信息发送给自己。以下是一些你将要学习的内容(我知道,如果你以前没听说过这些术语,可能听起来很奇怪):
- 设置和使用变量
- 使用字符串、数字、列表、字典
- 使用
for
和while
循环 - 编写子程序(或函数)
- 使用数据库、身份验证和环境变量(即秘密)
- 使用诸如
datetime
和之类的库来补充我们的任务random
(这将被大量使用) - 使用 GUI(例如 tkinter)代替控制台
- 使用 Flask 构建网站和服务器(是的,该课程涵盖基本的 HTML 和 CSS)
- 使用 API 检索数据
- 使用人工智能完成各种任务
挑战与项目
如果课程内容丰富,大多数日子都会包含挑战,但有时也会安排项目日,无需上课。无论是挑战还是项目,课程都会确保你有机会运用所学知识,构建大量程序。完成挑战或项目也能让你顺利进入下一课,所以如果你在某一课上遇到困难,可以先学习一段时间。
以下是我在这 100 节课中构建的一些东西:
- 石头剪刀布游戏,我可以和另一个人对战
- 一款“Mokébeast”模拟游戏,我可以创造自己的Mokébeast,然后让它们投入战斗
- 使用 tkinter 制作的“选择你自己的冒险”故事游戏
- 待办事项列表管理器,我可以在其中添加、查看或删除任务
- 一个秘密日记,我需要输入正确的凭据才能访问应用程序并添加条目
- 展示我的投资组合和信息卡的网站
- 仅允许 Replit 用户使用和访问聊天的社区聊天网站
- 一款应用程序,可以抓取网站上我可能感兴趣的活动,并在出现新活动时通过电子邮件将信息发送给我
我认为这些项目都可以作为作品集的独立项目。我经常会随意添加各种花哨的功能,尤其是在提升用户体验方面。在学习这门课程之前积累足够的编程知识无疑对这方面很有帮助,而且我在定制项目的过程中也获得了很大的乐趣。
课程交付
作为一名曾在学校系统工作过的教育工作者,我倾向于对课程内容的教学方式持相当批判的态度。我认为很多人把教和学等同起来,虽然两者确实是相辅相成的,但仅仅因为你“教”了一些东西,并不意味着学生就学会了。
经过这 100 天,我可以自信地说,是的,这门课程教会了我如何用 Python 编写代码,而且与我参加过的许多其他课程相比,这门课程总体上做得相当不错。这要归功于老师 David,他非常努力,在视频演示甚至课程后半部分的解答视频中都投入了大量精力。很难找到一位能够循序渐进地引导学习者理解困难概念的老师。关键在于他充满活力的个性,我认为这对于与学习者互动以及在他们进行一些艰难的脑力劳动时保持他们的兴趣和动力至关重要。对一些人来说,在编程方面可能已经存在很多心理障碍;有一位像 David 这样的老师真的有助于让这段旅程变得更加愉快。即使他教编织,我也会感到失望。
观看 David 编写代码时,可以暂停视频并在 repl 中尝试代码,这是学习的关键,也是重复的关键。每节课都建立在你学到的知识之上,因此你不断有机会练习编写和修改代码。当然,你也可以选择将你编写的内容复制粘贴到其他课程中;对我来说,我尽可能从头开始编写所有内容,因为重复是学习的途径。
2. 值得称赞的部分
以下是我真正喜欢这门课程的五个方面:
大多数课程都是简短的
有时候我下班很晚才回家,但我还是会确保自己能完成一两节课。这些课程的设计方式是,你需要大约30分钟来完成包括挑战在内的所有材料,但有些挑战和项目可能需要更多时间。
项目具有实际应用
也许我不能对所有项目都这么说(参见 Mokébeasts),但有时你可能只需要一个石头剪刀布游戏来逗小孩子开心,或者你可能想在网上搜索产品价格的变化,又或者你可能需要建立自己的作品集(这绝对是必要的)。至少,foo bar
这里没有东西。
内容涵盖 Python 编程的很多方面
正如我上面列出的内容所示,他们在这100天课程中确实涵盖了很多主题。我认为对于许多需要使用Python来工作或求职的人来说,你在这里学到的技能可能足以作为基础。至少你可以编写选项菜单、构建服务器并使用AI!
您可以在 Replit IDE 中编写代码,同时观看视频指导
与许多其他课程和教程不同,你只能被动地观看讲师的讲解,而在这里,你可以实时编程,并在完全相同的环境中观察代码的运行(或不运行)。当你按照视频指导操作时,David 会要求你暂停视频并亲自尝试代码。如果你是新手,那么当你的编码环境与屏幕上显示的相同时会很有帮助,因为你只需专注于编写代码,而无需花费不必要的时间去弄清楚文件夹窗格在哪里以及如何运行代码。事实上,在第一节课中,David 会引导你使用 Replit IDE,帮助你熟悉它的功能。
Replit IDE 让初学者的学习变得异常轻松,无需安装软件和软件包;只需点击 fork repl 的课程链接,即可开始学习。他们无需处理不同的程序,甚至无需处理界面不同的同一程序的旧版本。另一个做到这一点的学习平台是 Scrimba(也是一个优秀的提供商),尽管 Scrimba 的指令是通过 Scrim 的音频而不是视频形式提供的。这或许只是个小问题,但对于一些视觉学习者,尤其是有听力障碍的人来说,能够看到老师的脸并阅读字幕,对他们的学习非常有效,这也引出了我的最后一点……
教学方式生动有趣
这可能是最重要的一点。即使你做到了以上四点,如果教练的精力和热情不够,还是会有一些不足。再次感谢你,David!
3. 打嗝乐队
正如开篇所述,这门课程并非完美无缺,我怀疑其中一些缺陷可能会阻碍学习者的进一步进步。以下是我发现的四个问题。
有些内容可能对学习者没有吸引力
我不玩电子游戏,所以不太喜欢那种游戏库存应用,或者那种可以创建角色并与之战斗的应用。还好,这些挑战相对较短,我很快就完成了。但至少从YouTube课程的评论来看,我明白有些学习者真的不热衷于游戏开发。如果能设计一些包含相同技能的挑战就更好了,但最终成品也可能是大多数人觉得有用的东西,比如写一份简单的购物清单,或者列一份想去的餐厅清单,然后随机选择一家让你去。
有些说明可能不够清楚
我曾经有过这样的经历:读完挑战要求后,我却不确定自己到底需要做什么。例如,在第25天,我们需要编写一个程序来创建一个电子游戏中的角色,并通过子程序随机生成其属性值。
我记得我通过编写上述掷骰子的子程序完成了第一步,然后我对这个子程序的用途感到困惑,因为没有额外的解释。我按照第二步和第三步的说明编写了另一个子程序,但我完全没有想到第一步中的掷骰子子程序会在第二步中使用。在学生巩固已有知识的基础上,搭建脚手架至关重要;即使是像“使用你在步骤1中编写的子程序”这样简单的说明就足够了。另外,我不知道这是否与此相关,但无论如何,我的母语是英语,所以在大多数情况下,阅读理解应该不成问题(除非是在睡眠不足的情况下操作)。
有些课程存在不一致、错误或缺少资源
当控制台因为你在代码中编写的内容而显示红色错误文本时,情况还好;但如果错误来自老师的代码,对于一个完全的编程新手来说,这简直令人沮丧。你不仅要学习修复自己的代码,现在还要修复老师的代码。举个例子,第 64 天是一节面向对象编程的课程(顺便说一句,你会听到 David 说“orientated”而不是“iented”,这仅仅是因为他是英国人,所以语言变体存在差异)。以下是继承部分的代码片段:
从截图中可以看出,该方法在类和子类中talk()
都缺失了,但实际上它在教程的上一页中是存在的,只是不知何故遗漏在了这一页。无论如何,按原样运行这段代码肯定会出错。接下来的代码片段又包含一个错误:animal
bird
在子类中bird
,初始化被排除color
在第二个参数之外,但它显然出现在初始化方法中,并且也出现在polly
子例程调用中传递“Green”的变量赋值中。此外,课程中提到None
在初始化之前将所有特性设置为“”,但在子类中color
却没有设置None
。这实际上不是一个错误,也不会被标记,但这确实是一个不一致之处,可能会让学习者感到困惑,因为他们可能会想知道为什么在这种情况下不需要这样做。
一些课程也存在资源缺失的问题。比如关于 Flask 网页构建的课程,有些图片在 repl 中找不到,尽管教程里已经把这些图片作为说明的一部分了。最后,我不得不自己下载图片。
某些挑战要么太难,要么需要尚未教授的技能
有些挑战我花了一天多的时间才完成,因为我下班回家后只有一个小时左右的时间,而一个小时根本不够。有时可能是因为挑战涉及多个部分,如果不参考以前的代码,从头开始构建多个部分可能会花费一些时间。还有一些挑战需要我投入更多时间,因为需要创建额外的非代码资源,比如创作图画小说的挑战,我就需要在网上搜索故事插图。(顺便说一句,如果他们真的提供挑战所需的内容,而不是让我自己去找插图故事就好了,其实这并不容易。)
不过,有几次挑战确实太难了,比如第66天的计算器挑战,那是tkinter的第一课。在挑战课上,我们学习了如何在屏幕上放置文本和输入,其中一项任务是在文本框中输入一些数字,然后查看这些数字相加的结果,结果显示在窗口中的文本中。
import tkinter as tk
window = tk.Tk()
label = 0
def updateLabel():
global label
number = text.get("1.0","end")
number = int(number)
label += number
hello["text"] = label
hello = tk.Label(text = label).grid(row=0, column=1)
text = tk.Text(window ,height=1, width = 50).grid(row=1, column=1)
接下来是本课的挑战,如下:
这听起来很简单,但如果你以前做过计算器,你就知道这其中涉及多少逻辑。这节课甚至之前课程中教授的技能可能不足以让学习者独自完成挑战。这有点像第一课教一个人1 + 1 = 2,然后让他们把10年的银行利息累计起来(顺便说一句,这也是挑战之一),然后再讲解如何用乘法来解决这个问题。无论如何,我唯一庆幸的是,第66天的挑战不需要添加小数点。至少对我来说,我利用这个机会练习了如何构建计算器,而不需要参考我写过的其他代码,但最让我心动的是,我怀疑是不是有可怜的家伙已经完全放弃了。
改进建议
我在这里的反馈主要来自教学角度,但也有一些内容对非教学背景的人来说可能适用。我也意识到其中一些内容可能无法实现,因为课程包含视频内容,而重做这些内容可能不太现实。无论如何,以下是三条建议:
-
在课程开始时列出课程目标和主题,并确保挑战仅涵盖确切的目标和主题。挑战应该足够易于管理,并且应该专注于课程中教授的技能,而不是过多的额外技能(甚至是非编程技能),无论这些技能是否已经教授过,或者更糟糕的是,尚未涵盖。例如,在计算器挑战中,课程的很大一部分内容是关于使用输入框的,包括教程中关于数字相加的示例。然而,挑战省略了输入部分,而是要求使用lambda函数,而这在课程中根本没有涉及,只在“提示”部分列出(但这些提示默认都是隐藏的,除非你点击进入该部分)。此外,为了让我的计算器能够正常工作,我不得不添加大量的if/else语句,而这实际上并不是课程的重点。换句话说,我觉得挑战的很大一部分实际上并不是关于如何运用课程中学到的技能。如果我要重写这个挑战,我会把它做得更小、更可行,比如小费计算器,你只需要在输入框中输入两个数字。
-
创建课程内容后,请仔细检查,并在必要时进行修改和更新。课程内容中的错误会让学习者感到沮丧,有时甚至会损害他们的学习。我在 Replit 社区论坛上看到一篇帖子,一位用户试图找出为什么其中一节课的代码无法运行,结果发现代码中存在错误。我注意到,尤其是在后期课程中,错误和不一致的情况出现得更频繁。此外,自课程创建以来,Open AI 库也经历了几次更新,部分代码似乎已经无法使用。有时,当原始内容不可用时,我还需要发挥创造力,为挑战赛找到合适的内容,例如 Replit 社区活动页面,该页面是网络数据抓取挑战赛所需的,但很长时间没有发布新的活动。
-
尽量选择适合大多数用户且易于理解的主题和内容。在写作时考虑到万维网的场景确实很难,但这确实有助于直观地了解哪些类型的用户可能会使用这些材料,尤其是在用于学习目的时。我发现有些内容可能不适合某些用户或对某些用户来说难以理解,例如 Open AI API,它在我目前所在的地区不可用,所以我需要寻找替代方案。就主题而言,有些课程有些不敏感(甚至可能有些幼稚),例如编写一个侮辱性程序,这可能会激起那些遭受过欺凌或持续言语辱骂的人的共鸣。也许有些用户会觉得 David 不断拿自己的秃头开玩笑很有趣,但对我来说,这些关于秃头的笑话过了一段时间就让人厌倦了。有时,某些文化背景之外的人可能无法理解这些内容,例如 BINGO 和 Hangman 这样的游戏,可能只在世界某些地区才能玩。我确信还有其他选择,如果没有,至少以观众第一次看到的方式介绍和解释内容会很有帮助,而不是假设他们应该知道石头剪刀布是怎么玩的。
结论
总的来说,《100 Days of Python》以其引人入胜的教学风格,是一门非常棒的课程,我强烈推荐给所有学习者,无论你是完全的新手还是经验丰富的编程爱好者。但请记住,你可能会因为内容的难度、某些说明的不清晰,甚至只是代码中的简单错误(这真的很遗憾)而遇到一些困难。我建议你参考其他材料来补充你的学习,而不是仅仅依赖课程材料。即使是一个简短的 Python YouTube 教程也可以,它能让你从另一个角度了解 Python 的使用方法。我希望学习这门课程的初学者即使遇到困难也能保持动力和鼓励。对于那些遇到困难的人,Replit 上有一个 100 Days of Code 论坛,学习者可以在那里提问并获得帮助。我之前提到过这门课程是完全免费的吗?就免费内容而言,你很难找到像这样的课程。如果您想学习 Python,请尝试一下。
你也参加了这门课程吗?你觉得哪些内容对你有帮助?或者你目前在学习过程中遇到困难了吗?欢迎在下面的评论区分享你的想法。
文章来源:https://dev.to/elaineleung/so-i-completed-replits-free-100-days-of-python-course-2ln