我想向你们推荐一门最好的python课程——CS61A学习笔记(一)

CS61A是美国伯克利分校给他们大一相关专业学生的一门必修课,可谓是神课
从开始学习到CS61A的第一周,我开始深刻感受到这门课和我们随便在B站或者知乎上看到的视频教程完全不同。以往的学习编程视频教程,就是录了一大堆然而都是一个一个语法进行介绍,系统学习好像也没什么不妥,但是看完发现好像并没有学到什么,而且还花费了很多的时间。然而,上CS61A给我的感受就是无处不动手,无处不实践。

即使是我已经会python的基本语法知识,这门课的学习还是让我觉得有些吃力,学的第二天就让学生写一个Hog(掷骰子)的小游戏,国内基本没有这样的教学模式。相信只要能够坚持上完这门课,对你的编程能力一定是质的飞跃。

课程的话可以在B站找到Spring2018版本的,不过是英文字幕,是时候逼逼自己练英语听力了。这门课程还提供了作业网址,也不需要你翻墙就可以实现基本完整的学习。

下面是我在CS61A做的第一个工程 HOG:

涉及的知识点记录一下:

高阶函数:

之前从来没见过这种骚操作,在函数里面嵌套函数,再在外层函数返回构成闭包。

例子就拿我在工程中遇到的举:

def announce_highest(who, previous_high = 0, previous_score = 0) :
 """Return a commentary function that announces when WHO's score
 increases by more than ever before in the game.
 >> > f0 = announce_highest(1) # Only announce Player 1 score gains
 >> > f1 = f0(11, 0)
 >> > f2 = f1(11, 1)
 1 point!That's the biggest gain yet for Player 1
 >> > f3 = f2(20, 1)
 >> > f4 = f3(5, 20) # Player 1 gets 4 points, then Swine Swap applies
 19 points!That's the biggest gain yet for Player 1
 >> > f5 = f4(20, 40) # Player 0 gets 35 points, then Swine Swap applies
 20 points!That's the biggest gain yet for Player 1
 >> > f6 = f5(20, 55) # Player 1 gets 15 points; not enough for a new high
 """
 assert who == 0 or who == 1, 'The who argument should indicate a player.'
 # BEGIN PROBLEM 7
 "*** YOUR CODE HERE ***"
 def say(score0, score1) :
 #判断玩家
 if not who :
score = score0
 else:
score = score1
#记录本次差值
sub = score - previous_score
if sub > previous_high:
if sub == 1 :
 print(sub, "point! That's the biggest gain yet for Player", who)
else :
 print(sub, "points! That's the biggest gain yet for Player", who)
 return announce_highest(who, sub, score)
else:
return announce_highest(who, previous_high, score)
return say
# END PROBLEM 7

益智游戏,可以玩一下
在这里插入图片描述
最近没那么多时间发博客了,先继续刷这门课吧!

希望对读者有所帮助,喜欢的话可以关注一下我的公众号,我会把学习笔记发在上面,大家可以一起共同学习!

在这里插入图片描述

Alt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章