现在该复习学过的符号和Python关键字了,而且在这个习题中你还会学到一些新的东西。我在这里所做的是将所有的Python符号和关键字列出来,这些都是要掌握的重点。
在这个习题中,你需要复习每一个关键字,从记忆中想起它的作用并且写下来,接着上网搜索它真正的功能。有些内容可能是无法搜索的,所以这对你可能有些难度,不过你还是需要坚持尝试。
如果你发现记忆中的内容有误,就在索引卡片上写下正确的定义,试着将自己的记忆纠正过来。
最后,将每一种符号和关键字用在程序里,你可以用一个小程序来做,也可以尽量多写一些程序来巩固记忆。这里的目标是明白各个符号的作用,确保自己没搞错,如果搞错了就纠正过来,然后将其用在程序里,从而加深自己的记忆。
关键字
关键字 | 描 述 | 示 例 |
---|---|---|
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循环的一部分,也可以X是否在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() |
数据类型
针对每一种数据类型,都举出一些例子来。例如,针对string
,你可以举出如何创建字符串,针对number
,你可以举出一些数值。
关键字 | 描 述 | 示 例 |
---|---|---|
True | 布尔值“真” | True or False == True |
False | 布尔值“假” | False and True == False |
None | 表示“不存在”或者“没有值” | x = None |
bytes | 字节串存储,可能是文本、PNG图片、文件等 | x = b’hello’ |
strings | 存储文本信息 | x = ‘hello’ |
numbers | 存储整数 | i = 100 |
Floats | 存储十进制数 | i = 10.389 |
lists | 存储列表 | j = [1,2,3,4] |
dicts | 存储键-值映射 | e = {‘x’: 1, ‘y’: 2} |
字符串转义序列
对于字符串转义序列,需要在字符串中应用它们,确保自己清楚地知道它们的功能。
转义符 | 描述 |
---|---|
\ | 反斜杠 |
’ | 单引号 |
" | 双引号 |
\a | 响铃 |
\b | 退格符 |
\f | 表单填充符 |
\n | 换行符 |
\r | 回车 |
\t | 制表符 |
\v | 垂直制表符 |
老式字符串格式
一样的,在字符串中使用它们,了解它们的功能。Python 2用这些格式化字符实现f字符串的功能,把它们作为替代方案试试。
转义符 | 描 述 | 示 例 |
---|---|---|
%d | 十进制整数(非浮点数) | “%d” % 45 == ‘45’ |
%i | 和%d一样 | “%i” % 45 == ‘45’ |
%o | 八进制数 | “%o” % 1000 == ‘1750’ |
%u | 无符号整数 | “%u” % -1000 == ‘-1000’ |
%x | 小写十六进制数 | “%x” % 1000 == ‘3e8’ |
%X | 大写十六进制数 | “%X” % 1000 == ‘3E8’ |
%e | 指数表示,小写e | “%e” % 1000 == ‘1.000000e+03’ |
%E | 指数表示,大写E | “%E” % 1000 == ‘1.000000E+03’ |
%f | 浮点实数 | “%f” % 10.34 == ‘10.340000’ |
%F | 和%f 一样 | “%F” % 10.34 == ‘10.340000’ |
%g | %f 和%e 中较短的一种 | “%g” % 10.34 == ‘10.34’ |
%G | 和%g 一样,但是是大写 | “%G” % 10.34 == ‘10.34’ |
%c | 字符格式 | “%c” % 34 == ‘"’ |
%r | Repr 格式(调试格式) | “%r” % int == “<type ‘int’>” |
%s | 字符串格式 | “%s there” % ‘hi’ == ‘hi there’ |
%% | 百分号自身 | “%g%%” % 10.34 == ‘10.34%’ |
运算符
有些运算符你可能还不熟悉,一一看一下,研究一下它们的功能,如果研究不出来也没关系,记下来日后解决。
运算符 | 描 述 | 示 例 |
---|---|---|
+ | 加 | 2 + 4 = 6 |
- | 减 | 2 – 4 = -2 |
* | 乘 | 2 * 4 = 8 |
** | 幂 | 2 ** 4 = 16 |
/ | 除 | 2 / 4 = 0.5 |
// | 除后向下取整 | 2 // 4 = 0 |
% | 字符串翻译,或者求余数 | 2 % 4 = 2 |
< | 小于 | 4 < 4 == False |
> | 大于 | 4 > 4 == False |
<= | 小于等于 | 4 <= 4 == True |
>= | 大于等于 | 4 >= 4 == True |
== | 等于 | 4 == 5 == False |
!= | 不等于 | 4 != 5 == True |
( ) | 括号 | len(‘hi’) == 2 |
[ ] | 方括号 | [1,3,4] |
{ } | 花括号 | {‘x’: 5, ‘y’: 10} |
@ | 修饰器符 | @classmethod |
, | 逗号 | range(0, 10) |
: | 冒号 | def x(): |
. | 点 | self.x = 10 |
= | 赋值 | x = 10 |
; | 分号 | print(‘hi’); print(‘there’) |
+= | 加后赋值 | x = 1; x += 2 |
-= | 减后赋值 | x = 1; x -= 2 |
*= | 乘后赋值 | x = 1; x *= 2 |
/= | 除后赋值 | x = 1; x /= 2 |
//= | 除后舍余并赋值 | x = 1; x //= 2 |
%= | 求余后赋值 | x = 1; x %= 2 |
**= | 求幂后赋值 | x = 1; x **= 2 |
花大约一个星期学习这些内容,如果能提前完成就更好了。我们的目的是覆盖所有的符号类型,确认你已经牢牢记住它们。另外很重要的一点是,这样你可以找出自己还不知道哪些东西,为日后学习找到一些方向。
阅读代码
现在去找一些Python代码阅读一下。你需要自己找代码,然后从中学习一些东西。你学到的知识已经足够让你看懂一些代码了,但你可能还无法理解这些代码的功能。这个习题我会教你如何运用学到的知识理解别人的代码。
首先把你想要理解的代码打印到纸上。没错,你需要打印出来,因为和屏幕输出相比,你的眼睛和大脑更习惯于接受纸质打印的内容。一次最多打印几页就可以了。
然后通读打印出来的代码并做好笔记,笔记的内容包括以下几个方面。
1.函数以及函数的功能。
2.每个变量初始赋值的位置。
3.每个在程序的各个部分中多次出现的同名变量。它们以后可能会给你带来麻烦。
4.任何不包含else
子句的if
语句。它们是正确的吗?
5.任何可能没有结束点的while
循环。
6.代码中任何你看不懂的部分。
接下来你需要通过注释的方式向自己解释代码的含义。解释各个函数的使用方法,各个变量的用途,以及任何其他方面的内容,只要能帮助你理解代码即可。
最后,在代码中比较难的各个部分,逐行或者逐个函数跟踪变量值。你可以再打印一份出来,在空白处写出要“追踪”的每个变量的值。
一旦基本理解了代码的功能,回到计算机前,在屏幕上重读一次,看看能不能找到新的问题点。然后继续找新的代码,用上述方法去阅读理解,直到你不再需要纸质打印为止。
巩固练习
1.研究一下什么是“流程图”(flow chart),并学着画一下。
2.如果在读代码的时候找出了错误,试着把它们改对,并把修改内容发给这段代码的作者。
3.不使用纸质打印时,可以使用注释符号#在程序中加入笔记。有时这些笔记会对后来的读代码的人有很大的帮助。
本文摘自《笨办法学Python 3》
Zed A. Shaw创建了一套非常有效的Python 3学习体系,只要跟着学,你就会像Zed教过的数百万初学者一样获得成功!只要你能自律、投入和坚持!
在本书中,你将通过完成52个精心设计的习题来学会Python语言。阅读这些习题,照着录入代码(不要复制和粘贴!),修正自己的错误,观察程序的运行。在这个过程中,你将学会计算机的工作原理,知道怎样的程序才算是好程序,以及如何读、写和思考代码。作者还提供了5个多小时的视频,教你如何破坏、修正和调试代码,整个过程就像一边做题一边直播一样。一开始会很难,但很快你就会上手,并且会感觉很棒!
喜欢Zed A. Shaw的朋友们,如果你们已经学习完第一本书,感觉还不错,那么可以继续读Zed A. Shaw的进阶版《笨办法学Python 3 进阶篇》
《“笨办法”学Python 3》介绍了用Python 3编程的基础知识,而《笨办法学Python 3 进阶篇》则通过52个精心设计的习题帮助读者超越基础,提升水平。这52个习题大部分都结合实际演示,并配有附加挑战,每个习题都可以帮读者掌握一项关键的实践技能,包括使用文本编辑器管理复杂的项目、利用功能强大的数据结构、应用算法处理数据结构、掌握必要的文本分析和处理技术、使用SQL有效且合逻辑地建模存储数据,以及学习强大的命令行工具等。本书旨在帮助读者从单纯地编写能运行的代码跨越到编写能解决实际问题的高质量Python代码,成为一名高阶的Python程序员。