一、简介
Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性。须重要理解,if、while、for以及与它们相搭配的 else、 elif、break、continue和pass语句。
二、详解
1、if语句
Python中的if子句由三部分组成:关键字本身、用于判断结果真假的条件表达式以及当表达式为真或者非零时执行的代码块。if 语句的语法如下:
if expression: expr_true_suite</div>
if 语句的expr_true_suite代码块只有在条件表达式的结果的布尔值为真时才执行,否则将继续执行紧跟在该代码块后面的语句。
(1)多重条件表达式
单个if语句可以通过使用布尔操作符and、or和not,实现多重判断条件或是否定判断条件。
(2)单一语句的代码块
如果一个复合语句(例如if子句、while或for循环)的代码块仅仅包含一行代码,那么它可以和前面的语句写在同一行上。如if make_hard_copy: send_data_to_printer(),这样的单行语句是合法的, 尽管它可能方便,但这样会使得代码更难阅读, 所以推荐将这行代码移到下一行并合理地缩进。另外一个原因就是如果你需要添加新的代码, 你还是得把它移到下一行。
2、else语句
Python提供了与if语句搭配使用的else语句,如果if语句的条件表达式的结果布尔值为假,那么程序将执行 else 语句后的代码。其语法如下:
if expression: expr_true_suite else: expr_false_suite</div>
在C语言中,不会在条件语句范围外发现else语句, 但Python不同,可以在while和for循环中使用else语句,在循环中使用时,else子句只在循环完成后执行,也就是说break语句也会跳过else块。
例:显示出10到20中的数字的最大约数
在CODE上查看代码片派生到我的代码片
#!/usr/bin/env python def showMaxFactor(num): count = num / 2 while count > 1: if (num % count == 0): print 'largest factor of %d is %d' % (num, count) break count = count - 1 else: print eachNum, 'is prime' for eachNum in range(10, 21): showMaxFactor(eachNum)</div>
在CODE上查看代码片派生到我的代码片
largest factor of 10 is 5 11 is prime largest factor of 12 is 6 13 is prime largest factor of 14 is 7 largest factor of 15 is 5 largest factor of 16 is 8 17 is prime largest factor of 18 is 9 19 is prime largest factor of 20 is 10</div>
3、elif (即else-if )语句
elif是Python的else-if 语句,它检查多个表达式是否为真,并在为真时执行特定代码块中的代码。和else一样,elif 声明是可选的,然而不同的是if 语句后最多只能有一个else语句,但可以有任意数量的 elif 语句。
if expression1: expr1_true_suite elif expression2: expr2_true_suite ... elif expressionN: exprN_true_suite else: none_of_the_above_suite</div>
在将来的某天,Python可能会支持 switch /case语句,但是完全可以用其他的Python结构来模拟它。在Python中,大量的if-elif 语句并不难阅读。
在CODE上查看代码片派生到我的代码片
if user.cmd == 'create': action = "create item" elif user.cmd == 'delete': action = 'delete item' elif user.cmd == 'update': action = 'update item' else: action = 'invalid choice... try again!'</div>
上面的语句还可以用序列和成员关系操作符来简化它:
在CODE上查看代码片派生到我的代码片
if user.cmd in ('create', 'delete', 'update'):
action = '%s item' % user.cmd
else:
action = 'invalid choice... try again!'
</div>
还可以用Python字典给出更加优雅的解决方案,使用映射对象(比如字典)的一个最大好处就是它的搜索操作比类似语句或是 for 循环这样的序列查询要快很多。
在CODE上查看代码片派生到我的代码片
msgs = {'create': 'create item',
'delete': 'delete item',
'update': 'update item'
}
default = 'invalid choice... try again!'
action = msgs.get(user.cmd, default)
</div>
4、条件表达式(即"三元操作符")
三元运算符语法为:X if C else Y,只需要一行完成条件判断和赋值操作:
在CODE上查看代码片派生到我的代码片
>>> x, y = 4, 3 >>> smaller = x if x < y else y >>> smaller 3</div>
5、while语句
while是一个条件循环语句,与if声明相比,如果 if 后的条件为真,就会执行一次相应的代码块。而while中的代码块会一直循环执行,直到循环条件不再为真。
(1)一般语法
while循环的语法如下:
while expression: suite_to_repeat</div>
while循环的suite_to_repeat子句会一直循环执行,直到expression值为布尔假。
(2)计数循环
count = 0 while (count < 9): print 'the index is:', count count += 1</div>
代码块里包含了print和自增语句,它们被重复执行,直到count不再小于9。索引count在每次迭代时被打印出来然后自增 1。
(3)无限循环
while True: handle, indata = wait_for_client_connect() outdata = process_request(indata) ack_result_to_client(handle, outdata)</div>
“无限”循环永远不会结束,但它不一定是坏事,许多通讯服务器的客户端/服务器系统就是通过它来工作的。
6、for语句
Python提供了的另一个循环机制就是for语句,它是Python中最强大的循环结构。它可以遍历序列成员,可以用在列表解析和生成器表达式中,它会自动地调用迭代器的next()方法,捕获StopIteration异常并结束循环(所有这一切都是在内部发生的)。 Python的for更像是shell或是脚本语言中的foreach循环。
(1)一般语法
for循环会访问一个可迭代对象(例如序列或是迭代器)中的所有元素,,并在所有条目都处理过后结束循环。它的语法如下:
for iter_var in iterable:
suite_to_repeat
每次循环, iter_var迭代变量被设置为可迭代对象(序列、迭代器或者是其他支持迭代的对象)的当前元素,提供给suite_to_repeat 语句块使用。
(2)用于序列类型
for循环可以迭代不同的序列对象,像字符串、 列表、以及元组。
迭代序列有三种基本方法:
通过序列项迭代
在CODE上查看代码片派生到我的代码片
>>> nameList = ['Walter', "Nicole", 'Steven', 'Henry'] >>> for eachName in nameList: ... print eachName, "Lim" ... Walter Lim Nicole Lim Steven Lim Henry Lim</div>
迭代一个列表.。每次迭代,eacgName变量都被设置为列表中特定某个元素。
通过序列索引迭代
在CODE上查看代码片派生到我的代码片
>>> nameList = ['Cathy', "Terry", 'Joe', 'Heather','Lucy'] >>> for nameIndex in range(len(nameList)): ... print "

