Python学习之路

Guess the mumber编程游戏

这周五大致了完成了复盘工作,如果是给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:写出牛逼的代码有时候也要看运气?)