美文网首页
Python学习总结

Python学习总结

作者: 时间煮菜 | 来源:发表于2020-04-07 10:52 被阅读0次

第1讲

  1. Python 是什么类型的语言?
  • Python是脚本语言
  • 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序。
  • 脚本语言通常比 C语言、C++语言 或 Java 之类的系统编程语言要简单容易。
  • 通常以容易修改程序的“解释”作为运行方式,而不需要“编译”
  1. IDLE 是什么?

    • IDLE,全称:Integrated Development and Learning Environment,集成开发和学习环境。

    • IDLE是一个Python Shell,shell的意思就是“外壳”。

    • 基本上来说,就是一个通过键入文本与程序交互的途径!像我们Windows那个cmd窗口,像Linux那个黑乎乎的命令窗口,他们都是shell,利用他们,我们就可以给操作系统下达命令。

    • 同样的,我们可以利用IDLE这个shell与Python进行互动。

  2. print() 的作用是什么?

    • print() 会在输出窗口中显示一些文本(在这一讲中,输出窗口就是IDLE shell窗口)。
  3. 如果我需要在一个字符串中嵌入一个双引号,正确的做法是?

  • 可以利用反斜杠(\)对双引号转义:

    In [1]: print ('haha\"')
    haha"
    
  • 或者用单引号引起这个字符串。例如:' I l"o"ve fishc.com '。

    In [2]: print ('haha"')
    haha"
    
  1. 输入 >>>5+8 与输入 >>>print(5+8) 有何不同?

    • 直接输入是将结果及类型打印到屏幕上

    • 而print是将结果打印到屏幕上

      In [15]: 'hello world'
      Out[15]: 'hello world'
      
      In [16]: print("hello world")
      hello world
      

第2讲

  1. Python中的BIF是什么?
  • Python中的BIF就是Built-in Functions,即内置函数的意思

  • 内置函数就是为了方便程序员快速的编写脚本程序

  • 如何查看Python中的BIF?

    输入dir(__builtins__),查看BIF列表,太多了,我截取了一部分,其中小写部分就是BIF了。

    In [17]: dir(__builtins__)
    Out[17]:
    ['ZeroDivisionError',
     '__IPYTHON__',
     '__build_class__',
     '__debug__',
     '__doc__',
     '__import__',
     '__loader__',
     '__name__',
     '__package__',
     '__spec__',
     'abs',
     'all',
     'any',
     'ascii',
     'bin',
     'bool',
     'breakpoint',
     'bytearray',
     'bytes',
     'callable',
    
  • 在ipython中输入help(bin),关于这个bin的功能介绍就出来了

    In [20]: help(bin)
    Help on built-in function bin in module builtins:
    
    bin(number, /)
        Return the binary representation of an integer.
    
        >>> bin(2796202)
        '0b1010101010101010101010'
    
  • Python 提供了非常丰富的内置函数,我们只需要直接调用即可,

  • 例如 print() 的功能是“打印到屏幕”,input() 的作用是接收用户输入

    (注:Python3 用 input() 取代了 Python2 的 raw_input()

  1. Python3 提供了多少个 BIF?
    • 68 个,不信你自己数数看

第3讲

  1. 以下哪个变量的命名不正确?为什么?

​ (A) MM_520 (B) MM520 (C) 520_MM (D) _520_MM

  • (C), Python命名不能以数字开头
  1. 除了使用饭斜杠(\)进行字符转义,还有什么方法可以打印:Let's go! 这个字符串?

    In [47]: s = "Let's go!"
    
    In [48]: print(s)
    Let's go!
    
  2. 如果非要在原始字符串结尾输入反斜杠,可以如何灵活处理?

    In [54]: s = r'C:\Python''\\'
    
    In [55]: s
    Out[55]: 'C:\\Python\\'
    

第4讲

  1. 请写出与 10 < cost < 50 等价的表达式

    (10 < cost) and (cost < 50)
    
  2. Python3 中,一行可以书写多个语句吗?

    • 可以,语句之间用分号隔开即可
    In [67]: 3 > 4 and \
        ...: 1 < 2
    Out[67]: False
    
  • 或者也可以用括号括起来
In [68]: (3 > 4 and
    ...: 1 < 2)
Out[68]: False
  1. Python3 中,一个语句可以分成多行书写吗

    • 可以,一行过长的语句可以使用反斜杠或者括号分解成几行,不妨试试:
     In [64]: 3 > 4 and \
         ...: 1 < 4
     Out[64]: False
     
     In [65]: 3 > 4 and
         ...: 1 < 4
       File "<ipython-input-65-aeded9bb84bc>", line 1
         3 > 4 and
                   ^
     SyntaxError: invalid syntax
    
  2. Python3 中,一行可以书写多个语句吗

    可以,语句之间用分号隔开

    In [66]: print('hello '); print('world')
    hello
    world
    
  3. Python中的逻辑andor,你理解嘛?

    • a and b:在a为false的时候,返回a,否则返回b。
    • a or b: 在a为true的时候,返回a,否则返回b。
    In [70]: 0 and 4
    Out[70]: 0
    
    In [71]: 1 and 4
    Out[71]: 4
    
  4. 听说过“短路逻辑(short-circuit logic)”吗?

    • 逻辑操作符有个有趣的特性:在不需要求值的时候不进行操作。
    • 这么说可能比较“高深”,举个例子,表达式 x and y,需要 x 和 y 两个变量同时为真(True)的时候,结果才为真。因此,如果当 x 变量得知是假(False)的时候,表达式就会立刻返回 False,而不用去管 y 变量的值。
    • 实际上,Python 的做法是如果 x 为假,表达式会返回 x 的值(0),否则它就会返回 y 的值

第5讲

  1. 在 Python 中,int 表示整型,那你还记得 bool、float 和 str 分别表示什么吗?
    • bool:布尔类型
    • float:浮点型
    • str:字符串
  2. 你知道为什么布尔类型(bool)的 True 和 False 分别用 1 和 0 来代替吗?
    • 计算机只认识0和1的二进制数,用 0 和 1 来表示 False 和 True ,不用浪费资源在转换的过程上!
  3. 使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?
    • 小数取整会采用比较暴力的截断方式,即向下取整。(注:5.5向上取整为6,向下取整为5)。
In [14]: a = 5.99

In [15]: b = int(a)

In [16]: a
Out[16]: 5.99

In [17]: b
Out[17]: 5
  1. 我们人类思维是习惯于“四舍五入”法,你有什么办法使得 int() 按照“四舍五入”的方式取整吗?

    In [22]: int(5.4 + 0.5)
    Out[22]: 5
    
    In [23]: int(5.6 + 0.5)
    Out[23]: 6
    
    In [24]: int(5.5 + 0.5)
    Out[24]: 6
    
  2. 取得一个变量的类型,视频中介绍可以使用 type() 和 isinstance(),你更倾向于使用哪个?

    In [7]: a
    Out[7]: '11'
    
    In [8]: b
    Out[8]: 9
    
    In [9]: type(a)
    Out[9]: str
    
    In [10]: type(b)
    Out[10]: int
    
    In [11]: isinstance(a, int)
    Out[11]: False
    
    In [12]: isinstance(a, str)
    Out[12]: True
    
    
    • 建议使用 isinstance(),因为它的返回结果比较直接,另外 type() 其实并没有你想象的那么简单,我们后边会讲到。
  3. Python3 可以给变量命名中文名,知道为什么吗?

    • Pyhton3 源码文件默认使用utf-8编码(支持中文),这就使得以下代码是合法的:
    In [31]: 大白菜 = '哈哈'
    
    In [32]: print(大白菜)
    哈哈
    
  4. 判断input()的输入是否为数字:

    s为字符串
    s.isalnum()  所有字符都是数字或者字母,为真返回 Ture,否则返回 False。
    s.isalpha()   所有字符都是字母,为真返回 Ture,否则返回 False。
    s.isdigit()     所有字符都是数字,为真返回 Ture,否则返回 False。
    s.islower()    所有字符都是小写,为真返回 Ture,否则返回 False。
    s.isupper()   所有字符都是大写,为真返回 Ture,否则返回 False。
    s.istitle() 所有单词都是首字母大写,为真返回 Ture,否则返回 False。
    s.isspace()   所有字符都是空白字符,为真返回 Ture,否则返回 False。
    
    例如:
    >>> s = 'I LOVE H'
    >>> s.isupper()
    >>> True
    
  5. 写一个程序,判断给定年份是否为闰年。(注意:请使用已学过的 BIF 进行灵活运用)

    // 闰年定义:能被4整除但不能被100整除,或者能被400整除都是闰年。
        
    # encoding:utf-8
    
    year = raw_input("请输入一个年份:")
    while not year.isdigit():
        print("你输入的不是合法数字")
        year = raw_input("请重新一个年份:")
    
    year = int(year)
    if year % 4 == 0:
        if year % 400 == 0:
            print(str(year) + "年是闰年")
        elif year % 100 == 0:
            print(str(year) + "年不是闰年")
        else:
            print(str(year) + "年是闰年")
    else:
        print(str(year) + "年不是闰年")
    
  6. 浮点型数据用科学记数法表示

第6讲:常用操作符

  1. 优先级问题
  1. Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢?

    • 答:如果回答是 1.5 那么很遗憾,您受到 C 语言的影响比较大,Python 这里会义无反顾地执行 floor 除法原则,答案是:1.0
  2. a < b < c 事实上是等于?

  • (a < b) and (b < c)
  1. 不使用 IDLE,你可以轻松说出 5 ** -2 的值吗?

    • 0.04,也就是 1/25
  2. 请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9

    • not or and 的优先级是不同的:not > and > or
    • 我们按照优先级给它们加上括号:(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
      == 0 or 0 or 4 or 6 or 9
      == 4
    • 3 and 4 == 4,而 3 or 4 == 3。
  3. 请写一个程序打印出 0~100 所有的奇数。

    # encoding:utf-8
    
    for i in range(1, 101):
        if i % 2 != 0:
            print(str(i) + ' ')
    
  4. 爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。

    #encoding:utf-8
    n = 7
    
    flag = False
    
    while not flag:
        if (n % 2 == 1) and (n % 3 == 2) and (n % 5 == 4) and (n % 6 == 5):
            print('台阶数为' + str(n))
            flag = True
        else:
            n += 7
    
  5. 运算符的优先级:幂运算 > 正负号 > 算术运算符 > 比较运算符 > 逻辑运算符

第七课:了不起的分支和循环

  1. assert 的作用是什么?

    • assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。
    • 当我们在测试程序的时候就很好用,因为与其让错误的条件导致程序今后莫名其妙地崩溃,不如在错误条件出现的那一瞬间我们实现“自爆”。
    • 一般来说我们可以用Ta再程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。
  2. 假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?

x, y, z = y, z, x
  1. 你听说过成员资格运算符吗?

    • Python 有一个成员资格运算符:in,用于检查一个值是否在序列中,如果在序列中返回 True,否则返回 False。

      >>> name = '小甲鱼'
      >>> '鱼' in name
      True
      >>> '肥鱼' in name
      False
      
  2. 请将以下代码修改为三元操作符实现

    x, y, z = 6, 5, 4
    if x < y:
        small = x
        if z < small:
            small = z
    elif y < z:
        small = y
    else:
        small = z
    

    实现:

    x, y, z = 6, 5, 4
    
    small = x if (x < y and x < z) else (y if y < z else z)
    
    print small
    

第九课:了不起的分支和循环3

  1. 下面的循环会打印多少次"I Love FishC"?

    for i in 5:
    print('I Love FishC')
    

    答:会报错,上节课的课后习题我们提到了 in 是“成员资格运算符”,而不是像 C 语言那样去使用 for 语法。Python 的 for 更像脚本语言的 foreach。

  2. 回顾一下 break 和 continue 在循环中起到的作用?

    • break语句的作用是终止当前循环,跳出循环体。
    • continue语句的作用是终止本轮循环并开始下一轮循环(这里要注意的是:在开始下一轮循环之前,会先测试循环条件)。
  3. 请问 range(10) 生成哪些数?

  • 会生成 range(0, 10),list(range(0, 10)) 转换成列表是:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],注意不包含 10 哦。
  1. 【学会提高代码的效率】你的觉得以下代码效率方面怎样?有没有办法可以大幅度改进(仍然使用while)?

    i = 0
    string = 'ILoveFishC.com'
    while i < len(string)):
        print(i)
        i += 1
    

    答:这段代码之所以“效率比较低”是因为每次循环都需要调用一次 len() 函数(我们还没有学到函数的概念,小甲鱼这里为零基础的朋友形象的解释下:就像你打游戏打得正HIGH的时候,老妈让你去买盐......你有两种选择,一次买一包,一天去买五次,或者一次性买五包回来,老妈要就直接给她。)
    修改如下:

    i = 0
    string = 'ILoveFishC.com'
    length = len(string)
    while i < length:
        print(i)
        i += 1  
    
  2. 设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。

    #encoding:utf-8
    password = 'fsy'
    
    user_in = raw_input("请输入密码:")
    
    time = 3
    
    while time:
        if password == user_in:
            print("输入正确,请进")
            break
        else:
            if user_in.find('*') == 0:
                user_in = raw_input("您输错了,请重新:")
                continue
            user_in = raw_input("您输错了,请重新:")
            time -= 1
    
    
    
    count = 3
    password = 'FishC.com'
    
    while count:
      passwd = input('请输入密码:')
      if passwd == password:
          print('密码正确,进入程序......')
          break
      elif '*' in passwd:
          print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
          continue
      else:
          print('密码输入错误!您还有', count-1, '次机会!', end=' ')    
      count -= 1
    
  3. 编写一个程序,求 100~999 之间的所有水仙花数。

如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。

for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10         # 注意这里要使用地板除哦~
    if sum == i:
        print(i)
  1. 三色球问题

    有红、黄、绿三种颜色的求,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。

    print('red\tyellow\tgreen')
    for red in range(0, 4):
        for yellow in range(0, 4):
            for green in range(2, 7):
                if red + yellow + green == 8:
                   # 注意,下边不是字符串拼接,因此不用“+”哦~
                    print(red, '\t', yellow, '\t', green)
    

    注释:range(2, 7)是产生[2, 3, 4, 5, 6]5个数,绿球不能是1个,因为如果绿球是1个的话,红球 + 黄球需要有7个才能符合题意,而红球和黄球每种只有3个,因此是range(2, 7)

第十课:列表:一个“打了激素”的数组

  1. 列表都可以存放一些什么东西?

    • 答:我们说 Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型。
  2. 向列表增加元素有哪些方法?

    • 答:这节课我们教过大家三种方法想列表增加元素,分别是:append()、extend() 和 insert()。
  3. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?

    • 答:
      append() 方法是将参数作为一个元素增加到列表的末尾。
      extend() 方法则是将参数作为一个列表去扩展列表的末尾。

      >>> name = ['F', 'i', 's', 'h']
      >>> name.append('C')
      >>> name
      ['F', 'i', 's', 'h', 'C']
      >>> name.extend(['.', 'c'])
      >>> name
      ['F', 'i', 's', 'h', 'C', '.', 'c']
      >>> name.append(['o', 'm'])
      >>> name
      ['F', 'i', 's', 'h', 'C', '.', 'c', ['o', 'm']]
      

相关文章

  • python学习总结

    关于Python的一些总结 希望自己以后在学习Python的过程中可以边学习边总结,就自己之前的学习先做以总结,之...

  • 资料

    Python爬虫系列(一)初期学习爬虫的拾遗与总结(11.4更) Python爬虫学习系列教程 Python爬虫学习手册

  • 2017.6.13-14

    学习python总结python常用的方法string的常用方法dictionary的常用方法 python抽象,...

  • 2018-03-10

    Python第二周学习总结 导读:这是python学习的第二周,在第二周,学习了大量的python基础,其中有字符...

  • 小白学编程之Python, Java,框架视频资料,圣诞的礼物派

    18年学Python视频资料发给初学者,及AI 机器深度学习总结 Python你学习了吗? 随着大数据、机器学习、...

  • python-扬帆启程

    Python学习 - 新的启程 前言 闲着无聊,重学python,记录总结。 Life is short,I us...

  • Python学习总结【连载】(六)

    Python学习总结【连载】(六) 2018.06.20 Juttachen 概述 + 21 列表补充 + 22 ...

  • Python学习总结

    数据类型 循环和分支 列表 元组、字符串 序列 函数 字典 文件 异常处理 类和对象 模块

  • python学习总结

    python基础语法总结 参考:Python基础语法总结 参考:1.Python标识符 在 Python 里,标识...

  • Python学习总结

    Python 简介 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的...

网友评论

      本文标题:Python学习总结

      本文链接:https://www.haomeiwen.com/subject/rssgphtx.html