习题37:复习各种符号
Keywords(关键字)
- and:与
- del:删除,通常用于删除列表中的数据
- from
- not
- while
- as:取别名
- elif
- global:全局
- or
- with
- assert:断言
- else
- if
- pass:没有意义,放在函数内,执行时不会报错,等以后补充该函数
- yield:生成器,我也不太理解啦,先放一放吧,以后用到再说吧
- break
- except
- import
- class
- exec
- in
- raise
- continue
- finally
- is
- return
- def
- for
- lambda
- try
习题38:阅读代码
阅读代码需要做标记,标记的内容包括以下几个方面:
- 函数以及函数的功能。
- 每个变量的初识赋值。
- 每个在程序的各个部分中多次出现的变量。它们以后可能会给你带来麻烦。
- 任何不包含else的if语句。它们是正确的吗?
- 任何可能没有结束点的while循环。
- 最后一条,代码中任何你看不懂的部分记下来。
1. 研究一下什么是“流程图(flow chart)”,并学着画一下。
2. 如果你在读代码的时候找出了错误,试着把它们改对,并把修改内容发给作者。
3. 不使用纸质打印时,你可以使用注解符号 # 在程序中加入笔记。有时这些笔记会对后来的读代码的人有很大的帮助。
习题39:列表的操作
计算机执行像mystuff.append('hello')这样的代码时,工作原理如下:
- Python看到你用到了mystuff,于是就去找到这个变量。也许它需要倒着检查看你有没有在哪里用=创建过这个变量,或者检查它是不是一个函数参数,或者看它是不是一个全局变量。不管哪种方式,它得先找到mystuff这个变量才行。
- 一旦它找到了mystuff,就轮到处理句点.(period)这个操作符,而且开始查看mystuff内部的一些变量了。由于mystuff是一个列表,Python知道mystuff支持一些函数。
- 接下来轮到了处理append。Python会将“append”和mystuff支持的所有函数的名称一一对比,如果确定其中有一个叫append的函数,那么Python就会去使用这个函数。
- 接下来Python看到了括号(parenthesis)并且意识到,“噢,原来这应该是一个函数”,到了这里,它就正常会调用这个函数了,不过这里的函数还要多一个参数才行。
- 这个额外的参数其实是......mystuff!我知道,很奇怪是不是?不过这就是Python的工作原理,所以还是记住这一点,就当它是正常的好了。真正发生的事情其实是append(mystuff,"hello"),不过你看到的只是mystuff.append('hello')。
tenTings = "Apples Oranges Crows Telephone Light Sugar"
print("Wait there's not 10 things in that list,let's fix that.")
# 以空格为分隔符,将字符串截取成列表
stuff = tenTings.split(' ')
moreStuff = ["Day", "Night", "Song", "Frisbee", "Corn", "Banana", "Girl", "Boy"]
while len(stuff) != 10:
# pop():出栈,默认最后一个元素
nextOne = moreStuff.pop()
print("Adding: ", nextOne)
stuff.append(nextOne)
print("There's %d items now." % len(stuff))
print("There we go:", stuff)
print("Let's do some things with stuff.")
print(stuff[1])
# -1为最后一个元素
print(stuff[-1])
print(stuff.pop())
# 将列表转换为字符串,使用空格隔开
print(' '.join(stuff))
# 记住规则,左取右不取
print('#'.join(stuff[3:5]))
Wait there's not 10 things in that list,let's fix that.
Adding: Boy
There's 7 items now.
Adding: Girl
There's 8 items now.
Adding: Banana
There's 9 items now.
Adding: Corn
There's 10 items now.
There we go: ['Apples', 'Oranges', 'Crows', 'Telephone', 'Light', 'Sugar', 'Boy', 'Girl', 'Banana', 'Corn']
Let's do some things with stuff.
Oranges
Corn
Corn
Apples Oranges Crows Telephone Light Sugar Boy Girl Banana
Telephone#Light
1. 将每一个被调用的函数以上述的方式翻译成 Python 实际执行的动作。例如: ' '.join(things) 其实是 join(' ', things) 。
2. 将这两种方式翻译为自然语言。例如, ' '.join(things) 可以翻译成“用 ‘ ‘ 连接(join) things”,而 join(' ', things) 的意思是“为 ‘ ‘ 和 things 调用 join 函数”。这其实是同一件事情。
3. 上网阅读一些关于“面向对象编程(Object Oriented Programming)”的资料。晕了吧?嗯,我以前也是。别担心。你将从这本书学到足够用的关于面向对象编程的基础知识,而以后你还可以慢慢学到更多。
4. 查一下 Python中的 “class” 是什么东西。不要阅读关于其他语言的 “class” 的用法,这会让你更糊涂。
5. dir(something) 和 something 的 class 有什么关系?
6. 如果你不知道我讲的是些什么东西,别担心。程序员为了显得自己聪明,于是就发明了 Opject Oriented Programming,简称为 OOP,然后他们就开始滥用这个东西了。如果你觉得这东西太难,你可以开始学一下 “函数编程(functional programming)”。
print_r('点个赞吧');
var_dump('点个赞吧');
NSLog(@"点个赞吧!")
System.out.println("点个赞吧!");
console.log("点个赞吧!");
print("点个赞吧!");
printf("点个赞吧!\n");
cout << "点个赞吧!" << endl;
Console.WriteLine("点个赞吧!");
fmt.Println("点个赞吧!")
Response.Write("点个赞吧");
alert(’点个赞吧’)