点上方蓝字👆关注榨汁机先生新号
学习不只是看书,还可以在实验室里打怪升级
来和榨汁机爸爸一起装备最新技术,绘制人类科学地图
做孩子眼中最炫酷的爸爸👨
榨汁机答应大家零基础编程课,终于出炉了,希望大家喜欢
学习编程最有效的方法就是实战。
编程就是把解决问题的方法写成计算机可以听懂的语言。学编程和学习英语非常类似上再多的语法课都不如和老外直接对话学的快,所以学编程也是这样,最有效的方法就是实践,打开手机或者电脑,直接开始动手写程序、运行程序来解决实际问题。
但是我们零基础,什么都不会,要怎么写?就像不去背单词和句型,要怎么和老外对话呢?
说好了是零基础,自然不能有任何门槛,所以榨汁机就尽量把一切专业的东西排除在这个课程之外,所以这次入门课程里,所涉及到所有与代码含义相关的东西,你都先不用去理解,照着搬就可以。
如果同样是拿学英语来打比方,这堂课你不用去背单词和句型,而只是先去语言的环境里浸泡一下,我这次所做的,就是带你去外语角,找个老外,我和他寒暄完之后,让他和你对话几句,而你所需要回答的内容,我已经给你写好了小抄,你只要照着念就可以完成这次对话了。
你不需要知道我为什么让你这么回答,也不需要考虑下一次要怎么回答,我们的目的是让你不再觉得这个环境高深莫测,无法接近,消除了你对编程的距离感,就算是对编程的一次成功的接触。
当然,如果你能看懂一些命令和逻辑更好,如果看不懂也没关系,大致了解一下,也是一次不错的入门。
大家不用安装任何软件,只需要在手机或电脑的网页浏览器里就可以进行学习。
准备好了嘛,现在我们开始~
废话不多说,现在大家就可以复制下面的链接,用手机或者电脑网页浏览器打开,开始编程挑战!👇
https://zhazhijibaba.github.io/pages/programming_lesson1.html
每个挑战后面,榨汁机都有答案和解释。
用这个网站的学习效果最好,你可以直接在上面试图去写程序。
如果你暂时不方便复制打开连接,榨汁机也给大家做了每一关的展示,大家可以往向下看动画演示,不过还是强烈推荐大家在有条件的情况下,到网页上自己写一下。
💪
挑战1:画一个正方形
先给大家看一个具体例子🌰:
下面这个程序会画出一个直角
可以复制下面的链接,用手机或者电脑网页浏览器打开:
https://zhazhijibaba.github.io/pages/programming_lesson1.html#%E6%8C%91%E6%88%98-1-%E7%94%BB%E4%B8%80%E4%B8%AA%E6%AD%A3%E6%96%B9%E5%BD%A2
链接打开之后应该是这样子的,点击对话框顶端的▶️按钮运行程序。
上面这个程序一共有11行代码。
其中以井字符号“#开头的行,也就是绿色字体(第1、2、3、6、8、10行),是榨汁机的评论,是写给人类看的,主要让大家明白下面一行代码是什么意思,在运行程序的时候,带#开头的代码是无效的。
计算机能看懂的有效代码只有4行:
第4行:from turtle import*(引入画图工具turtle,画画的箭头就是海龟
第7行:forward(100)(让海龟向前走100个像素
第9行:left(90)(让海龟向左转90度)
第11forward(100)(让海龟再向前走100个像素)
这里面接触到两个命令:
forward是“向前的命令,括号里面的数字代表走的像素的个数。
left是“向左转”的命令,括号里面的数字代表旋转的角度。
如果你英语基础还好的话,也应该明白backward(),和right()这两个命令的含义了吧。
现在你的挑战是,用你所知道的这几个命令,给这个程序加上几行代码,重复画直角的过程(转向90度,前进100个像素),从而画出一个正方形。
(注意,你加入的代码要从12行开始写起,每行代码的左端要和前后行对齐。
挑战1的答案
👇

复制下面的链接,用手机或者电脑网页浏览器打开,也可以直接看挑战一的答案:
https://zhazhijibaba.github.io/pages/programming_lesson1.html#%E6%8C%91%E6%88%98-1-%E7%AD%94%E6%A1%88
💪
挑战2:画一个完美五角星
既然我们学会了画正方形,那么我们可不可以调整折线的角度,来画一个完美的五角星呢?
复制下面的链接,用手机或者电脑网页浏览器打开:
https://zhazhijibaba.github.io/pages/programming_lesson1.html#%E6%8C%91%E6%88%98-2-%E7%94%BB%E4%B8%80%E4%B8%AA%E5%AE%8C%E7%BE%8E%E4%BA%94%E8%A7%92%E6%98%9F
链接打开之后应该是这样子的,点击对话框顶端的▶️按钮运行程序。

有效代码有5行:
第4行:from tuetle import*(引入画图工具turtle,画画的箭头就是海龟
第7行:forward(100)(让海龟向前走100个像素
第9行:left(144)(让海龟向左转144度)
第11forward(100)(让海龟再向前走100个像素
第13行:left(144)(让海龟向左转144度)
海龟向左转144度是因为,五角星的每个角是36度,所以在每个角处,海龟要向左转180-36=144度。
你的挑战是,给这个程序加上几行代码,画出一个完整的五角星。
提示,只需要重复这个画36°角的过程数次即可
挑战2的答案
👇
复制下面的链接,用手机或者电脑网页浏览器打开也可以查看:
https://zhazhijibaba.github.io/pages/programming_lesson1.html#%E6%8C%91%E6%88%98-2-%E7%AD%94%E6%A1%88
💪
挑战3:让海龟爬到指定位置
我们可以把一些可以重复利用的并屡试不爽的代码放在一起,我们称这段代码为一个“套路”。
例如上面程序中,第9行到第17行,就是一个套路,我们用“def initial()”表示我们要创造一个名字叫“initial”(初始化,让画笔移动到下方)的新套路(第9行),然后把套路的具体过程放在其下方。
注意,套路里面的代码(第10行到第17行)的左端要比套路定义行(第9行)往右平移一段距离,以区分套路以外的代码。
你的挑战是,补全套路“initial”(第9行到第17行,事实上你只需要写第13行和第15行两行),让海龟爬到屏幕下方中央位置。
用手机或者电脑网页浏览器,打开下面的链接可以进行操作:
https://zhazhijibaba.github.io/pages/programming_lesson1.html#%E6%8C%91%E6%88%98-3-%E8%AE%A9%E6%B5%B7%E9%BE%9F%E7%88%AC%E5%88%B0%E6%8C%87%E5%AE%9A%E4%BD%8D%E7%BD%AE
挑战3的答案
👇
复制下面的链接,用手机或者电脑的网页浏览器打开,也可以直接查看挑战3的答案:
https://zhazhijibaba.github.io/pages/programming_lesson1.html#%E6%8C%91%E6%88%98-3-%E7%AD%94%E6%A1%88
💪
挑战 4: 画一个Y字形的树杈
接下来我们就要正式开始画树了,树虽然有很多的枝杈,但是所有的枝杈都是由Y字形的树杈构成的。
你的挑战是,补全套路“drawTree”(第8行到第29行,事实上你只需要写第20、22、24三行),画出一个Y字形的树杈。
你要做的是:在第20行输入代码“right(40), 在第22行输入代码“forward(60), 在第24行输入代码“backward(60)
用手机或者电脑网页浏览器,打开下面的链接可以进行操作:
https://zhazhijibaba.github.io/pages/programming_lesson1.html#%E6%8C%91%E6%88%98-4-%E7%94%BB%E4%B8%80%E4%B8%AAy%E5%AD%97%E5%BD%A2%E7%9A%84%E6%A0%91%E6%9D%88
挑战4的答案
👇
复制下面的链接,用手机或者电脑的网页浏览器打开,也可以直接查看挑战4的答案:
https://zhazhijibaba.github.io/pages/programming_lesson1.html#%E6%8C%91%E6%88%98-4-%E7%AD%94%E6%A1%88
💪
挑战5:画一个有5层树杈的树
有了挑战4中画Y字形树杈的套路“drawTree,我们就可以不断的重复调用“drawTree,树杈上再长树杈,就能画出更复杂更真实的树了。
你的挑战是,补全新套路“drawTree”(第8行到第26行),画出一个有5层树杈的树。
你要做的是:在第21行输入代码“right(40), 在第22行输入代码“drawTree(level -1)


注意,每行代码的左端要和前后行对齐。
用手机或者电脑网页浏览器,打开下面的链接可以进行操作:
https://zhazhijibaba.github.io/pages/programming_lesson1.html#%E6%8C%91%E6%88%98-5-%E7%94%BB%E4%B8%80%E4%B8%AA%E6%9C%895%E5%B1%82%E6%A0%91%E6%9D%88%E7%9A%84%E6%A0%91
挑战5的答案
👇
复制下面的链接,用手机或者电脑的网页浏览器打开,也可以直接查看挑战5的答案:
https://zhazhijibaba.github.io/pages/programming_lesson1.html#%E6%8C%91%E6%88%98-5-%E7%AD%94%E6%A1%88
💪
挑战 6 :设计一颗自己的树
在前面挑战5中,我们成功画出了有5层树杈的树。如果想画出有更多变化的树怎么做呢?我们可以在程序中加更多的变量,比如:树枝的级数,树枝的角度,树干的长度等。
你的挑战是,修改变量设定(第47行到第55行),画出一个你最喜欢的树。
用手机或者电脑网页浏览器,打开下面的链接可以进行操作:
https://zhazhijibaba.github.io/pages/programming_lesson1.html#%E6%8C%91%E6%88%98-6-%E8%AE%BE%E8%AE%A1%E4%B8%80%E9%A2%97%E8%87%AA%E5%B7%B1%E7%9A%84%E6%A0%91
如果不对程序进行任何修改,画出来的树应该是下面这个样子的。如果修改(第47行到第55行)中level, ratio, theta1, theta2,length的数值,则可以画出不同的树。
希望你能画出比上面这个更有趣的图案。
树的三维立体模型
前面画的二维平面树虽然看起来简单,但是其中蕴含了植物生长的基本原理。这个原理是匈牙利生物学家LinderMayer于1968年提出的,被称为L-系统。L-系统可以按规则进行迭代,就像用上面程序中不断的重复使用drawTree套路一样,生成不同类型的植物的几何图形。
我们还可以对上面的二维平面树模型进行扩展,构建出树的三维立体模型。
方法也很简单,先把树枝生长“drawTree套路里面的平面角度替换成三维立体角度,然后再重复利用三维的“drawTree套路,就可以画出下面动图中的三维立体树了。
当榨汁机完成了这个三维立体树模型之后,兴奋得show给橙子看。
没想到这个女文青一脸不屑的样子,说这个树太丑了,怎么没有叶子?
神啊,救救我吧,女文青这种生物怎么这么可怕,就不能透过外表看看事物的本质吗?
这个模型虽然外表不漂亮,但是里面蕴藏了多么深刻的生物生长的哲理啊,有没有?!
榨汁机强迫症发作,怎么能这么轻易的让女文青打败呢?好好好,没有叶子对吧?我就给你加上点叶子,满树枝的钻石叶子,这下满意了吧!

虽然这个有树叶的三维立体树模型看起来更加真实,但是榨汁机还是更喜欢那个只有树枝的,因为更能感受到分叉再分叉那种编程的美感。
对上面的三维立体树模型感兴趣的同学可以从文末的链接下载程序源代码。
三维模型现在是一个在高速发展的产业,无论是3D游戏,还是3D电影都是基于一个个最基本的三维模型。科幻大片里面的场景和物品可能都是从不同的三维建模公司购买的。
比如今年年初大火的国产科幻大片《流浪地球》里面,用到的机甲机器人和加特林机枪都有很成熟的3D模型,被很多科幻片用到过榨汁机在这里要狠狠的表扬一下良心电影《流浪地球》,那里面的3D模型和特效不知道要烧掉多少钱。
其实3D模型不用卖给电影大片,直接放在网上就可以卖钱。上面就是一个卖3D模型的网站截图,一颗树的3D模型就可以卖到15美元哦。
有木有发现一条发家致富的财路呢?编程赶紧学起来,改改计算机程序代码,每天做上几万个3D模型,不就早早的财富自由了?
会编程的路人也可以玩艺术吗?
如果你觉得上面的计算机模型比较虚幻,不实在,只能在电脑里看,又不能摆在柜子上,而且真正的艺术品应该是艺术大师精雕细琢出来的,哪是一个不懂艺术的程序员,随便敲几行代码就能做出来的?
对不起,这些都不是问题,因为程序员的救星3D打印机来了。
榨汁机这个艺术白痴做的3D模型,不需要任何手工技艺,就可以轻松用3D打印机转化成实实在在的物件。
△3D打印机打印树模型的过程
最终打印出一非常卡通的树
△一棵没有叶子的冬天的有点凄凉的树
△还有一棵树杈被捡了柴火的更凄凉的树
看了上面这些通过3D打印机打印出来的不怎么艺术的艺术品之后,你可能会问:难道程序员和艺术大师的差距就是几行代码这么简单吗?
虽然榨汁机这里只是抛砖引玉,但我相信在不远的将来,程序员借助人工智能的帮助,真的可以做出令人惊叹的艺术,甚至超越人类
也许在未来的人工智能时代,人脑将不及电脑,艺术将沦为参数。
我们人类唯一能自救的方法可能就是学会电脑语言。既然打不过电脑,当不了电脑的老板,我们就加入电脑,给他们打工好了。
P.S.下面是本文所用到的程序源代码的下载链接:
https://github.com/zhazhijibaba/zhazhijibaba_programming_lessons/tree/master/programming_lesson1
更多榨汁机先生的文章点击蓝字即可跳转
和榨汁机先生一起
做孩子眼中最炫酷的爸爸
👇
长按识别二维码即可关注
继续阅读
阅读原文