这周五大致了完成了复盘工作,如果是给6个月前的自己写的教程,我想有些可以提醒你做的更好。
花少量的时间掌握关键知识点 在4天的时间里完成3周的学习计划,并提交一份作业,对任何一个人来说都不容易。起初的学习方式是按部就班,不放过一个知识点的去学习,后来发现时间严重不够。遂赶紧调整策略,以掌握每节课知识要点为前提即可,不必顾全,在实际应用中反复练习。从效果来看,后一种似乎更加。详细版参见逼出来的学习方式
阳老师曾在微信中建议过:
看书应该花20%的时间掌握80%的知识
所以,6个月前你如果遇到同样的状况,请掌握这种学习方式。
完成Guess the number最大的梗在于能够将题目的要求转化为模块框图。大妈说有点和漫画一样的感觉。看着复盘的框架图,果然是一个道理:搭好框架,然后填细节。 [图片]
题目的要求可以转化为3个驱动事件,3个驱动事件通过全局变量传递信息。如果想通了这点,后面的代码就好些了。然后根据先前课程学习:
1.建立全局变量
num_range = 100
guess_number = 0
n = 7
2.定义事件驱动
2.1 new_game事件驱动
它需要实现在游戏结束时,程序直接进入新的游戏,且序列与前一次保持一致。这里通过全局变量num_range,将数据传递给new_game,以使程序判断是那种序列。
def new_game():
global select_number
select_number = random.randrange(0, num_range)
print "New game, Range is from 0 to", num_range
if num_range == 100:`
print "Number of remaining guesses is 7"
else:
print "Number of remaining guesses is 10"
2.2 range100事件驱动
它是在鼠标点击它后,能够输出要求的信息。并重新赋值n和num_range
def range100():
global n, num_range
n = 7
num_range = 100
print "New game. Range is from 0 to 100"
print "Number of remaining quesses is 7"
2.3 range1000事件驱动
它要求在鼠标点击它后,能够输出要求的信息。并重新赋值n和num_range
def range1000():
global n, num_range
n = 10
num_range = 1000
print "New game. Range is from 0 to 1000"
print "Number of remaining quesses is 10"
2.4 inpt_guess事件驱动
通过键盘输入数字,并根据赋值的全局变量来选择需要输入的信息,选择性输出需要用到if/elif/else.另外,n值需要设置递减。
操作过程中需要注意code要对其,周四调试的时找出这个问题花了不少时间。另外,最后在游戏结束时需要自动进入下一轮新游戏。
def input_guess(guess):
global guess_number, n
guess_number = int(guess)
print "guess was", guess_number
print "number of remaining guesses is ", n
if n >= 1:
n = n-1
if guess_number > select_number:
print "higer!"
print " "
elif guess_number < select_number:
print "lower!"
print " "
else:
print "correct!"
print " "
return new_game()
else:
new_game()
print " "
3.建立frame 这个没什么难度,,参照教学视频即可完成。
f = simplegui.create_frame("guess the number", 200, 200)
f.add_button("Range is [0, 100)", range100, 200)
f.add_button("Range is [1, 1000)", range1000, 200)
f.add_input("Enter a guess", input_guess, 200)
4.call new_game 这个没什么难度,,参照教学视频即可完成.
ps: 周五复盘的时候,发现自己写的代码,有一点居然没有看出。梳理出的框架图,即使周四提交作业的时候也没这么清晰.感觉能按时提交代码,有些运气。。。(btw:写出牛逼的代码有时候也要看运气?)