导航
导航
文章目录
  1. 6.1 简介
  2. 6.2 if语句
    1. 使用if语句
    2. 输出
    3. 如何工作
  3. 6.3 while语句
    1. 使用while语句
    2. 输出
    3. 如何工作
  4. 6.4 for循环
    1. 使用for语句
    2. 输出
    3. 如何工作
  5. 6.5 break语句
    1. 使用break语句
    2. 输出
    3. 如何工作
  6. 6.6 continue语句
    1. 使用coninue语句
    2. 输出
    3. 如何工作

简明Python教程-6.控制流

6.1 简介

通过控制流语句实现语句流的执行顺序。
Python中有三种控制流语句——if、for和while

6.2 if语句

if语句用来检验一个条件
如果为真,运行一块语句(称为if-块)
否则,处理另外一块语句(称为else-块)
else从句是可选的

使用if语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/python
# Filename: if.py

number = 23
guess = int(raw_input('Enter an integer : '))

if guess == number:
print 'Congratulations, you guessed it.' # New block starts here
print "(but you do not win any prizes!)" # New block ends here
elif guess < number:
print 'No, it is a little higher than that' # Another block
# You can do whatever you want in a block ...
else:
print 'No, it is a little lower than that'
# you must have guess > number to reach here

print 'Done'
# This last statement is always executed, after the if statement is executed

输出

1
2
3
4
5
6
7
8
9
10
11
12
13
$ python if.py
Enter an integer : 50
No, it is a little lower than that
Done
$ python if.py
Enter an integer : 22
No, it is a little higher than that
Done
$ python if.py
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
Done

如何工作

程序首先将目标数字预设为23
然后通过raw_input()函数获取用户猜测的数字(函数是重用的程序段,见下一章)
接下来将用户猜测与目标数字做比较,打印相应消息
* Python中没有switch语句,可以使用if..elif..else语句或字典来完成同样的工作

6.3 while语句

while语句是循环语句的一个例子
在一个条件为真的情况下,while语句重复执行一块语句
while语句有一个可选的else语句

使用while语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/python
# Filename: while.py

number = 23
running = True

while running:
guess = int(raw_input('Enter an integer : '))

if guess == number:
print 'Congratulations, you guessed it.'
running = False # this causes the while loop to stop
elif guess < number:
print 'No, it is a little higher than that'
else:
print 'No, it is a little lower than that'
else:
print 'The while loop is over.'
# Do anything else you want to do here

print 'Done'

输出

1
2
3
4
5
6
7
8
9
$ python while.py
Enter an integer : 50
No, it is a little lower than that.
Enter an integer : 22
No, it is a little higher than that.
Enter an integer : 23
Congratulations, you guessed it.
The while loop is over.
Done

如何工作

让用户不断地猜数直到猜对为止,而不像刚才每次都需要重复执行一遍程序
raw_input和if语句被移到了while循环内,并在while循环开始前把running设为True
一直到running变为False,循环停止,执行else块
else实际上是多余的,可以将其中的语句放在与while同一个语句块中

6.4 for循环

for..in是另外一个循环语句
在一序列的对象上逐一使用队列中的每个项目(后续会学习序列)

使用for语句

1
2
3
4
5
6
7
#!/usr/bin/python
# Filename: for.py

for i in range(1, 5):
print i
else:
print 'The for loop is over'

输出

1
2
3
4
5
6
$ python for.py
1
2
3
4
The for loop is over

如何工作

使用range函数生成一个数的序列,然后打印这个序列的数
range函数:
range从第一个参数到第二个参数为止,返回一个序列
如range(1,5)返回序列[1,2,3,4]
默认步长为1,可以用第三个参数指定
如range(1,5,2)返回[1,3]
range向上延伸到第二个参数,不包含第二个参数

for循环在序列内依次复制给i(for i in range(1,5)等价于for i in [1,2,3,4]),然后打印
else是可选的,总是在for循环结束后执行一次,除非遇到break语句
for..in循环对于任何序列都使用,可以使用任何种类的由任何对象组成的序列

6.5 break语句

break语句是用来终止循环语句的
如果从for或while循环中break,相应的else块将不执行

使用break语句

1
2
3
4
5
6
7
8
9
#!/usr/bin/python
# Filename: break.py

while True:
s = raw_input('Enter something : ')
if s == 'quit':
break
print 'Length of the string is', len(s)
print 'Done'

输出

1
2
3
4
5
6
7
8
9
10
11
$ python break.py
Enter something : Programming is fun
Length of the string is 18
Enter something : When the work is done
Length of the string is 21
Enter something : if you wanna make your work also fun:
Length of the string is 37
Enter something : use Python!
Length of the string is 12
Enter something : quit
Done

如何工作

循环获取输入,并利用内建的len函数获取输入长度,并输出
当用户输入quit时,停止程序

6.6 continue语句

continue语句告诉Python跳过当前循环块中的剩余语句,然后继续下一轮循环

使用coninue语句

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/python
# Filename: continue.py

while True:
s = raw_input('Enter something : ')
if s == 'quit':
break
if len(s) < 3:
continue
print 'Input is of sufficient length'
# Do other kinds of processing here...

输出

1
2
3
4
5
6
$ python continue.py
Enter something : a
Enter something : 12
Enter something : abc
Input is of sufficient length
Enter something : quit

如何工作

用户输入字符,仅当它们长度大于等于3时才处理,否则直接continue,忽略块中的剩余语句