《笨方法学PYTHON》——nineteenthlesson

习题37:复习各种符号
Keywords(关键字)

  • and:与
  • del:删除,通常用于删除列表中的数据
  • from
  • not
  • while
  • as:取别名
  • elif
  • global:全局
  • or
  • with
  • assert:断言
  • else
  • if
  • pass:没有意义,放在函数内,执行时不会报错,等以后补充该函数
  • yield:生成器,我也不太理解啦,先放一放吧,以后用到再说吧
  • break
  • except
  • import
  • print
  • class
  • exec
  • in
  • raise
  • continue
  • finally
  • is
  • return
  • def
  • for
  • lambda
  • try

习题38:阅读代码

阅读代码需要做标记,标记的内容包括以下几个方面:

  1. 函数以及函数的功能。
  2. 每个变量的初识赋值。
  3. 每个在程序的各个部分中多次出现的变量。它们以后可能会给你带来麻烦。
  4. 任何不包含else的if语句。它们是正确的吗?
  5. 任何可能没有结束点的while循环。
  6. 最后一条,代码中任何你看不懂的部分记下来。

1. 研究一下什么是“流程图(flow chart)”,并学着画一下。

2. 如果你在读代码的时候找出了错误,试着把它们改对,并把修改内容发给作者。

3. 不使用纸质打印时,你可以使用注解符号 # 在程序中加入笔记。有时这些笔记会对后来的读代码的人有很大的帮助。

习题39:列表的操作

计算机执行像mystuff.append('hello')这样的代码时,工作原理如下:

  1. Python看到你用到了mystuff,于是就去找到这个变量。也许它需要倒着检查看你有没有在哪里用=创建过这个变量,或者检查它是不是一个函数参数,或者看它是不是一个全局变量。不管哪种方式,它得先找到mystuff这个变量才行。
  2. 一旦它找到了mystuff,就轮到处理句点.(period)这个操作符,而且开始查看mystuff内部的一些变量了。由于mystuff是一个列表,Python知道mystuff支持一些函数。
  3. 接下来轮到了处理append。Python会将“append”和mystuff支持的所有函数的名称一一对比,如果确定其中有一个叫append的函数,那么Python就会去使用这个函数。
  4. 接下来Python看到了括号(parenthesis)并且意识到,“噢,原来这应该是一个函数”,到了这里,它就正常会调用这个函数了,不过这里的函数还要多一个参数才行。
  5. 这个额外的参数其实是......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(’点个赞吧’)

猜你喜欢

转载自blog.csdn.net/qq_41470573/article/details/84783089