我想向你们推荐一门最好的python课程——CS61A学习笔记(一)
CS61A是美国伯克利分校给他们大一相关专业学生的一门必修课,可谓是神课从开始学习到CS61A的第一周,我开始深刻感受到这门课和我们随便在B站或者知乎上看到的视频教程完全不同。以往的学习编程视频教程,就是录了一大堆然而都是一个一个语法进行介绍,系统学习好像也没什么不妥,但是看完发现好像并没有学到什么,而且还花费了很多的时间。然而,上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
益智游戏,可以玩一下
最近没那么多时间发博客了,先继续刷这门课吧!
希望对读者有所帮助,喜欢的话可以关注一下我的公众号,我会把学习笔记发在上面,大家可以一起共同学习!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)