ubuntu16.04 Python2.7 控制流程语法(三)
前言
当我们熟知python可以做字符串处理,接下来就要深入学习一些它所用的语句,以及函数;当我熟悉这些流程语句时,我们就可以简单做一些任务,处理简单的当下脚本化工作;那就拭目以待吧!
其他流程控制工具
除了上一节的while语句,python还有和其他语言类似的控制语句,比如for,if,else,continue,break等,让我们一个个介绍一下;
if 语句
if ,elif,else 被人熟知
>>> x = int(raw_input("Please enter an integer: "))
Please enter an integer: 42
>>> if x < 0:
... x = 0
... print 'Negative changed to zero'
... elif x == 0:
... print 'Zero'
... elif x == 1:
... print 'Single'
... else:
... print 'More'
...
More
for 语句
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
语法:
for循环的语法格式如下:
for iterating_var in sequence:
statements(s)
使用案例如下:
>>> #test
... word = ['hello','world','python']
>>> for w in word:
... print w, len(w)
...
hello 5
world 5
python 6
>>>
也可以在循环内做一些插入insert函数
>>> # Measure some strings:
... words = ['cat', 'window', 'defenestrate']
>>> for w in words[:]: # Loop over a slice copy of the entire list.
... if len(w) > 6:
... words.insert(0, w)
...
>>> words
['defenestrate', 'cat', 'window', 'defenestrate']
range 函数
range(start, stop[, step])
参数说明:
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
下面列举一些例子
>>> range(11) # 从0到 11
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>
>>>range(10) # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11) # 从 1 开始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5) # 步长为 5
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3) # 步长为 3
[0, 3, 6, 9]
>>> range(0, -10, -1) # 负数
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]
以下是 range 在 for 中的使用,循环出python的每个字母:
>>> x = 'python'
>>> for i in range(len(x)):
... print(x[i])
...
p
y
t
h
o
n
>>>
Python break 语句
break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。break语句主要用在while和for循环中。如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。
>>> for x in 'python':
... if x == 't':
... break
... print x
...
p
y
>>>
Python continue 语句
Python continue 语句跳出本次循环,而break跳出整个循环。continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。continue语句用在while和for循环中。
>>> for x in 'python':
... if x == 't':
... continue
... print x
...
p
y
h
o
n
>>>
Python 循环嵌套
Python允许一个循环嵌套到另一个循环里;
Python for 循环嵌套语法:
for iterating_var in sequence:
for iterating_var in sequence:
statements(s)
statements(s)
Python while 循环嵌套语法:
while expression:
while expression:
statement(s)
statement(s)
你可以在循环体内嵌入其他的循环体,如在while循环中可以嵌入for循环, 反之,你可以在for循环中嵌入while循环。
>>> for n in range(2, 10):
... for x in range(2, n):
... if n % x == 0:
... print n, 'equals', x, '*', n/x
... break
... else:
... # loop fell through without finding a factor
... print n, 'is a prime number'
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3
(是的,这是正确的代码。仔细看: else 子句属于 for 循环, 不属于 if 语句。)
Python pass 函数
Python pass 是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。
>>> while True:
... pass # Busy-wait for keyboard interrupt (Ctrl+C)
...
这通常用于创建最小的类:
>>> class MyEmptyClass:
... pass
...
定义函数
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
关键字 def 引入一个函数 定义。它必须后跟函数名称和带括号的形式参数列表。构成函数体的语句从下一行开始,并且必须缩进。
我们可以创建一个输出任意范围内 Fibonacci 数列的函数:
>>> def fib(n): # write Fibonacci series up to n
... """Print a Fibonacci series up to n."""
... a, b = 0, 1
... while a < n:
... print a,
... a, b = b, a+b
...
>>> # Now call the function we just defined:
... fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597