总结如下:
1、要想写出编程,必须亲自玩汉诺塔的游戏,至少玩到7层以上!
2、要自己尝试去写,不用直接看答案,思考过程比答案更痛苦,也更有趣!
3、关键之处在于递归里的第一个move(n-1,a,c,b)。意思是把 (n-1) 个圆盘移动到 b。这个move的动作之后需要最下面一个盘移动a-c,就是print a-->c。
4、之后再把b上面的盘移动回到c,就是move(n-1,b,a,c)
1、要想写出编程,必须亲自玩汉诺塔的游戏,至少玩到7层以上!
2、要自己尝试去写,不用直接看答案,思考过程比答案更痛苦,也更有趣!
3、关键之处在于递归里的第一个move(n-1,a,c,b)。意思是把 (n-1) 个圆盘移动到 b。这个move的动作之后需要最下面一个盘移动a-c,就是print a-->c。
4、之后再把b上面的盘移动回到c,就是move(n-1,b,a,c)
2015-06-07
思考一周,亲自玩汉诺塔的游戏,玩到10层(用半个小时才做完,正确步骤是1023步,我用了1110步,错了87步)。对游戏有实际操作理解后,才进行编程。 当时觉得难点如下: 1、如何在移动的时候,还打印出正确的步骤。 2、开始觉得n是偶数和奇数,第一步移到的塔不一样。(偶数是b塔,奇数是c塔)。觉得是否要添加一个判断语句。 3、递归函数里,要写几个特例,开始我写到了n==1,n==2,n==3的三种情况。觉得应该分不了这么多。 4、递归函数里,要递归几次(就是要用到move几次?)。我是只用了一次,就是最后一个move(n-1,b,a,c)写对了。所以显示出来的步数少了,比如n=4时,才11步。
2015-06-07
for key,value in d.items():
print key,':',value
#结果为#lisa : 85
#adam : 95
#bart : 59
并不是初始化序列,因为dic是无序的
可以把key和value分开成list,然后zip(key,value)
keys = ["adam", "lisa", "bart"]
values = ["95", "85", "59"]
for key,value in zip(keys, values):
print key,":",value
print key,':',value
#结果为#lisa : 85
#adam : 95
#bart : 59
并不是初始化序列,因为dic是无序的
可以把key和value分开成list,然后zip(key,value)
keys = ["adam", "lisa", "bart"]
values = ["95", "85", "59"]
for key,value in zip(keys, values):
print key,":",value
2015-06-07
d = { 'Adam': 95.0, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
print sum(d.values())/len(d.values())
print sum(d.values())/len(d.values())
2015-06-06
def firstCharUpper(s):
return s[0].upper()+s[1:]
print firstCharUpper('hello')
print firstCharUpper('sunday')
print firstCharUpper('september')
return s[0].upper()+s[1:]
print firstCharUpper('hello')
print firstCharUpper('sunday')
print firstCharUpper('september')
2015-06-06