|
1 | 1 | # 二、循环语句 # |
2 | 2 |
|
3 | | -一般编程语言都有循环语句,循环语句允许我们执行一个语句或语句组多次。 |
| 3 | + |
| 4 | + |
| 5 | +## 1、什么是循环语句 ## |
| 6 | + |
| 7 | +一般编程语言都有循环语句,为什么呢? |
| 8 | + |
| 9 | +那就问一下自己,我们弄程序是为了干什么? |
| 10 | + |
| 11 | +那肯定是为了方便我们工作,优化我们的工作效率啊。 |
| 12 | + |
| 13 | +而计算机和人类不同,计算机不怕苦也不怕累,也不需要休息,可以一直做。 |
| 14 | + |
| 15 | +你要知道,计算机最擅长就是做重复的事情。 |
| 16 | + |
| 17 | +所以这时候需要用到循环语句,循环语句允许我们执行一个语句或语句组多次。 |
4 | 18 |
|
5 | 19 | 循环语句的一般形式如下: |
6 | 20 |
|
7 | 21 |  |
8 | 22 |
|
9 | | -Python 提供了 for 循环和 while 循环,当然还有一些控制循环的语句: |
| 23 | + |
| 24 | +在 Python 提供了 for 循环和 while 循环。 |
| 25 | + |
| 26 | +这里又有一个问题了,如果我想让他运行了一百次之后停止,那该怎么做呢? |
| 27 | + |
| 28 | +这时候需要用到一些控制循环的语句: |
10 | 29 |
|
11 | 30 | |循环控制语句|描述| |
12 | 31 | |------|------| |
13 | 32 | |break|在语句块执行过程中终止循环,并且跳出整个循环| |
14 | 33 | |continue|在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环| |
15 | 34 | |pass|pass 是空语句,是为了保持程序结构的完整性| |
16 | 35 |
|
| 36 | +这些控制语句是为了让我们告诉程序什么时候停止,什么时候不运行这次循环。 |
17 | 37 |
|
18 | | -## 1、While 循环语句 ## |
19 | 38 |
|
20 | 39 |
|
21 | | -```python |
22 | | -count = 1 |
23 | | -sum = 0 |
24 | | -while (count <= 100): |
25 | | - sum = sum + count |
26 | | - count = count + 1 |
27 | | -print(sum) |
28 | | -``` |
29 | 40 |
|
30 | | -输出的结果: |
| 41 | +## 2、 for 循环语句 ## |
31 | 42 |
|
32 | | -```txt |
33 | | -5050 |
34 | | -``` |
| 43 | +我们先来看下 for 循环语句。 |
35 | 44 |
|
36 | | -当然 while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出循环 |
| 45 | +它的流程图基本如下: |
37 | 46 |
|
38 | | -比如,上面的例子是计算 1 到 100 所有整数的和,当我们需要判断 sum 大于 1000 的时候,不在相加时,可以用到 break ,退出整个循环 |
39 | 47 |
|
40 | | -```python |
41 | | -count = 1 |
42 | | -sum = 0 |
43 | | -while (count <= 100): |
44 | | - sum = sum + count |
45 | | - if ( sum > 1000): #当 sum 大于 1000 的时候退出循环 |
46 | | - break |
47 | | - count = count + 1 |
48 | | -print(sum) |
49 | | -``` |
| 48 | + |
50 | 49 |
|
51 | | -输出的结果: |
52 | 50 |
|
53 | | -```txt |
54 | | -1035 |
| 51 | +基本的语法格式: |
| 52 | + |
| 53 | +```python |
| 54 | +for iterating_var in sequence: |
| 55 | + statements(s) |
55 | 56 | ``` |
56 | 57 |
|
57 | | -有时候,我们只想统计 1 到 100 之间的奇数和,那么也就是说当 count 是偶数,也就是双数的时候,我们需要跳出当次的循环,不想加,这时候可以用到 break |
| 58 | +那么我们根据他的基本语法格式,随便写个例子测试一下: |
| 59 | + |
58 | 60 |
|
59 | 61 | ```python |
60 | | -count = 1 |
61 | | -sum = 0 |
62 | | -while (count <= 100): |
63 | | - if ( count % 2 == 0): # 双数时跳过输出 |
64 | | - count = count + 1 |
65 | | - continue |
66 | | - sum = sum + count |
67 | | - count = count + 1 |
68 | | -print(sum) |
| 62 | +for letter in 'Hello 两点水': |
| 63 | + print(letter) |
69 | 64 | ``` |
70 | 65 |
|
71 | | -输出的语句: |
| 66 | +输出的结果如下: |
72 | 67 |
|
73 | 68 | ```txt |
74 | | -2500 |
| 69 | +H |
| 70 | +e |
| 71 | +l |
| 72 | +l |
| 73 | +o |
| 74 | +
|
| 75 | +两 |
| 76 | +点 |
| 77 | +水 |
75 | 78 | ``` |
76 | 79 |
|
77 | | -在 Python 的 while 循环中,还可以使用 else 语句,while … else 在循环条件为 false 时执行 else 语句块 |
| 80 | +从打印结果来看,它就是把字符串 `Hello 两点水` 一个一个字符的打印出来。 |
| 81 | + |
| 82 | +那如果我们把字符串换为字典 dict 呢? |
| 83 | + |
| 84 | + |
| 85 | + |
| 86 | +你会发现只打印了字典 dict 中的每一个 key 值。 |
| 87 | + |
| 88 | +很多时候,我都是建议大家学到一个新的知识点,都多去尝试。 |
| 89 | + |
| 90 | +你尝试一遍,自己观察出来的结论,好过别人说十遍。 |
| 91 | + |
| 92 | +如果你不知道怎么去试? |
| 93 | + |
| 94 | +可以根据我们的例子举一反三,比如上面的 for 循环,试了字符串,字典,那我们之前学的基本数据类型还有什么呢? |
| 95 | + |
| 96 | +不记得可以再返回去看看,可以把所有的基本类型都拿去尝试一下。 |
| 97 | + |
| 98 | +比如,你试了之后,会发现整数和浮点数是不可以直接放在 for 循环里面的。 |
| 99 | + |
| 100 | + |
78 | 101 |
|
79 | | -比如: |
| 102 | + |
| 103 | + |
| 104 | + |
| 105 | + |
| 106 | + |
| 107 | +## 3、 range() 函数 ## |
| 108 | + |
| 109 | +for 循环还常常和 range() 函数搭配使用的。 |
| 110 | + |
| 111 | +如果不知道 range() 函数 , 我们直接通过一段程序来理解。 |
80 | 112 |
|
81 | 113 | ```python |
82 | | -count = 0 |
83 | | -while count < 5: |
84 | | - print (count) |
85 | | - count = count + 1 |
86 | | -else: |
87 | | - print (count) |
| 114 | +for i in range(3): |
| 115 | + print(i) |
88 | 116 | ``` |
89 | 117 |
|
90 | | -输出的结果: |
| 118 | +打印的结果为: |
91 | 119 |
|
92 | | -```txt |
| 120 | +``` |
93 | 121 | 0 |
94 | 122 | 1 |
95 | 123 | 2 |
96 | | -3 |
97 | | -4 |
98 | | -5 |
99 | 124 | ``` |
100 | 125 |
|
101 | | -## 2、 for 循环语句 ## |
| 126 | +可见,打印了 0 到 3 。 |
102 | 127 |
|
103 | | - for循环可以遍历任何序列的项目,如一个列表或者一个字符串 |
| 128 | +使用 range(x) 函数,就可以生成一个从 0 到 x-1 的整数序列。 |
104 | 129 |
|
105 | | -它的流程图基本如下: |
| 130 | +如果是 `range(a,b)` 函数,你可以生成了一个左闭右开的整数序列。 |
106 | 131 |
|
| 132 | +其实例子中的 `range(3)` 可以写成 `range(0,3)`, 结果是一样的。 |
107 | 133 |
|
108 | | - |
| 134 | +其实使用 range() 函数,我们更多是为了把一段代码重复运行 n 次。 |
109 | 135 |
|
110 | | -基本的语法格式: |
| 136 | +这里提个问题,你仔细观察 range() 函数,上面说到的不管是 1 个参数的,还是 2 个参数的都有什么共同的特点? |
| 137 | + |
| 138 | +不知道你们有没有发现,他都是每次递增 1 的。 |
| 139 | + |
| 140 | +`range(3)` 就是 0 ,1,2 ,每次递增 1 。 |
| 141 | + |
| 142 | +`range(3,6)` 就是 3 ,4 ,5 ,也是每次递增 1 的。 |
| 143 | + |
| 144 | +那能不能每次不递增 1 呢? |
| 145 | + |
| 146 | +比如我想递增 2 呢? |
| 147 | + |
| 148 | +在程序的编写中,肯定会遇到这样的需求的。而 python 发展至今,range 函数肯定也会有这种功能。 |
| 149 | + |
| 150 | +所以 range 函数还有一个三个参数的。 |
| 151 | + |
| 152 | +比如 `range(0,10,2) ` , 它的意思是:从 0 数到 10(不取 10 ),每次间隔为 2 。 |
| 153 | + |
| 154 | + |
| 155 | + |
| 156 | + |
| 157 | + |
| 158 | + |
| 159 | + |
| 160 | + |
| 161 | +## 4、While 循环语句 ## |
| 162 | + |
| 163 | +While 循环和 for 循环的作用是一样的。 |
| 164 | + |
| 165 | +我们先来看看 While 循环语句的样子。 |
| 166 | + |
| 167 | + |
| 168 | + |
| 169 | +程序输出的结果是: |
| 170 | + |
| 171 | +```txt |
| 172 | +5050 |
| 173 | +``` |
| 174 | + |
| 175 | +这个例子是计算 1 到 100 所有整数的和。 |
| 176 | + |
| 177 | + |
| 178 | + |
| 179 | +## 5、for 循环和 whlie 循环的区别 ## |
| 180 | + |
| 181 | +之前也提到过了,如果一种语法能表示一个功能,那没必要弄两种语法来表示。 |
| 182 | + |
| 183 | +竟然都是循环,for 循环和 while 循环肯定有他们的区别的。 |
| 184 | + |
| 185 | +那什么时候才使用 for 循环和 while 循环呢? |
| 186 | + |
| 187 | +* for 循环主要用在迭代可迭代对象的情况。 |
| 188 | + |
| 189 | +* while 循环主要用在需要满足一定条件为真,反复执行的情况。 |
| 190 | +(死循环+break 退出等情况。) |
| 191 | + |
| 192 | +* 部分情况下,for 循环和 while 循环可以互换使用。 |
| 193 | + |
| 194 | +例如: |
| 195 | + |
| 196 | +```python |
| 197 | +for i in range(0, 10): |
| 198 | + print(i) |
| 199 | + |
| 200 | + |
| 201 | +i = 0 |
| 202 | +while i < 10: |
| 203 | + print(i) |
| 204 | + i = i + 1 |
| 205 | +``` |
| 206 | + |
| 207 | +虽然打印的结果是一样的,但是细细品味你会发现,他们执行的顺序和知道的条件是不同的。 |
| 208 | + |
| 209 | + |
| 210 | + |
| 211 | +## 6、嵌套循环 ## |
| 212 | + |
| 213 | +循环语句和条件语句一样,都是可以嵌套的。 |
| 214 | + |
| 215 | +具体的语法如下: |
| 216 | + |
| 217 | +**for 循环嵌套语法** |
111 | 218 |
|
112 | 219 | ```python |
113 | 220 | for iterating_var in sequence: |
| 221 | + for iterating_var in sequence: |
| 222 | + statements(s) |
114 | 223 | statements(s) |
115 | 224 | ``` |
116 | 225 |
|
117 | | -实例: |
| 226 | +**while 循环嵌套语法** |
118 | 227 |
|
119 | 228 | ```python |
120 | | -for letter in 'Hello 两点水': |
121 | | - print(letter) |
| 229 | +while expression: |
| 230 | + while expression: |
| 231 | + statement(s) |
| 232 | + statement(s) |
122 | 233 | ``` |
123 | 234 |
|
124 | | -输出的结果如下: |
| 235 | +除此之外,你也可以在循环体内嵌入其他的循环体,如在 while 循环中可以嵌入 for 循环, 反之,你可以在 for 循环中嵌入 while 循环 |
| 236 | + |
| 237 | +比如: |
| 238 | + |
| 239 | +当我们需要判断 sum 大于 1000 的时候,不在相加时,可以用到 break ,退出整个循环。 |
| 240 | + |
| 241 | +```python |
| 242 | +count = 1 |
| 243 | +sum = 0 |
| 244 | +while (count <= 100): |
| 245 | + sum = sum + count |
| 246 | + if ( sum > 1000): #当 sum 大于 1000 的时候退出循环 |
| 247 | + break |
| 248 | + count = count + 1 |
| 249 | +print(sum) |
| 250 | +``` |
| 251 | + |
| 252 | +输出的结果: |
125 | 253 |
|
126 | 254 | ```txt |
127 | | -H |
128 | | -e |
129 | | -l |
130 | | -l |
131 | | -o |
| 255 | +1035 |
| 256 | +``` |
132 | 257 |
|
133 | | -两 |
134 | | -点 |
135 | | -水 |
| 258 | +有时候,我们只想统计 1 到 100 之间的奇数和,那么也就是说当 count 是偶数,也就是双数的时候,我们需要跳出当次的循环,不想加,这时候可以用到 break |
| 259 | + |
| 260 | +```python |
| 261 | +count = 1 |
| 262 | +sum = 0 |
| 263 | +while (count <= 100): |
| 264 | + if ( count % 2 == 0): # 双数时跳过输出 |
| 265 | + count = count + 1 |
| 266 | + continue |
| 267 | + sum = sum + count |
| 268 | + count = count + 1 |
| 269 | +print(sum) |
136 | 270 | ``` |
137 | 271 |
|
138 | | -有 while … else 语句,当然也有 for … else 语句啦,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。 |
| 272 | +输出的语句: |
| 273 | + |
| 274 | +```txt |
| 275 | +2500 |
| 276 | +``` |
| 277 | + |
| 278 | +还有: |
139 | 279 |
|
140 | 280 | ```python |
141 | 281 | for num in range(10,20): # 迭代 10 到 20 之间的数字 |
@@ -163,28 +303,11 @@ for num in range(10,20): # 迭代 10 到 20 之间的数字 |
163 | 303 | 19 是一个质数 |
164 | 304 | ``` |
165 | 305 |
|
166 | | -## 3、嵌套循环 ## |
167 | | - |
168 | | -Python 语言允许在一个循环体里面嵌入另一个循环。上面的实例也是使用了嵌套循环的,这里就不给出实例了。 |
169 | | - |
170 | | -具体的语法如下: |
171 | 306 |
|
172 | | -**for 循环嵌套语法** |
| 307 | +当然,这里还用到了 `for … else` 语句。 |
173 | 308 |
|
174 | | -```python |
175 | | -for iterating_var in sequence: |
176 | | - for iterating_var in sequence: |
177 | | - statements(s) |
178 | | - statements(s) |
179 | | -``` |
| 309 | +其实 for 循环中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行。 |
180 | 310 |
|
181 | | -**while 循环嵌套语法** |
| 311 | +当然有 `for … else` ,也会有 `while … else` 。他们的意思都是一样的。 |
182 | 312 |
|
183 | | -```python |
184 | | -while expression: |
185 | | - while expression: |
186 | | - statement(s) |
187 | | - statement(s) |
188 | | -``` |
189 | 313 |
|
190 | | -除此之外,你也可以在循环体内嵌入其他的循环体,如在 while 循环中可以嵌入 for 循环, 反之,你可以在 for 循环中嵌入 while 循环 |
|
0 commit comments