为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
初识Python_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

初识Python

廖雪峰 移动开发工程师
难度入门
时长 5小时 0分
  • #问题梳理:理解汉诺塔问题的时候,首先需要清楚的是柱A上的圆盘是从小到大依次罗列,规则要求圆盘不管是在哪根柱子上面都需要保证从小到大的顺序放,最终将A上依次叠放的圆盘全部移到目的柱C依次叠放。
    #问题解决:要把柱A上圆盘依次移到柱C上,并且保证从小到大的顺序,因此,要解决的第一个问题是:柱C的最底下的应该放最大的圆盘,要实现这一操作,柱A上的N-1个圆盘需拿开,故需要一个过渡柱B,并使N-1个圆盘按从小到大的顺序在柱B上,而实现N-1个圆盘依次在柱B上,问题相当于把最初的问题重复,只不过N变为N-1,目的柱变成柱B,辅助柱变为柱C,中间一定要清楚的一点是,柱C在实现目的之前(即N个圆盘从小到大依次叠放),柱C都是起着中间辅助的操作,即使最大盘在最低时(或者每个圆盘在柱C上正确的位置,即最低为最大,倒数第二为次大),其余的都是比柱C已拍好顺序的盘子要小,因此在柱C上排好顺序的盘子都可忽略其存在, 柱C始终起着中间辅助作用(即小的在上,大的在下),目的是使N-1个圆盘依次在柱B上,即将原本问题缩小;最终问题的递归的问题的原点就是将柱A上有一个要移到柱C上的圆盘,即N等于1为递归的原点,也为问题的起始点
    def move(n, a, b, c):#注意形参和实参的问题,第一个参数为圆盘数,第二个参数为圆盘所在柱,第二个位置为中间辅助柱,第三个位置为圆盘所移的目的柱
        if n==1:#只有一个圆盘 将柱A上的直接移到柱B
            print a,'-->',c 
            return
        move(n-1,a,c,b)#将N-1个圆盘依次移到柱B上,这里解释下形参跟实参的问题,当问题n=2时,即运行move(2-1,a,c,b)打印输出的结果为a-->b
        print a,'-->',c #将柱A上最大的圆盘移动柱C上,问题n=2时,这一步打印输出的结果为a-->c
        move(n-1,b,a,c) #将柱B上的N-1个圆盘移到柱C上,问题n=2,这一步打印输出的结果为b-->c


    查看全部
  • return 后面用值用逗号隔开

    查看全部
  • insert定义的时候就是插在原来那个位置的元素的前边。insert 前插,append 插在指定位置

    查看全部
  • 第一个办法是用 list 的 append() 方法,把新同学追加到 list 的末尾:

    >>> L = ['Adam', 'Lisa', 'Bart']
    >>> L.append('Paul')
    >>> print L
    ['Adam', 'Lisa', 'Bart', 'Paul']

    append()总是把新的元素添加到 list 的尾部。

    如果 Paul 同学表示自己总是考满分,要求添加到第一的位置,怎么办?

    方法是用list的 insert()方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素:

    >>> L = ['Adam', 'Lisa', 'Bart']
    >>> L.insert(0, 'Paul')
    >>> print L
    ['Paul', 'Adam', 'Lisa', 'Bart']

    查看全部
  • for index, name in enumerate(L):
        print index, '-', name

     

    >>> zip([10, 20, 30], ['A', 'B', 'C'])
    [(10, 'A'), (20, 'B'), (30, 'C')]

     

    L = ['Adam', 'Lisa', 'Bart', 'Paul']
    for index, name in zip(range(1, len(L)+1), L):
        print index, '-', name

    1 - Adam
    2 - Lisa
    3 - Bart
    4 - Paul

     


    查看全部
    0 采集 收起 来源:索引迭代

    2018-03-28

  • 一定要记住,换行缩进

    查看全部
  • def firstCharUpper(s):

        return s[0].upper() + s[1:]

    print firstCharUpper('hello')

    print firstCharUpper('sunday')

    print firstCharUpper('september')在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。


    查看全部
    0 采集 收起 来源:对字符串切片

    2018-03-28

  • dict的格式是

    d={

         key:value,

         key:value,

         key:value

    }

    查看全部
  • L.append(n*n) 在L[]里增加元素

    查看全部
  • >>> L = ['Adam', 'Lisa', 'Bart', 'Paul']


    >>> L[-2:]

    ['Bart', 'Paul']


    >>> L[:-2]

    ['Adam', 'Lisa']


    >>> L[-3:-1]

    ['Lisa', 'Bart']


    >>> L[-4:-1:2]

    ['Adam', 'Bart']L = range(1, 101)

    print L[-10:]

    print L[-46::5]


    查看全部
    0 采集 收起 来源:倒序切片

    2018-03-28

  • dict查找速度快,无论有多少个元素,速度都一样,而list查找速度随元素增加而下降。但dict以占用大量内存为代价,list正相反。

    dict存储的key-value是无序的,打印dict时每次顺序可能不一样;

    dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。

    可以试试用list作为key时会报什么样的错误。

    不可变这个限制仅作用于key,value是否可变无所谓

    最常用的key还是字符串,因为用起来最方便。


    查看全部
  • Python把0空字符串''None看成 False其他数值非空字符串都看成 True

    查看全部
  • 通过d[key]获取对应的value。

    参考代码:

    d= {
       'Adam': 95,
       'Lisa': 85,
       'Bart': 59
    }
    for key in d:
       print key + ':', d[key]


    查看全部
  • and 和 or 运算的一条重要法则:短路计算

    1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。

    2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。

    所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。

    查看全部
  • 为什么‘adam’+d['adam']不行?

    答:d['Adam']是一个int类型的数字,'Adam'是一个str类型的字符串,不能直接拼接

    TypeError: cannot concatenate 'str' and 'int' objects

    报错里面的解释:不能拼接str和int类型对象


    查看全部
    0 采集 收起 来源:Python之访问dict

    2018-03-28

举报

0/150
提交
取消
课程须知
如果您了解程序设计的基本概念,会简单使用命令行,了解中学数学函数的概念,那么对课程学习会有很大的帮助,让您学起来得心应手,快速进入Python世界。
老师告诉你能学到什么?
通过本课程的学习,您将学会搭建基本的Python开发环境,以函数为基础编写完整的Python代码,熟练掌握Python的基本数据类型以及list和dict的操作。
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!