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

初识Python

廖雪峰 移动开发工程师
难度入门
时长 5小时 0分
  • 浮点数与浮点数进行除法运算时,两个浮点数之间加//,而且计算的结果是否能除尽,都将舍去余数的部分

    查看全部
  • 输入中文时,要在‘’前加个u

    Unicode字符串除了多了一个 u 之外,与普通字符串没啥区别,转义字符和多行表示法仍然有效

    查看全部
    1. 在字符串前面加个前缀 r,表示这是一个 raw 字符串,里面的字符就不需要转义了。

    2. 但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串.如果要表示多行字符串,可以用'''...'''

    3. 还可以在多行字符串前面添加 r ,把这个多行字符串也变成一个raw字符串:


    查看全部
  • 如果字符串既包含'又包含"怎么办?这个时候,就需要对字符串的某些特殊字符进行“转义”,Python字符串用\进行转义。

    \n 表示换行
    \t 表示一个制表符
    \\ 表示 \ 字符本身


    查看全部
  •                           Python中数据类型
    一、整数

    Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1100-80800,等等。

    计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff000xa5b4c3d2,等等。

    二、浮点数

    浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x10^9和12.3x10^8是相等的。浮点数可以用数学写法,如1.233.14-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

    整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

    三、字符串

    字符串是以''""括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。

    四、布尔值

    布尔值和布尔代数的表示完全一致,一个布尔值只有TrueFalse两种值,要么是True,要么是False,在Python中,可以直接用TrueFalse表示布尔值(请注意大小写),也可以通过布尔运算计算出来。

    布尔值可以用andornot运算。

    and运算是与运算,只有所有都为 True,and运算结果才是 True。

    or运算是或运算,只要其中有一个为 True,or 运算结果就是 True。

    not运算是非运算,它是一个单目运算符,把 True 变成 False,False 变成 True。

    五、空值

    空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

    此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型,我们后面会继续讲到


    查看全部
  • 那这两个方法有何不同之处呢?

    1. values() 方法实际上把一个 dict 转换成了包含 value 的list。

    2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

    3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。

    如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。


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

    2018-12-26

  • 集合是指包含一组元素的数据结构,我们已经介绍的包括:
    1. 有序集合:list,tuple,str和unicode;
    2. 无序集合:set
    3. 无序集合并且具有 key-value 对:dict


    查看全部
    0 采集 收起 来源:什么是迭代

    2018-12-26

  • 对list进行切片采用L[x:y]x,y为切片范围,从x开始取到y截止,但不包括y,如果x=0可以省略

    切片操作可以有第三个参数z表示每z个取一次

    查看全部
    0 采集 收起 来源:对list进行切片

    2018-12-26

  • 多层表达式

    for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。

    对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列:

    >>> [m + n for m in 'ABC' for n in '123'] ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

    翻译成循环代码就像下面这样:

    L = [] for m in 'ABC':     for n in '123':         L.append(m + n)

    任务

    利用 3 层for循环的列表生成式,找出对称的 3 位数。例如,121 就是对称数,因为从右到左倒过来还是 121。


    查看全部
    0 采集 收起 来源:多层表达式

    2018-12-26

  • 条件过滤

    列表生成式的 for 循环后面还可以加上 if 判断。例如:

    >>> [x * x for x in range(1, 11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

    如果我们只想要偶数的平方,不改动 range()的情况下,可以加上 if 来筛选:

    >>> [x * x for x in range(1, 11) if x % 2 == 0] [4, 16, 36, 64, 100]

    有了 if 条件,只有 if 判断为 True 的时候,才把循环的当前元素添加到列表中。


    查看全部
    0 采集 收起 来源:条件过滤

    2018-12-26

  • 复杂表达式

    使用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 采集 收起 来源:复杂表达式

    2018-12-26

  • Python 的 for循环不仅可以用在list或tuple上,还可以作用在其他任何可迭代对象上。

    因此,迭代操作就是对于一个集合,无论该集合是有序还是无序,我们用 for 循环总是可以依次取出集合的每一个元素。


    集合是指包含一组元素的数据结构,我们已经介绍的包括:
    1. 有序集合:list,tuple,str和unicode;
    2. 无序集合:set
    3. 无序集合并且具有 key-value 对:dict


    查看全部
    0 采集 收起 来源:什么是迭代

    2018-12-26

  • 生成列表

    要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11):

    >>> range(1, 11) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环:

    >>> L = [] >>> for x in range(1, 11): ...    L.append(x * x) ...  >>> L [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

    但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

    >>> [x * x for x in range(1, 11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

    这种写法就是Python特有的列表生成式。利用列表生成式,可以以非常简洁的代码生成 list。

    写列表生成式时,把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。


    查看全部
    0 采集 收起 来源:生成列表

    2018-12-26

  • 迭代dict的key和value

    我们了解了如何迭代 dict 的key和value,那么,在一个 for 循环中,能否同时迭代 key和value?答案是肯定的。

    首先,我们看看 dict 对象的 items() 方法返回的值:

    >>> 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

    和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。



    任务

    请根据dict:

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

    打印出 name : score,最后再打印出平均分 average : score。

    • ?不会了怎么办

    • 需要同时对 name 和 score 进行迭代。

      参考代码:

      d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
      sum = 0.0
      for k, v in d.iteritems():
          sum = sum + v
          print k, ':', v
      print 'average', ':', sum / len(d)


    查看全部
  • 'abc'.upper() 字符变成大写字母

    'a'+'b'='ab' 字符串相加

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

    2018-12-26

举报

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

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