控制流
/ w9 l9 C1 ^) I* \1 I8 W$ e+ N/ w: ?7 w% o+ S
简介
- r6 i5 A' m3 \% `/ f% G" q r- Z R1 K7 L u* d+ C4 f3 z4 B
在到目前为止我们所见到的程序中,总是有一系列的语句,Python 忠实地按照它们的顺序执行它们。如果你想要改变语句流的执行顺序,该怎么办呢?例如,你想要让程序做一些决定,根据不同的情况做不同的事情,例如根据时间打印“早上好”或者“晚上好”。
9 @/ n+ g d( n1 u
7 c. D# h6 F0 w& w# M* |你可能已经猜到了,这是通过控制流语句实现的。在 Python 中有三种控制流语句—— if、for 和 while。5 g7 A$ v7 P1 N- r" F
6 b6 m+ E' F. \$ ?! S
if 语句
5 @/ Z4 t0 Z' \9 E1 F
- q7 w( _6 U+ Eif 语句用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ), 否则 我们处理另外一块语句(称为 else-块 )。 else 从句是可选的。6 ~+ i1 I; b7 k
h! {; X3 Q1 W1 C使用 if 语句
; L; G( `9 @6 e2 S6 t2 J6 o# E/ h7 H0 c1 R% v6 l/ P' j% r- X
例 6.1 使用 if 语句3 Y# ^7 E3 @% X3 h! w9 W
: {0 m3 n! h1 N% m6 R/ ^' [2 ]& Y3 [; ]
s8 D1 z/ I/ O! e+ k6 m
- #!/usr/bin/python" ^" }* E. y# |0 ^
- # Filename: if.py
+ M* M2 ~9 s0 O9 `. J$ g - 3 q8 s6 \; M& l7 s& Y1 }
- number = 237 O; S& f. c$ A/ A, O
- guess = int(raw_input('Enter an integer : '))
% X+ a: K9 k9 p8 K" D) O
g! ?6 Y3 @1 {' q2 H5 S- if guess == number:
+ j0 m+ e1 P2 m' s, `# } - print 'Congratulations, you guessed it.' # New block starts here1 h, ^ P6 [1 k8 r0 F9 v, x: E! a
- print "(but you do not win any prizes!)" # New block ends here
1 R, a$ u, E# L! }* F) Q - elif guess < number:
. |. y7 L0 E# [4 A, q- J. P7 ~( o1 x - print 'No, it is a little higher than that' # Another block
5 g- }! y4 Y! ?" p8 Q9 U% P- E/ H - # You can do whatever you want in a block ...
2 {; I1 z) D" z' u1 k; g' s+ i - else:
* c& s5 j8 g- k - print 'No, it is a little lower than that' - V; D6 z0 y; W6 R, K4 Y6 I0 \1 j
- # you must have guess > number to reach here$ u- V/ G- e% o2 M3 F7 I" X( b7 O0 {1 B7 X
, }' [$ n$ R1 v( k! I" e- print 'Done'* |; e3 }8 m5 J1 F
- # This last statement is always executed, after the if statement is executed
' E3 p0 V4 W# T, ?+ I4 ?9 |* s1 i0 s: m
复制代码 7 E! U9 ]) ^' x$ z* }
输出
0 p$ }$ H- E( A6 I. q9 E* K! j3 K4 g/ c5 ?. |
- $ python if.py
- X" o6 ~1 ]8 A4 g- ]! Z7 z - Enter an integer : 50 v$ W1 s) f5 g2 a/ `: Q0 k& c
- No, it is a little lower than that
8 d* j- K% O$ T- u5 w - Done
. }- S6 O% T) A. T/ \5 F) P R) {) F - $ python if.py/ C6 X+ s, }6 p, \- |/ ?
- Enter an integer : 22
) d, f9 r8 o9 \: t - No, it is a little higher than that2 W7 D: t/ @, P# {9 e- L$ [- D# z
- Done t. ^2 s R+ x! G/ w% h+ D; h
- $ python if.py
& e7 I% i5 k( l3 w6 { - Enter an integer : 23
) ^4 M% k# {' N( }9 [7 y - Congratulations, you guessed it.
5 f9 `+ T1 _( U6 B/ P7 A - (but you do not win any prizes!)- Q3 o8 \4 U6 Z9 w) t
- Done
复制代码 ! g! v2 G* E, P$ L% o& R
它如何工作
3 B" Q0 P0 V9 J2 r3 n7 R5 f- Z
* v# S; T& N* [0 C! G4 T+ h. K6 k+ a+ h在这个程序中,我们从用户处得到猜测的数,然后检验这个数是否是我们手中的那个。我们把变量 number 设置为我们想要的任何整数,在这个例子中是 23。然后,我们使用 raw_input()函数取得用户猜测的数字。函数只是重用的程序段。我们将在下一章学习更多关于函数的知识。6 b' y, q* B8 ^4 T. K- t0 a1 V
$ C) \$ P% M, G, G' @) Q% E( ^我们为内建的 raw_input 函数提供一个字符串,这个字符串被打印在屏幕上,然后等待用户的输入。一旦我们输入一些东西,然后按回车键之后,函数返回输入。对于 raw_input 函数来说是一个字符串。我们通过 int 把这个字符串转换为整数,并把它存储在变量 guess 中。事实上,int 是一个类,不过你想在对它所需了解的只是它把一个字符串转换为一个整数(假设这个字符串含有一个有效的整数文本信息)。5 C4 a! n* ]! {* k* P3 X
P. O2 a( C7 S7 z接下来,我们将用户的猜测与我们选择的数做比较。如果他们相等,我们打印一个成功的消息。注意我们使用了缩进层次来告诉 Python 每个语句分别属于哪一个块。这就是为什么缩进在 Python 如此重要的原因。我希望你能够坚持“每个缩进层一个制表符”的规则。你是这样的吗?
$ b7 a; e( T4 Z0 J/ L7 S" p! ^) \7 A5 U- a$ V$ ]; y
注意 if 语句在结尾处包含一个冒号——我们通过它告诉 Python 下面跟着一个语句块。
0 v! J) F( ~3 i9 J3 U6 ?. [) E" J# @
然后,我们检验猜测是否小于我们的数,如果是这样的,我们告诉用户它的猜测大了一点。我们在这里使用的是 elif 从句,它事实上把两个相关联的 if else-if else 语句合并为一个 if-elif-else 语句。这使得程序更加简单,并且减少了所需的缩进数量。
7 B b( P2 X+ E$ v1 r$ i, i) y" P3 T5 c) a: B
elif 和 else 从句都必须在逻辑行结尾处有一个冒号,下面跟着一个相应的语句块(当然还包括正确的缩进)。7 o4 H6 e. F0 v9 P) O/ K
* n& c) n8 O" r7 m* q: X你也可以在一个 if 块中使用另外一个 if 语句,等等——这被称为嵌套的 if 语句。
& X2 i# k M! K
( ^ V3 A, j0 j7 z记住,elif 和 else 部分是可选的。一个最简单的有效 if 语句是:
2 g8 O, ?, ^% ]! z6 j
! ]1 R4 N$ h2 f; Z# t1 Z/ I G: J- ! z0 \/ w; H' K4 K8 r+ t9 H
- if True:
7 f$ S4 h) T- M" G1 {/ R3 C1 ?& L5 j - print 'Yes, it is true'
复制代码
) b5 x- I9 Z. _0 Q$ W; X
7 ]9 U8 b) b; i# r$ Z# a6 [. c在 Python 执行完一个完整的 if 语句以及与它相关联的 elif 和 else 从句之后,它移向 if 语句块的下一个语句。在这个例子中,这个语句块是主块。程序从主块开始执行,而下一个语句是 print 'Done'语句。在这之后,Python 看到程序的结尾,简单的结束运行。
6 I. x1 J `" E* f! T; }. u+ Z5 n! ^ B' J
尽管这是一个非常简单的程序,但是我已经在这个简单的程序中指出了许多你应该注意的地方。所有这些都是十分直接了当的(对于那些拥有 C/C++背景的用户来说是尤为简单的)。它们在开始时会引起你的注意,但是以后你会对它们感到熟悉、“自然”。
) {+ j6 H# W/ O
6 J7 c3 e- a7 w, d, {1 E给C/C++程序员的注释& y7 j u, E# a4 _% |! ^5 b
在 Python 中没有 switch 语句。你可以使用 if..elif..else 语句来完成同样的工作(在某些场合,使用字典会更加快捷。)/ f( d2 X1 ^! A% `% c
' m" @( \( Q2 J( ^6 T, K
while 语句
; [5 O6 p. U) z l) \
3 ~0 {6 G* {* D9 t只要在一个条件为真的情况下,while 语句允许你重复执行一块语句。while 语句是所谓 循环 语句的一个例子。while 语句有一个可选的 else 从句。9 r; x6 Z8 J |* T" U; d
! x1 R! n4 Y! ~8 m' n: ~! u使用 while 语句
/ } M: B$ x& X5 l7 J, W) w! @
; D" a( v9 `4 O( w4 }( f( G1 N1 L* ^7 \例 6.2 使用 while 语句
: G. {" R* G7 T% U4 ]8 ]( h1 O$ c, x4 |. d6 U, C& G; u
- #!/usr/bin/python; Z* f9 z% j( e0 \
- # Filename: while.py
" Q' U- o# v) I# ~& \ - f; S; \" B# I; {4 I
- number = 23* Z" d$ \1 l$ a- S( q( K! u
- running = True
d" i U+ x7 K+ A - & \3 f5 O5 R- y6 V7 l
- while running:
- \8 O, [+ B! \( y8 G _ - guess = int(raw_input('Enter an integer : '))
- `9 j. t! U+ d L - ( s! t0 ]& q7 m
- if guess == number:6 B$ E B7 \* I! }
- print 'Congratulations, you guessed it.'
6 Q$ v! C/ n+ ^# N3 e - running = False # this causes the while loop to stop
: q9 q% U& p/ q" z1 p( x. r. a - elif guess < number:3 n6 i, b+ J4 @( p
- print 'No, it is a little higher than that'
4 ~! y: i- h8 v# L f4 q; o S - else:
% Q. m7 y, ^, M3 u - print 'No, it is a little lower than that'
" k. i/ |5 I) L/ L$ E7 K1 L$ v - else:
! b# F- l$ E( m0 B/ W% E9 F - print 'The while loop is over.'
9 P( Z3 v! s) Y7 N7 q! \! Q - # Do anything else you want to do here- v' q( k1 p. G3 Q
/ C# d# L4 G) M, H* R- print 'Done'
复制代码
3 [" R) V+ k) r9 x' x V# q
1 z5 b, C4 G. G. k8 `
5 ~: v% P/ |1 R输出
5 s) _+ h0 L* a8 }6 @, t( A/ Z+ W- k( j d, S% Y5 E1 i
- $ python while.py
! M; s8 R4 o, [% A0 z! g - Enter an integer : 50
/ B- n0 A+ u" |2 ]9 Y K6 s6 s - No, it is a little lower than that.- i7 Y2 ]% r7 a
- Enter an integer : 22
8 v2 z9 c" x0 z. b- v+ L: ~ - No, it is a little higher than that.) M+ g. a3 ?4 V* \
- Enter an integer : 23
8 e% N9 B" a& Y. J - Congratulations, you guessed it.
0 a/ b0 w' i6 }4 _7 H - The while loop is over.
/ D% J! {8 O: A4 D - Done
复制代码 ' B1 L1 H, M, l8 c7 U( W4 i
它如何工作
; H0 q) y. b3 g$ z6 A6 V6 \* Z% q! J2 O9 V z0 E3 v+ l9 [
在这个程序中,我们仍然使用了猜数游戏作为例子,但是这个例子的优势在于用户可以不断的猜数,直到他猜对为止——这样就不需要像前面那个例子那样为每次猜测重复执行一遍程序。这个例子恰当地说明了 while 语句的使用。
0 U# B: f! q" V3 D' ^6 m& t
3 `" x- e4 }0 A1 l我们把 raw_input 和 if 语句移到了 while 循环内,并且在 while 循环开始前把 running 变量设置为 True。首先,我们检验变量 running 是否为 True,然后执行后面的 while-块 。在执行了这块程序之后,再次检验条件,在这个例子中,条件是 running 变量。如果它是真的,我们再次执行 while-块,否则,我们继续执行可选的 else-块,并接着执行下一个语句。/ D2 I/ j/ e7 P5 Q6 ]4 P6 c5 ^% v; G
# C0 w( ~ a7 V% B: H* _% L+ A当 while 循环条件变为 False 的时候,else 块才被执行——这甚至也可能是在条件第一次被检验的时候。如果 while 循环有一个 else 从句,它将始终被执行,除非你的 while 循环将永远循环下去不会结束!
+ H2 _0 w( V( m9 p
; t8 S* y% z- f! D7 [/ @4 \+ {True 和 False 被称为布尔类型。你可以分别把它们等效地理解为值 1 和 0。在检验重要条件的时候,布尔类型十分重要,它们并不是真实的值 1。
7 f+ p! N+ v+ @% V1 N- ?& }( b) P3 S% | q+ z+ i
else 块事实上是多余的,因为你可以把其中的语句放在同一块(与 while 相同)中,跟在 while 语句之后,这样可以取得相同的效果。3 ~$ E9 L$ ~ v$ L$ f0 c
/ x& Y; p: e6 u& L# ^( w: S, |; G给 C/C++程序员的注释# B' T _) l2 A- s6 u
记住,你可以在 while 循环中使用一个 else 从句。2 k9 {. E( r, j. [
/ V! E1 V2 }: A6 V( O4 u+ g
for 循环
; h2 }* Y6 Z& f/ E) _7 `8 {* E) G, W) D% {) b4 s8 A7 Z
for..in 是另外一个循环语句,它在一序列的对象上 递归 即逐一使用队列中的每个项目。我们会在后面的章节中更加详细地学习序列。" a# Y7 l8 ?, t h$ T% k& D
" q. r$ r* g0 k" {
使用 for 语句
1 X& \( Y! K4 `/ b3 H W6 b0 y+ E& U
例 6.3 使用 for 语句
0 I. a7 {2 a" A$ b8 d6 U$ E- L J; Y0 a6 E5 L/ [: ^7 [' X' O0 I
" V3 X4 f/ }2 U3 C' [$ V+ _
- #!/usr/bin/python
2 w* _3 ^' v" x2 F' o+ s4 @- }" f: M - # Filename: for.py6 k$ z9 _/ Z7 }3 o0 f$ J% U5 m
0 n/ m8 H# H4 M. C4 m8 C- for i in range(1, 5):
6 ]3 w3 l! U) K+ S5 g3 j - print i
4 k6 E5 z+ j( ` - else:
. S+ c+ C# i7 R3 U9 L - print 'The for loop is over'
复制代码
- S" s3 `: a0 i: W x输出. z) h6 ?9 u$ W( H' @& }
3 S& K# i8 k3 A+ b5 F- $ python for.py4 S. V6 t \2 B: N- L
- 1
! P& A# B+ c# |- E! @. x% o - 2 D" A6 ~) @) G5 Y8 S6 O+ D
- 3
4 E4 t! o. P& s - 4
c) [3 e* I9 a; q - The for loop is over
复制代码 5 l+ j( \* l( H, K5 k) c( g1 u# D" z
它如何工作, E2 f" U8 M6 ]
! p/ F G. q" L% G在这个程序中,我们打印了一个 序列 的数。我们使用内建的 range 函数生成这个数的序列。
3 N* K7 C; o& H. a: }
$ R) `3 h8 a% f5 h我们所做的只是提供两个数,range 返回一个序列的数。这个序列从第一个数开始到第二个数为止。例如,range(1,5)给出序列[1, 2, 3, 4]。默认地,range 的步长为 1。如果我们为range 提供第三个数,那么它将成为步长。例如,range(1,5,2)给出[1,3]。记住,range 向上 延伸到第二个数,即它不包含第二个数。: u- H+ S8 c1 a
; l3 p+ Y! z& |8 ifor 循环在这个范围内递归—— for i in range(1,5)等价于 for i in [1, 2, 3, 4],这就如同把序列中的每个数(或对象)赋值给 i,一次一个,然后以每个 i 的值执行这个程序块。在这个例子中,我们只是打印 i 的值。* ?' Z# C5 U+ x9 {
, R- P1 g% ?. T/ V z& X. g1 m记住,else 部分是可选的。如果包含 else,它总是在 for 循环结束后执行一次,除非遇到 break 语句。, O7 T( D# T% b* K% ^6 L
! G4 y$ L. x) u- o, r/ A0 g记住,for..in 循环对于任何序列都适用。这里我们使用的是一个由内建 range 函数生成的数的列表,但是广义说来我们可以使用任何种类的由任何对象组成的序列!我们会在后面的章节中详细探索这个观点。
) r' C4 J. R' j0 {) b2 k1 ~, L/ S
8 o* z2 z" P- E g6 x6 F5 k) s给 C/C++/Java/C#程序员的注释
& l4 {+ n% q Q/ u' n, k; J7 TPython 的 for 循环从根本上不同于 C/C++的 for 循环。C#程序员会注意到 Python 的 for 循环与 C#中的 foreach 循环十分类似。Java 程序员会注意到它与 Java 1.5 中的 for (int i : IntArray)相似。 在 C/C++中,如果你想要写 for (int i = 0; i < 5; i++),那么用 Python,你写成 for i in range(0,5)。你会注意到,Python 的 for 循环更加简单、明白、不易出错。8 n5 g6 x/ S* W v6 x' o2 }
1 i* k$ w% }8 h5 l. h% b
break 语句; ]8 ^1 c; a" B% y4 f* p X4 _
7 {/ `$ U7 r5 J# ^+ |; Tbreak 语句是用来 终止 循环语句的,即哪怕循环条件没有称为 False 或序列还没有被完全递归,也停止执行循环语句。7 b& m! n6 `# O) l7 |
. n. P [. D. n3 y: q
一个重要的注释是,如果你从 for 或 while 循环中 终止 ,任何对应的循环 else 块将不执行。/ L! s% e1 E: W
! O+ Y c, _; ` d& m+ [
使用 break 语句. [8 q$ \" t9 j' ]
+ k0 `" ^& D; n' b2 l" p例 6.4 使用 break 语句. @5 Y# Y8 J& J) L/ p
0 F+ B, Q% Q2 u' w+ C" F
- #!/usr/bin/python
$ E0 u. j3 q- i( L; E- P+ F/ l' G - # Filename: break.py
2 O4 B% @- z: u3 t; u, X8 a" K
2 t2 i' n, @" t4 W- while True:
# V, w5 V9 X& |9 A$ G5 W6 i - s = raw_input('Enter something : ')
K! i- E( ? k: Y7 j8 O - if s == 'quit':
) K& Y7 S5 C6 m5 P$ S/ } - break
: O& ?# u' }8 b! J6 g - print 'Length of the string is', len(s)4 A4 h+ B8 O* i1 j2 l6 F" W
- print 'Done'#!/usr/bin/python' S6 Q Q0 M9 d% d
- # Filename: break.py- e' Z# V9 Q+ S( a; t
, k- `5 E- R; W9 m' X; ~- while True:6 B6 G& e1 q6 q( o- S
- s = raw_input('Enter something : ')8 m- k: p' o" `4 {0 a$ W
- if s == 'quit':
, Y5 v1 j1 }; ?3 W# Q - break/ k" O. m6 ~- x* v! ]* ^
- print 'Length of the string is', len(s)
' C( \ t6 s J" s - print 'Done'
复制代码
3 j. ~: O) `4 U# V# T6 U) x输出
$ ~$ {+ Q5 w1 _6 n
. v5 E: @+ d" } E( T& [1 f5 S1 ?, s) I* G
- $ python break.py* |5 J% R" D& B/ H3 ?- Q4 m
- Enter something : Programming is fun$ A; W4 T2 Y* k7 z
- Length of the string is 18. e2 B) @8 S" I2 V* L% D) q' z0 q t
- Enter something : When the work is done
( v/ L$ e5 Q. q# N$ v* I2 H7 z& i. r - Length of the string is 21
2 ]7 F, f! M$ E5 Q) i - Enter something : if you wanna make your work also fun:( F& o- a( v' J- ?* r( \2 k# n
- Length of the string is 37
' o) T9 _: s' Q3 C" Z2 O$ F - Enter something : use Python!
1 H# R3 g$ ~0 E2 f0 j - Length of the string is 12( }9 C& \2 k* E
- Enter something : quit* q1 `6 \, a# z/ A
- Done
复制代码
7 f) b9 R2 ]8 k4 N它如何工作# I2 l1 l2 y1 M S* w/ ?
8 [$ u- p% U9 d2 N O; _) e在这个程序中,我们反复地取得用户地输入,然后打印每次输入地长度。我们提供了一个特别的条件来停止程序,即检验用户的输入是否是'quit'。通过 终止 循环到达程序结尾来停止程序。
8 o7 W1 _' r; }: o
% ~: e3 F0 o% \; l) R+ \7 \输入字符串的长度通过内建的 len 函数取得。
) i) o" d. @6 N' T' w6 k7 [7 [' }7 c' o4 a3 ?* {5 `, @
记住,break 语句也可以在 for 循环中使用。3 t3 D c7 f" {- F7 c8 _; _
1 G4 `4 f6 I' vG2 的 Python 诗& ]8 @0 w6 s7 Z* D% t
T1 s0 J: y6 A5 T1 d2 d
我在这里输入的是我所写的一段小诗,称为 G2 的 Python 诗:
; K( y. [# e4 c6 `% @) I( E6 K; C" y
- Programming is fun. @' v+ [: X' `* x
- When the work is done
' R3 E+ i- Q0 o( Y" g* Z$ s - if you wanna make your work also fun:
1 d& `9 l: a1 v; }9 _$ r - use Python!
复制代码
$ z( a) x+ d) I, Vcontinue 语句
1 M* B2 D' l7 j9 }# P5 Q. D0 x1 U+ \( V+ i9 T5 W' S" C2 Y2 t
continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后 继续 进行下一轮循环。) c3 u. M8 m/ b6 x5 }
* }; w5 @* `3 f) m" L
使用 continue 语句
+ H. r, M v# p. n) y+ y0 s
; w8 r% u( D4 \; ]' ?" d例 6.5 使用 continue 语句
: c' g+ R: E1 a4 j/ V& m b* G; ^) z% X/ k5 d" j% ~% Z
- #!/usr/bin/python# n4 }/ t6 B% a/ b9 ]2 {* ]8 C3 J! i
- # Filename: continue.py7 I9 o" B- }& o7 o8 a# C
: K/ S; r& | n5 v: q5 \- while True:
5 z5 V; `3 O. h* n6 p: v - s = raw_input('Enter something : ')
- R9 S/ r, ]7 j - if s == 'quit':
! p3 g% G. N5 t8 Y+ }) s - break9 m& G# x2 g+ a3 F( m! n, E
- if len(s) < 3: r' r% G& T# J5 Q7 u
- continue0 [3 d8 Y# E6 @" A9 D1 O8 `5 M$ [( Y
- print 'Input is of sufficient length'% P( E" e4 } f0 {6 Y/ k# @% j7 L
- # Do other kinds of processing here...
复制代码 0 p2 @# G, N) Y3 H3 x- D# i
输出7 r& U& X4 j% H; W! `( G$ _0 p# O
n4 v5 W9 }! c. `/ f: Z. x, x
- $ python continue.py- i6 c+ a+ ^1 ?& H/ h+ p; a
- Enter something : a
A$ G& z; K: S& L' D3 a; r% | - Enter something : 12
0 @& ^7 b4 f+ N* m" i. u - Enter something : abc& Z3 u+ s O& L0 ]
- Input is of sufficient length
0 z2 ~, q# |; w- \8 U - Enter something : quit $ python continue.py4 N5 `0 x9 E o3 H/ D
- Enter something : a" k) e6 S+ D8 W% x2 C
- Enter something : 12
& I1 G2 A! V# k7 k& E4 U- w - Enter something : abc
, N; D- W. R" V: k+ k' E0 P+ w% A - Input is of sufficient length# g K1 A" X# X8 x- ~
- Enter something : quit
复制代码 8 n5 i( J6 X; s. a# b* I% M
它如何工作
% f6 @8 ?9 ?/ A S! _
$ M1 P; D4 z' a3 C, [在这个程序中,我们从用户处取得输入,但是我们仅仅当它们有至少 3 个字符长的时候才处理它们。所以,我们使用内建的 len 函数来取得长度。如果长度小于 3,我们将使用 continue 语句忽略块中的剩余的语句。否则,这个循环中的剩余语句将被执行,我们可以在这里做我们希望的任何处理。 p! K* N/ \% c: C
; R: y1 R. Y, e注意,continue 语句对于 for 循环也有效。6 P8 R" O5 `5 \' r7 y; K
/ ^* W* m3 A- J5 I2 I5 Z概括$ F. G% F/ L. J# D! t! m+ w' U
' ?/ U5 M* I! i( z; C. k
我们已经学习了如何使用三种控制流语句—— if、while 和 for 以及与它们相关的 break 和 continue 语句。它们是 Python 中最常用的部分,熟悉这些控制流是应当掌握的基本技能。
2 k: U0 a+ t$ ?$ C1 c
1 D+ [7 {9 |; x$ O9 u, i1 w3 ^$ K接下来,我们将学习如何创建和使用函数。) m* }3 R! Q' }& p% p' O
|