Python学习–04条件控制与循环结构
Python学习–04条件控制与循环结构
支持
if
,if...else
,if...elif ...if
while
for ... in...
continue
,break
pass
没有switch-case
;没有普通的for x;y;z
条件循环。
条件控制
在Python程序中,用if语句实现条件控制。
语法格式:
<code>if <条件判断1>:<br/> <执行1><br/> elif <条件判断2>:<br/> <执行2><br/> elif <条件判断3>:<br/> <执行3><br/> else:<br/> <执行4><br/> </code>
注意语句后面的冒号:
。像经典的C、Java都是以花括号来区分代码块,但是Python没有使用花括号表示,而是缩进,所以一定需要了解它们的语法区别。
示例:
<code>age = 3<br/> if age >= 18:<br/> print('adult')<br/> elif age >= 6:<br/> print('teenager')<br/> else:<br/> print('kid')<br/> </code>
循环控制
Python里有2种循环结构:
1、for…in
2、while
注意Python里没有C语言里经典的for循环结构,也没有PHP里的foreach结构。
for…in
for…in循环会依次把list或tuple中的每个元素迭代出来,示例:
<code>names = ['Michael', 'Bob', 'Tracy']<br/> for name in names:<br/> print(name)<br/> </code>
输出:
<code>Michael<br/> Bob<br/> Tracy<br/> </code>
注意for语句后面的冒号:
。
再看个求和的例子:
<code>sum = 0<br/> for x in range(101):<br/> sum = sum + x<br/> print(sum)<br/> </code>
输出:
<code>5050<br/> </code>
注意的是,range(101)
生成的是0-100的整数序列,不是到101。
对于字典(dict),for…in循环迭代的是key,而不是value:
<code>dict = {"name":"yjc", "age":18}<br/> for x in dict:<br/> print(x, dict[x])<br/> </code>
输出:
<code>name yjc<br/> age 18<br/> </code>
while
while循环是其它语言里很经典的循环结构,Pyhton里同样支持。
<code>sum = 0<br/> n = 0<br/> while n < 101:<br/> sum = sum + n<br/> n = n + 1<br/> print(sum)<br/> </code>
while循环里只要条件满足,就不断循环,条件不满足时退出循环。需要注意while语句后面的冒号:
。
循环控制语句
循环里如果我们想终止本次循环,可以使用continue
;如果想终止整个循环,则使用break
。
看看下面这个例子:
<code>sum = 0<br/> n = 0<br/> while n < 5:<br/> n = n + 1<br/> if n == 3:<br/> break #试试替换成continue<br/> sum = sum + n<br/> print(sum)<br/> </code>
输出:
<code># 使用break:<br/> 3 # 使用continue:<br/> 12<br/> </code>
空语句
Python里使用pass
表示空语句,即啥也不做。
<code>if age >= 18:<br/> pass<br/> </code>
在C语言里等同于:
<code>if( age>=18 ){ }<br/> </code>
pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。
因为在其它语言里有花括号,如果花括号里面为空,代表啥也不做,但Python没有花括号,缺少了pass,代码运行就会有语法错误。
Switch/Case模拟
Python没有switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现。所以不妨自己来实现Switch/Case功能。
1、通过字典实现
<code>def foo(var):<br/> return {<br/> 'a': 1,<br/> 'b': 2,<br/> 'c': 3,<br/> }.get(var,'error') #'error'为默认返回值,可自设置<br/> </code>
2、通过匿名函数实现
<code>def foo(var,x):<br/> return {<br/> 'a': lambda x: x+1,<br/> 'b': lambda x: x+2,<br/> 'c': lambda x: x+3,<br/> }[var](x)<br/> </code>
参考
1、循环
2、python中Switch/Case实现 – gerrydeng – 博客园