# 笨办法学 Python3 第五版（预览）（三）(2)

#### dis() 它

1   from dis import dis
2
3   if door == "1":
4       print("1")
5       bear = input("> ")
6       if bear == "1":
7           print("bear 1")
8       elif bear == "2":
9           print("bear 2")
10       else:
11           print("bear 3")

#### 练习

1. 制作游戏的新部分，并改变人们可以做出的决定。在游戏变得荒谬之前尽可能扩展游戏。
2. 编写一个全新的游戏。也许你不喜欢这个，那就自己创造一个。这是你的电脑；做你想做的事情。

### 练习 33：循环和列表

1   hairs = ['brown', 'blond', 'red']
2   eyes = ['brown', 'blue', 'green']
3   weights = [1, 2, 3, 4]

1   the_count = [1, 2, 3, 4, 5]
2   fruits = ['apples', 'oranges', 'pears', 'apricots']
3   change = [1, 'pennies', 2, 'dimes', 3, 'quarters']
4
5   # this first kind of for-loop goes through a list
6   for number in the_count:
7       print(f"This is count {number}")
8
9   # same as above
10   for fruit in fruits:
11       print(f"A fruit of type: {fruit}")
12
13   # also we can go through mixed lists too
14   for i in change:
15       print(f"I got {i}")
16
17   # we can also build lists, first start with an empty one
18   elements = []
19
20   # then use the range function to do 0 to 5 counts
21   for i in range(0, 6):
22       print(f"Adding {i} to the list.")
23       # append is a function that lists understand
24       elements.append(i)
25
26   # now we can print them out too
27   for i in elements:
28       print(f"Element was: {i}")

#### 你应该看到的内容

1   This is count 1
2   This is count 2
3   This is count 3
4   This is count 4
5   This is count 5
6   A fruit of type: apples
7   A fruit of type: oranges
8   A fruit of type: pears
9   A fruit of type: apricots
10   I got 1
11   I got pennies
12   I got 2
13   I got dimes
14   I got 3
15   I got quarters
16   Adding 0 to the list.
17   Adding 1 to the list.
18   Adding 2 to the list.
19   Adding 3 to the list.
20   Adding 4 to the list.
21   Adding 5 to the list.
22   Element was: 0
23   Element was: 1
24   Element was: 2
25   Element was: 3
26   Element was: 4
27   Element was: 5
##### dis()它

1   from dis import dis
2
3   dis('''
4   for number in the_count:
5       print(number)
6   ''')

1    0 LOAD_NAME     0 (the_count) # get the count list
2    2 GET_ITER                    # start iteration
4    6 STORE_NAME    1 (number)    # create number variable
5
8   12 CALL_FUNCTION 1             # call print()
9   14 POP_TOP                     # clean stack
10   16 JUMP_ABSOLUTE 2 (to 4)      # jump back to FOR_ITER at 4
11
12   18 LOAD_CONST    0 (None)      # jump here when FOR_ITER done
13   20 RETURN_VALUE

FOR_ITER操作中我们看到了一个新的东西。这个操作通过以下步骤使for-loop工作：

1. 调用the_count.__next__()
2. 如果the_count中没有更多元素，则跳转到 18
3. 如果仍然有元素，则继续执行
4. STORE_NAME然后将the_count.__next__()的结果赋给名为number的变量

#### 学习练习

1. 看看你如何使用了range。查阅range函数以了解它。
2. 在第 22 行完全避免了那个for-loop，直接将range(0,6)赋给elements，你能做到吗？
3. 查找关于列表的 Python 文档并阅读它们。除了append之外，你还可以对列表进行哪些操作？

#### 常见学生问题

elements.append() 做什么？它简单地将元素附加到列表的末尾。打开 Python shell 并尝试用自己创建的列表做几个示例。每当遇到这样的情况时，总是尝试在 Python shell 中进行交互操作。

### 练习 34：While 循环

while循环的问题在于：有时它们不会停止。如果你的意图只是一直循环直到宇宙的尽头，那么这很好。否则，你几乎总是希望你的循环最终会结束。

1. 确保你谨慎使用while循环。通常for循环更好。
2. 检查你的while语句，并确保布尔测试最终会变为False
3. 如果有疑问，在while循环的顶部和底部打印出你的测试变量，看看它在做什么。

|
9天前
|

26 1
|
9天前
|

40 1
|
9天前
|

49 0
|
9天前
|

41 1
|
9天前
|

67 1
|
6月前
|
Web App开发 前端开发 JavaScript
Python Selenium 浏览器打印预览
Python Selenium 浏览器打印预览
146 0
|
Rust 网络协议 IDE
Python语言学习路线及技术汇总预览
Rust语言是一种新型的系统编程语
84 0
|

Python语言学习路线及技术汇总预览
Python语言学习路线及技术汇总预览
123 0
|
2天前
|

Python编程实验六：面向对象应用
Python编程实验六：面向对象应用
19 1