博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
笨方法学Python3(21-44)
阅读量:4591 次
发布时间:2019-06-09

本文共 4813 字,大约阅读时间需要 16 分钟。

相关代码详见github地址:

接着前天的总结

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

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

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

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

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

from sys import argvscript, 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 / 10print("We can also do that this way:")formula = secret_formula(start_point)# this is an easy way to apply a list to a format stringprint("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  ifpeople = 30cars = 40trucks = 15if 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 randomfrom urllib.request import  urlopenimport sysWORD_URL = "http://learncodethehardway.org/words.txt"WORDS = []# load up the words from the websitefor 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):    passdad = 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

 

转载于:https://www.cnblogs.com/guohaoblog/p/11296636.html

你可能感兴趣的文章
知名杀毒软件Mcafee(麦咖啡)个人版 资源汇总兼科普(来自卡饭)
查看>>
php session之多级目录存储
查看>>
07.C语言:结构体、共用体、枚举
查看>>
BZOJ 5104 Fib数列(二次剩余+BSGS)
查看>>
Stanford机器学习---第八讲. 支持向量机SVM
查看>>
Promise、async、await在Egret的简单应用
查看>>
Quick Union
查看>>
准备写博客啦
查看>>
LintCode 53---翻转字符串中的单词
查看>>
EntityFramework Core2.0 多对多关系配置
查看>>
grok 正则解析日志例子<1>
查看>>
Linux 内核中 likely 与 unlikely 的宏定义解析
查看>>
课堂作业4
查看>>
.NET SOCKET通信编程
查看>>
linux内核--虚拟文件系统【转】
查看>>
Numpy学习笔记(四)
查看>>
巨蟒python全栈开发-第11阶段 ansible_project7
查看>>
模拟提交有文件上传的表单
查看>>
《需求工程——软件建模》06
查看>>
面试题:实现LRUCache::Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法...
查看>>