Python学习–04条件控制与循环结构

支持

  • ifif...elseif...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、循环

http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431676242561226b32a9ec624505bb8f723d0027b3e7000

2、python中Switch/Case实现 – gerrydeng – 博客园