为了账号安全,请及时绑定邮箱和手机立即绑定

初识Python

廖雪峰 移动开发工程师
难度入门
时长 5小时 0分
学习人数
综合评分9.43
3762人评价 查看评价
9.7 内容实用
9.4 简洁易懂
9.2 逻辑清晰
  • age = 8
    if age >= 6:
        print 'teenager'
    elif age >= 18:
        print 'adult'
    else:
        print 'kid'

    当 age = 8 时,结果正确,但 age = 20 时,为什么没有打印出 adult?

    如果要修复,应该如何修复?

    特别注意: 这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了。

    首先执行了if age >= 6:
        print 'teenager'

    满足条件时则不再往下执行正确应该这样

    age = 8
    if age >= 18:
        print 'adult'
    elif age >=16 :
        print '年轻人'
    else:
        print 'kid'




    查看全部
  • 数列List

    方法  append()  将新元素添加到List后面

    方法  insert()  索引加新元素 将新元素添加到索引上

    查看全部
  • 5-3 Python之 if-elif-else

    有的时候,一个if..else..还不够用。比如,根据年龄的划分:条件1:18岁或以上:adult

            条件2: 6岁或以上:teenager

            条件3: 6岁以下:kid

    我们可以用一个if age >= 18 判断是否符合条件1,如果不符合,在通过一个 if 判断 age >= 6 来判断是否符合条件2,否则,执行条件3:

    if age >= 18:

        print 'adult'

    else: 

        if age >= 6:

                 print 'teenager' 

            else:

                  print 'kid'

            else: 

                   print 'baby'

    这种写出来,我们就得到一个两层嵌套的if。。else。。语句,这个逻辑没有问题,但是,如果继续增加条件,比如3岁以下是baby:

    if age >= 18:

        print 'adult'

    else:

        if age >= 6:

            print 'teenager'

        else:

            if age >= 3 :

                print 'kid'

            else:

                print 'baby'

    这种缩进智慧越来越多,代码也会越来越难看。

    要避免嵌套架构的if。。else。。,我们可以用 if ...多个 elif...else...的结构,一次写完所有的规则:

    if age >= 18:

        print 'adult'

    elif age >=6:

        print 'teenager'

    elif age >= 3:

        print 'kid'

    else:

        print 'baby'

    elif意思就是 else if。这样一样,我们就写出了结构非常清晰的一系列条件判断。

    特别注意:这一系列条件半段会从上到下依次判断,如果某个判断为了True,执行完对应代码块,后面的条件判断就直接忽略,不在执行。

    查看全部
  • and 找 False

    or 找 True


    查看全部
  • 复杂表达式

    使用for循环的迭代不仅可以迭代普通的list,还可以迭代dict。

    假设有如下的dict:

    d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }

    完全可以通过一个复杂的列表生成式把它变成一个 HTML 表格:

    tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in d.iteritems()] print '<table>' print '<tr><th>Name</th><th>Score</th><tr>' print '\n'.join(tds) print '</table>'

    注:字符串可以通过 % 进行格式化,用指定的参数替代 %s。字符串的join()方法可以把一个 list 拼接成一个字符串。

    把打印出来的结果保存为一个html文件,就可以在浏览器中看到效果了:

    <table border="1"> <tr><th>Name</th><th>Score</th><tr> <tr><td>Lisa</td><td>85</td></tr> <tr><td>Adam</td><td>95</td></tr> <tr><td>Bart</td><td>59</td></tr> </table>

    任务

    在生成的表格中,对于没有及格的同学,请把分数标记为红色。

    提示:红色可以用 <td > 实现。

    • ?不会了怎么办

    • 如果我们用一个函数来替换字符串的格式化代码,可以得到更清晰的代码:

      def generate_tr(name, score):     return '<tr><td>%s</td><td>%s</td></tr>' % (name, score) tds = [generate_tr(name, score) for name, score in d.iteritems()]

      这样,只需要修改 generate_tr() 函数,必要的时候把score标红。

      参考代码:

      d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } def generate_tr(name, score):     if score < 60:         return '<tr><td>%s</td><td >%s</td></tr>' % (name, score)     return '<tr><td>%s</td><td>%s</td></tr>' % (name, score) tds = [generate_tr(name, score) for name, score in d.iteritems()] print '<table border="1">' print '<tr><th>Name</th><th>Score</th><tr>' print '\n'.join(tds) print '</table>'


    查看全部
    0 采集 收起 来源:复杂表达式

    2020-03-19

  • >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
    >>> print d.items()
    [('Lisa', 85), ('Adam', 95), ('Bart', 59)]

    可以看到,items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value:

    >>> for key, value in d.items():
    ...     print key, ':', value
    ... 
    Lisa : 85
    Adam : 95
    Bart : 59


    查看全部
  • 如果仔细阅读Python的文档,还可以发现,dict除了values()方法外,还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样:

    d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
    print d.itervalues()
    # <dictionary-valueiterator object at 0x106adbb50>for v in d.itervalues():
        print v
    # 85
    # 95
    # 59


    查看全部
    0 采集 收起 来源:迭代dict的value

    2020-03-18

  • 但其实这只是一种假象,Python函数返回的仍然是单一值:

    >>> r = move(100, 100, 60, math.pi / 6)
    >>> print r
    (151.96152422706632, 70.0)

    用print打印返回结果,原来返回值是一个tuple!

    但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。


    查看全部
  • dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value:

    d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
    print d.values()
    # [85, 95, 59]


    查看全部
    0 采集 收起 来源:迭代dict的value

    2020-03-18

  • (1) 向set中添加元素:s.add(key)

    (2) 删除set中的元素: s.remove(key)

    (3) 删除不存在的元素会报错,所以删除前需要判断:if key in s: s.remove(key)

    查看全部
    0 采集 收起 来源:Python之 更新set

    2020-03-18

  • (1) 由于set存储的是无序集合,所以我们没法通过索引来访问。

    (2) 访问 set中的某个元素实际上就是判断一个元素是否在set中。


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

    2020-03-18

  • zip()函数可以把两个 list 变成一个 list:

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


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

    2020-03-18

  • (1) set格式: s = set(['a','b'])

    (1) set是无序的

    (2) set不能包含重复的元素

    查看全部
  • 获取字典中value的两种方法:

    (1) d['key']

    (2) d.get('key')

    判断某个key是否存在于字典中:

    for ‘key’in d

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

    2020-03-18

  • 利用倒序切片对 1 - 100 的数列取出:

    * 最后10个数;

    * 最后10个5的倍数


    L = range(1, 101)

    print L[-10:]

    print L[4::5][-10:]


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

    2020-03-18

举报

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

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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