笨方法学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('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
笨方法学Python3(21-44)的更多相关文章
- 笨方法学python3
阅读<笨方法学python3>,归纳的知识点 相关代码详见github地址:https://github.com/BMDACMER/Learn-Python 习题1:安装环境+练习 pr ...
- "笨方法学python"
<笨方法学python>.感觉里面的方法还可以.新手可以看看... 本书可以:教会你编程新手三种最重要的技能:读和写.注重细节.发现不同.
- 笨方法学python 22,前期知识点总结
对笨方法学python,前22讲自己的模糊的单词.函数进行梳理总结如下: 单词.函数 含义 print() 打印内容到屏幕 IDLE 是一个纯Python下自带的简洁的集成开发环境 variable ...
- 《笨办法学Python3 》入坑必备,并不是真笨学!!!
<笨办法学Python3 >免费下载地址 内容简介 · · · · · · 本书是一本Python入门书籍,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用.这本书以习题的 ...
- [IT学习]Learn Python the Hard Way (Using Python 3)笨办法学Python3版本
黑客余弦先生在知道创宇的知道创宇研发技能表v3.1中提到了入门Python的一本好书<Learn Python the Hard Way(英文版链接)>.其中的代码全部是2.7版本. 如果 ...
- 笨方法学python--提示别人
1 上次学到使用raw_input(), 还可以如下使用: age = raw_input("age?") 2 命令名查看raw_input的说明 unit, pydoc raw_ ...
- 笨方法学python--安装和准备
1 下载并安装python http://python.org/download 下载python2.7. python2.7并不是python3.5的旧版本. python2现在应用较广,网上资料较 ...
- 《笨方法学Python》加分题32
注意一下 range 的用法.查一下 range 函数并理解它在第 22 行(我的答案),你可以直接将 elements 赋值为 range(0, 6) ,而无需使用 for 循环?在 python ...
- 《笨方法学Python》加分题20
加分练习通读脚本,在每一行之前加注解,以理解脚本里发生的事情.每次 print_a_line 运行时,你都传递了一个叫 current_line 的变量,在每次调用时,打印出 current_line ...
随机推荐
- 串口调试工具与com口编程
当我们要与称打印机进行交互的时候这就需要 驱动 只有得到对应产品的驱动我们才有机会对其进行 com 口编程 首先我们就需要一个小工具来进行测试 获取对应的com 口,观察数据传输方式 链接地址: 链 ...
- Java爬虫利器HTML解析工具-Jsoup
Jsoup简介 Java爬虫解析HTML文档的工具有:htmlparser, Jsoup.本文将会详细介绍Jsoup的使用方法,10分钟搞定Java爬虫HTML解析. Jsoup可以直接解析某个URL ...
- Linux 教你如何预防删库到跑路
学习linux之前,有几个命令是必须记住的 我们最常见的删库命令 rm -rf /** 这个命令可以在你心情不好的时候,对着公司服务器操作一番,保证让你一时爽, 删完库这个时候你就该跑路了,但是你真的 ...
- Springboot Actuator之十二:actuator aop
前言spring 中aop是一个核心概念,spring boot 是如何实现自动化配置的?现在我们就来分析一下 解析spring boot 中自动化配置是读取/META-INF/spring.fact ...
- 由一个问题引起的思考:WEB开发中,使用JSON-RPC好,还是RESTful API好?
起因: 研究zabbix的API设计风格.查看zabbix官网API文档,可以看到使用的是json-rpc:2.0 随后搜索到知乎上的一个问题讨论:https://www.zhihu.com/ques ...
- Redis Desktop Manager 0.9.3 版本下载
因为Redis Desktop Manager作者在 0.9.4 版本之后选择对所有的安装包收费,不再提供安装包下载,但是源码依旧公开.链接:https://pan.baidu.com/s/1SXsy ...
- B树和B+树的增/删结点(转)
add by zhj: 算法其实不复杂,尤其是增加结点的算法,逻辑很简单,但有时自己想不到. 增加结点算法:首先,对于B树,没有重复结点,所以新插入的数据一定会落在叶结点上,或者说落在叶结点的所有父结 ...
- java中什么是抽象类(abstract)
一.什么是抽象类 由abstract修饰的方法叫抽象方法:由abstract修饰的类叫抽象类.抽象的类无法进行实例化,因为他不是具体存在的类,或者说这样的类还不够完善,不能直接使用new关键字调用其构 ...
- php 逻辑题
越长大约发现,高中学的数学,都还给了数学老师,一点都没有留住. 最近遇到了一个 逻辑题,然后想了半天,后来做出来了,我就发现了,我可能是一个假的理科生.很简单的样子. 废话不说,看看这道题吧. /** ...
- Bootstrap4 glyphicon 移除图标 glyphicon fonts-faces 解决方案
bootrap3是支持的图标 ,4不支持 4已经移除了 收费图标,取而代之建议使用其他的,比如 https://octicons.github.com/ 和http://fontawesome.io/ ...