|
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