Skip to content

xiaohaimiao/Python-Learning

Repository files navigation

陪伴小学生学习 Python 笔记:2024 年寒假

——前言


说明:

本文内容较长,持续更新中,连载于:github/xiaohaimiao Python 学习笔记

githubmarkdown 编辑器中阅读本文时,可打开其目录功能方便浏览和跳转。

  • github 页面中,点击文档右上角的目录图标;

  • marktext 编辑器中,按 Ctrl-K


目录

前言

零:关于 “青少年编程” 的看法

一、算法入门练习

二、算法进阶练习

三、算法高阶练习


前言

目前有很多计算机编程方面的视频教程,其中大量免费的优秀视频。

也有不少专门针对编程竞赛、算法、数据结构的优秀教程。

——但两者之间还缺了个衔接,尤其针对小学生、初中生。

这类视频教程,

  • 要么太过于侧重于【速成】,往往是那些培训机构拿来忽悠在职人员【掌握一门技能让你工作更轻松、收入更高】;

  • 要么太按部就班,还是延续老的套路一个语句一个函数的讲,很枯燥又学得没底;

  • 而算法竞赛类视频也有,相对少,而且往往上来就很【刚】——小朋友学起来很难跟上;

  • 算法和数据结构的课程,质量不错的也越来越多了,但还是比较偏向成年人的理解能力;

——针对小学生、初中学生,系统性讲解和提高的,没找到合适的,可能付费群里才有更好的吧。

所以,我让孩子跟着那些优秀的教学视频自学、掌握入门的语法、会编写函数之后,

寒假里,我带着孩子系统性地巩固了一遍入门级的编程练习 + 趣味数学小知识,尝试给小学生学习了一些算法入门的内容。

整理并共享出来,供有兴趣的孩子、家长参考。

有任何建议、意见,欢迎提出,谢谢。


学编程的目的和路线选择

最后,重申一下我带孩子学编程的目的,仅供参考:

  1. 不是为了将来从事软件开发行业——更何况将来的职业变化如何,根本无人能预测,不要过早地限制孩子将来的可能性

  2. 生成式AI 逐步开始普及,能代替更多基础工作 ——虽然不会淘汰真正的职业人才,更加需要职业人士去分解问题、对 AI 提出要求、评审和验收,组装起来解决问题。因为目前阶段的 AI 不是真正意义上的 人工智能——它根本不知道自己在做什么,也评价不了效果,甚至无法确保质量; ——但会减少很多低级岗位,导致【初入行的新手,更难获得实践机会去提高水平】

  3. 编程是基本技能,哪怕不从事相关行业,会编程的人将能比不会编程的人更懂怎么利用好、指挥好 AI——分解、提问、验收、组装,就这么简单;

  4. 编程根本不需要到大学去学,大学应该是学习专业领域的知识、做科研的思维方式等等的地方。换句话说,提前学就是为了不用在大学去学编程的基础课

  5. 学编程,主要目的是锻炼 自学能力、解决问题的能力——这两方面强,做什么都不会差。生活中随处可以锻炼解决问题的能力,只是相对来说,在学习编程、用编程来解决各种实际问题的过程中 锻炼效率更高

两条基本路线:

  1. 算法竞赛路线:CSP/J、CSP/S、NOI 信奥赛

    在初中逐步加强算法和数据结构,先参加 CSP/J,再到高中参加 CSP/S,杀入本省 NOIP 最高,争取进全国50强。期间,熟练掌握了 Python 之后,需要转 C/C++,因为这几个比赛一直都是 C/C++,其它大部分白名单赛事则大部分支持 Python 少部分支持 C/C++;

    我在中学时参加过 NOI 前身筹备阶段的全国大赛(那时候是 Pascal),在全国也拿到过好成绩,高考前放弃了本省某大学保送机会,加40分也因为特殊原因没用上。

    我自己孩子,其实他如果有兴趣并积极争夺 NOI,那最好——因为这事儿不是每天坐在钢琴凳上几个小时苦练能搞定的;而且,我相信喜欢并能在NOI拿好名次的孩子,就算没有清北的特招,凭自己本事考也不难。

    一句话,培养兴趣,然后随缘

  2. 应用开发路线:主打实战能力,类似于 Hackthon 黑客马拉松/编程马拉松。 这条路更实际也更重要——我给孩子推荐的榜样是稚晖君

    即便是这条路,算法、数据结构等,扎扎实实打基础同样很重要,甚至后期一样要去 LeetCode 刷算法题,而且将来去大厂求职时也是必须的。只是,没有 NOI 那类那么夸张。

    有个美国加州一次 Hackthon 现场采访参赛选手的视频,推荐看看:

    选手们普遍在大一暑假就开始在各大厂实习,如亚马逊、特斯拉、谷歌、微软、苹果等,时薪 50美刀左右,普通则20美刀。

    后续,我会带孩子用 Python 等语言,把软件、硬件、AR/MR(增强现实/混合现实)、AI,几方面的知识结合起来,做一些应用,并争取在初中能在 Steam 发布自己的游戏。

两条路线不矛盾,重点是中学就学会编程、打好基础,高中试试看能否进 NOI 并取得好成绩,就算不参加 NOI 一样要上 LeetCode 刷算法

——重点做好时间的取舍,以及提高学习效率

另外,建议想走前一条的家长朋友们,不要太功利,也不要被机构蒙骗了

蓝桥杯是什么情况?

有些宣传把蓝桥杯说得太重要了。稍微了解了一下,个人看法:

可以将“蓝桥杯”视为学习《数据结构》和算法后的一个全国性的水平自测。

一般情况,省一等奖不是问题,马马虎虎都能混入省二,没学过但会编程和基本的逻辑思考都能拿个省三吧。

公司会不会看蓝桥杯成绩?

——相同学历、学力、经验的情况下,多个蓝桥杯高级别的名次肯定有用, 但也没多大价值,毕竟对应的也就是计算机专业大一专业课必修水平

但不是说“蓝桥杯”的名次就是必要条件——引导你往这方面联想的都是利益相关机构。 所以,心态端正,就当作学习算法和数据结构的水平自测,测一下也好。 总之,还是拿得出手、能证明你的水平和实力的案例更重要


本学习笔记使用方式

特点: 针对每个问题,尽量一步步引导孩子自己思考,并拓展了相关的趣味数学知识、编程知识点,尽量逐步深入。

服用方式:

  • 先跟着其它优秀视频自学,达到入门水平——掌握 Python 语法、会写代码;

  • 然后跟着学习笔记的章节练习、拓展编程相关的知识和一些趣味数学知识;

  • 注意:每一个练习都要先尝试自己写,再对答案,然后再思考和修改。

  • 注意:每一个练习,都要花一点点时间,给自己的代码写上注释,尝试把它清楚地讲解给别人。

如果学的不是 Python,其它语言怎么办?

已经加入了 C 语言版本的示例代码,在每一个练习中都有提供了链接。

项目地址在:陪小学生学习 C/C++ 练习题

其实计算机语言之间,只是简单的语法略有不同,关键字大同小异,内置函数略有区别,不难看懂。

真要看不懂示例代码,最简单的方法:请教 ChatGPT,翻译一下,或者复制题目要求让它用指定的编程语言解答。

——学会利用各种工具,尤其从小熟悉利用 AI 工具吧。

例如:

请用 C++ 编写一个函数判断某个数字是否是素数?

ChatGPT 怎么用?

嗯,很好的问题。

解决问题的第一步是【会提问题】,然后【分解问题】,分而治之。

——自学就是这么开始的。

书上没教的,学着自己去找答案吧。

推荐环境和开发工具

Python 环境,先从 Windows 的商店里直接安装 Python ——不管那么多,先入门后再学习其它复杂的方式;

开发工具,有的比赛有特殊要求,有的要求用 Python 自带的最简陋的 IDLE ——不管那么多,同上,先用最简单的方法入门。

可以的话,尽快切换到套装 VSCode/PyCharm + Github + ChatGPT,暂不推荐 Code Copilot 类工具:

Code Copilot 类常见工具

Github Copilot(10$/月,大学生可申请教育版)、AWS Copilot(免费)、国内的几个免费如讯飞星火、TalkX、CodeGeex 等等,本地部署可以用 ChatGLM3(刚看到发布4了)、RWKV、Llama2 等等。

总体来说还是推荐 Github Copilot——我虽然退休很多年不写代码了,但自己在用 个人付费版 Github Copilot,因为其它几种免费的、本地部署的,与之相比都略有差距,其 GPT4 的 Chat 能力也不错(可惜不能画画)。

大学生可申请 GitHub Student Developer Pack —— Github 学生包。需要按要求验证身份,可自行了解(需要则使用浏览器的翻译功能)、申请,有很多傻瓜级的指南,可以很容易搞定。

学生包里还有很多其它资源,例如比较受欢迎的 JetBrains 全家桶(我们主要用 VSCode 暂时用不上)、云服务器资源等。

孩子在学习编程的阶段,不允许用这类工具,好好练基本功。

给孩子开了 ChatGPT,鼓励他学习使用 AI 工具,但不允许抄答案——除非你想害自己。

其它想到了又再补充,也欢迎建议,谢谢。

About

2024年寒假学习 Python 的一些小练习

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published