Control Flow 基本的控制流语句

If 语句

a = 's'

if a == 's':
    print("Hello")
Hello
a = 9

if a == 10:
    print("a=10")
elif a == 12:
    print("a=12")
else:
    print("not match")
not match

Switch语句

python中不支持switch语句,但是我们可以结合dictionary字典数据类型, 实现更加灵活的switch语句,效率更高

def default(arg):
    print("Do With Default")

def doWithA(arg):
    print("Do With A")

def doWithB(arg):
    print("Do With B")

def doWithC(arg):
    print("Do With C")



# 条件映射
# 存放数据与映射函数之间的关系,
# `doWithA`类似C语言中的函数指针
FuncMap = {
    "A" : doWithA,
    "B" : doWithB,
    "C" : doWithC
}

value = "A"
arg = 1 # 模拟传入参数

if value  in FuncMap:
    # 如果value在condMap的keys中
    FuncMap[value](arg)
else:
    # 类似C语言中的default语句
    default(arg)
Do With A

For 循环

在C语言中,我们可能已经习惯了这种写法

int i;

for (i = 0; i < 10; i++){
    // do something
}

在Python中我们有更优雅的写法, 借助list数组或者range对象

我们先来借助list来遍历所有的值

elems = [0, 1, 2, 3, 4, 5]


for e in elems:
    print(e)
0
1
2
3
4
5

使用range对象我们可以这么写

range(6)
range(0, 6)
for e in range(0, 6):
    print(e)
0
1
2
3
4
5

range对象可以转换为list

list(range(6))
[0, 1, 2, 3, 4, 5]

Range其实有很多的花式用法 我们可以指定 开始值strat与结束值end与每次迭代累加的值bin

  • range(end)0开始计数一直到end-1, 累计加1
  • range(start,end)start开始计数,一直累加到end - 1,每次累加1
  • range(start, end, bin)start开始计数,一直累加到end - 1,每次累加bin

注意你是取不到end这个值的。

for i in range(5, 10):
    print(i)
5
6
7
8
9
for i in range(5, 12, 2):
    print(i)
5
7
9
11
for i in range(10, -1, -2):
    print(i)
10
8
6
4
2
0

如果我们要遍历一个数组,并且跟他的下标也相关的话,我们可以这么写

arr = ["s", "4", "74", "b"]

# 获取长度
arrLen = len(arr)
for s in range(arrLen):
    print("index: %d, value = %s"%(s, arr[s]))
index: 0, value = s
index: 1, value = 4
index: 2, value = 74
index: 3, value = b
# For循环中的跳过

for i in range(5):
    if i == 3:
        continue
    print(i)
0
1
2
4
# For循环中的中断跳出
for i in range(5):
    if i == 3:
        break;
    print(i)
0
1
2

While 语句

TODO do while

a = 0

while a < 10:
    print(a)
    a += 1
0
1
2
3
4
5
6
7
8
9
# 运行期间中断执行

a = 0

while a < 10:
    print(a)
    a += 1
    if a == 7:
        break;
0
1
2
3
4
5
6
# 运行期间中断执行

a = 0

while a < 10:

    a += 1
    if a == 7:
        # 跳过本次,继续执行循环
        continue;
    print(a)
1
2
3
4
5
6
8
9
10

与C语言不同的地方在于, python中不支持do while语句。 符合Python中精简的设计思想

a = 0

while True:
    # do soming 
    a += 1
    print(a)
    if a > 10:
        break
1
2
3
4
5
6
7
8
9
10
11
Copyright 杭州云江科技有限公司 2017 all right reserved,powered by Gitbook该文件修订时间: 2018-04-02 09:53:14

results matching ""

    No results matching ""