• 笨方法学Python3(21-44)


    相关代码详见github地址:https://github.com/BMDACMER/Learn-Python

    接着前天的总结

    习题21:函数可以返回某些东西

        定义函数的加减乘除,以及嵌套使用

    习题22:回顾以前学的知识

    习题23:字符串、字节串和字符编码

    综合运用字符串、函数、文件读取等知识。详情如下:

    from sys import argv
    script, encoding, error = argv    # 命令行参数处理
    
    
    def main(language_file, encoding,errors):
        line = language_file.readline()            # 就是用readline()处理文本
        if line:                                   # 防止函数永远循环下去
            print_line(line, encoding, errors)
            return main(language_file, encoding, errors)
    
    def print_line(line, encoding, errors):     # 对languages.txt中的每一行进行编码
        next_lang = line.strip()     # 移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
        raw_bytes = next_lang.encode(encoding,errors = errors)
        cooked_string =  raw_bytes.decode(encoding, errors = errors)
    
        print(raw_bytes, "<===>",cooked_string)
    
    languages = open("language.txt",encoding = "utf-8")
    
    main(languages, encoding, error)
    

      

    习题24: 更多的练习

    部分代码如下:

    start_point = start_point / 10
    
    print("We can also do that this way:")
    formula = secret_formula(start_point)
    # this is an easy way to apply a list to a format string
    print("we'd have {} beans,{} jars, and {} crates.".format(*formula))
    

      

    习题25:定义函数

    习题26:回顾以前知识

    习题27:

    这一节 就是讲解逻辑关系  逻辑术语的
    and  or  not  !=  ==  >=  <= True False
    以及真值表详见P83
    

      

    习题28:布尔表达式(跟C语言类似)

    习题29:if语句

    习题30:  else 和 if 嵌套

    # else  if
    people = 30
    cars = 40
    trucks = 15
    
    if cars > people:
        print("we should take the cars.")
    elif cars < people:
        print("We should not take the cars.")
    else:
        print("We can't decide.")
    
    if trucks > cars:
        print("That's too many trucks.")
    elif trucks < cars:
        print("Maybe we could take the trucks.")
    else:
        print("We still can't decide.")
    
    if people > trucks:
        print("Alright,let's just take the trucks.")
    else:
        print("Fine,let's stay home then.")
    

      

    习题31:采用if-else语句编写问答式“小游戏”

    练习使用嵌套判断语句

    习题32:循环和列表

    习题33:while循环

    习题34:访问列表的元素

    习题35:综合小练习,巩固前面所学知识

    习题36:设计和调试

    注:debug最佳方式就是 使用print在各个想要检查的关键点将变量打印出来,从而检查哪里是否有错!

    习题37:复习各种符号

    关键字 描述 示例
    and   逻辑与  True and False == False
    as with-as 语句的某一部分 with X as Y: pass
    assert 断言(确保)某东西为真 assert False, "Error!"
    break 立即停止循环 while True: break
    class 定义类 class Person(object)
    continue 停止当前循环的后续步骤,再做一次循环 while True: continue
    def 定义函数 def X(): pass
    del   从字典中删除 del X[Y]
    elif else if条件 if: X; elif: Y; else: J
    else else条件 if: X; elif: Y; else: J
    except 如果发生异常,运行此处代码 except ValueError, e: print(e)
    exec 将字符串作为Python脚本运行 exec 'print("hello")'
    finally 不管是否发生异常,都运行此处代码 finally: pass
    for 针对物件集合执行循环 for X in Y: pass
    from 从模块中导入特定部分 from X import Y
    global 声明全局变量 global X
    if if 条件    if: X; elif: Y; /else: J
    import  将模块导入当前文件以供使用 import os
    in for循环的一步分,也可以是否在Y中的条件判断 for X in Y: pass   以及  1 in [1] == True
    is 类似于==,判断是否一样 1 is 1 == True
    lambda 船舰短匿名函数 s = lambda y: y ** y; s(3)
    not 逻辑非 not True == False
    or 逻辑或 True or False == True
    pass 表示空代码块 def empty(): pass
    print 打印字符串 print('this string')
    raise 出错后引发异常 raise ValueError("No")
    return 返回值并推出函数 def X(): return Y
    try 尝试执行代码,出错后转到except try: pass
    while while循环 while X: pass
    with 将表达式作为一个变量,然后执行代码块 with X as Y: pass
    yield 暂停函数返回到调用函数的代码中 def X(): yield Y; X().next()

    数据类型  和  字符串转义序列 等详见P110--113

     习题38:列表的操作

    习题39:字典

    小结:1)字典和列表有何不同?

            答:列表是一些项的有序排列,而字典是将一些项(键)对应到另外一些项(值)的数据结构。

       2)字典能用在哪里?

       答:各章需要通过某个值取查看另一个值的场合。只要知道索引就能查到对应的值了。

       3)有没有办法弄一个可以排序的字典?

       答:看看python里的collections.OrderedDict数据结构。上网搜一下其文档和用法。

    习题40: 模块、类和对象

    question:为什么创建__init__或者别的类函数时需要多加一个self变量?

    answer:如果不加self, cheese = 'Frank'这样的代码就有歧义了。它指的既可能使实例的cheese属性,也可能是一个叫cheese的局部变量。有了self.cheese = 'Frank'就清楚地知道这指的是实例的属性self.cheese.

    习题41:学习面向对象术语

    截取部分代码(在线读取文本信息)

    import random
    from urllib.request import  urlopen
    import sys
    WORD_URL = "http://learncodethehardway.org/words.txt"
    WORDS = []
    
    # load up the words from the website
    for word in urlopen(WORD_URL).readlines():
        WORDS.append(str(word.strip(),encoding="utf-8"))
    

      

    习题42:对象、类及从属关系

    question1:对象和类的区别?

    answer1: 对象和类好比 小狗和动物。对象是类的实例,也就是种特例。 书本例举的 鱼和泥鳅的关系。”is-a“和"has-a"的关系,”is-a“指的是鱼和泥鳅的关系,而”has-a“指的是泥鳅和鳃的关系。

    注:一般定义类时,在类名后面没加(object),那么就默认添加(object)

    习题43:编写命令行的小游戏!

    习题44:继承和组合

    • 隐式继承
      class Parent(object):
      
          def implicit(self):
              print("PARENT implicit()")
      
      class Child(Parent):
          pass
      
      dad = Parent()
      son = Child()
      
      dad.implicit()
      son.implicit()

      输出如下所示:

      PARENT implicit()
      PARENT implicit()

    • 显示覆盖
      class Parent(object):
      
          def override(self):
              print("PARENT override()")
      
      class Child(Parent):
      
          def override(self):
              print("CHILD override()")
      
      dad = Parent()
      son = Child()
      
      dad.override()
      son.override()
      

        

    • class Parent(object):
      
          def altered(self):
              print("PARENT altered()")
      
      
      class Child(Parent):
      
          def altered(self):
              print("CHILD, BEFORE PARENT altered()")
              super(Child, self).altered()   # 采用super调用父类中的方法
              print("CHILD, AFTER PARENT altered()")
      
      
      dad = Parent()
      son = Child()
      
      dad.altered()
      print("-----------------------------")
      son.altered()
      

        

    • python支持多继承   要用super()        
      class SuperFun(Child, BadStuff):
          pass
  • 相关阅读:
    第二周教学设计反思
    uni-app,一套代码应用在多个平台
    新CMS
    学习js
    关于数据库
    自己写的一段jquery实现当滚动条滑动到某个位置实现向中间移动
    js平滑滚动到顶部、底部、指定地方
    统一一个帝国中搜索页面的模板
    帝国CMS的总结
    回到顶部的功能
  • 原文地址:https://www.cnblogs.com/guohaoblog/p/11296636.html
Copyright © 2020-2023  润新知