第二章 python流程控制

python同样提供了现代编程语言都支持的两种基本流程控制结构:分支结构和循环结构,其中分支结构用于实现根据条件来选择性的执行某段代码,循环结构则用于实现根据循环条件重复执行某段代码,Python使用if语句提供分支支持,提供了while,for in循环,也提供了break和continue来控制程序的循环结构。

2.1 顺序结构

在任何编程语言中最常见的程序结构就是顺序结构,程序从上到下一行行执行,中间没有任何跳转

2.2 分支结构

与其他编程语言一样,python 的条件控制语句也是if elif else,比较简单,if分支使用布尔表达式或者布尔值作为分支条件来进行分支控制,下面介绍其用法

例2.1 if 语句

#!usr/bin/python3
if 3 > 2:
    print("hahahaha")

结果:

hahahaha

例2.2 if语句

#!usr/bin/python3
age_str = input("please input your age")
age = int(age_str)
if age > 20:
    print("age > 20")

结果:

please input your age30
age > 20

if 关键字后面不一定非要是bool型值,字符串、列表等都可以,这种情况下,空字符串,空列表会被当成False,即

False、None、0、""、()、[]、{} 都会被当做False处理,如下所示:

例2.3

#!usr/bin/python3
s = ""
if s:
    print("s 不是空字符串")
else:
    print("s 是空字符串")

lists = []
if lists:
    print("lists 不是空列表")
else:
    print("lists 是空列表")

结果:

s 是空字符串
lists 是空列表

例2.4 if else语句

#!usr/bin/python3
if 3 > 4:
    print("haha")
else:
    print("hehe")

结果:

hehe

例2.5 if elif else语句

#!usr/bin/python3
if 3 > 4:
    print("haha")
elif 3 > 2:
    print("hehe")
else:
    print("heihei")

结果:

hehe

2.1.4 pass语句

有时候python程序需要占一个位置,但是又不需要做什么事,这个时候就需要使用pass语句了,例如:

例2.6

#!usr/bin/python3
a = 30
if a > 10:
    print("a > 10")
elif a < 10:
    pass #什么也不做
else:
    print("a == 10")

结果:

a > 10

2.1.5 断言

断言也是一种特殊的分支,常用于自动化测试,对逻辑表达式进行判断,如果逻辑表达式返回False,则会报AssertionError错误,下面的语句也不会执行

例2.7

#!usr/bin/python3
age = 30
assert age > 40 #这行断言会报AssertionError错误
print("haha") #这行不会执行,因为上面的断言不通过

结果:

Traceback (most recent call last):
  File "/Users/haha/source/builder/builder/handler/test.py", line 3, in <module>
    assert age > 40
AssertionError

2.2 循环语句

与其他编程语言一样,python的循环语句也用while和for

2.2.1 while循环

例2.8 使用while循环计算1到100的和

#!/usr/bin/env python3
n = 100
sum = 0
i = 1
while i <= n:
    sum = sum + i
    i = i + 1

print("1 到 %d 之和为: %d" % (n, sum))

结果:

1 到 100 之和为: 5050

例2.9 使用 while循环遍历列表\元组

下面的例子是遍历列表,元组的遍历也是一样的

#!usr/bin/python3
lists = ["haha", "hehe", "heihei", "xixi"]
i = 0
while i < len(lists):
    print(lists[i])
    i = i + 1

结果:

haha
hehe
heihei
xixi

例2.10 对整数列表进行分类,分别将除以3可以整除/余1/余2的数各放入一个列表

#!usr/bin/python3
src_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
a_list = []
b_list = []
c_list = []

i = 0
while i < len(src_list):
    ele = src_list.pop()
    if ele % 3 == 0:
        a_list.append(ele)
    elif ele % 3 == 1:
        b_list.append(ele)
    elif ele % 3 == 2:
        c_list.append(ele)

    i = i + 1

print("a_list = ", a_list)
print("b_list = ", b_list)
print("c_list = ", c_list)

结果:

a_list =  [15, 12, 9]
b_list =  [13, 10]
c_list =  [14, 11, 8]

2.2.2 for循环

例2.11 使用for循环计算1到100的和

#!usr/bin/python3
sum = 0
for i in range(1,101):
    sum = sum + i

print("sum = ", sum)

结果:

sum = 5050

例2.12 使用for循环遍历列表和元组

#!usr/bin/python3
lists = ["haha", "hehe", "heihei", "xixi"]

for element in lists:
    print(element)

结果:

haha
hehe
heihei
xixi

例2.13 计算列表中所有数字元素的总和、平均值

#!usr/bin/python3
src_list = [12, 45, 3.4, 13, "a", 4, "b", 109.5, "haha", 234]
sum = 0
count = 0

for ele in src_list:
    if isinstance(ele, int) or isinstance(ele, float):
        sum = sum + ele
        count = count + 1

print("sum = ", sum)
print("avg = ", sum / count)

结果:

sum =  420.9
avg =  60.128571428571426

例2.14 使用for循环遍历字典

遍历字典,可以使用dict 的items(), keys(), values()方法

#!usr/bin/python3
scores = {"math" : 80, "english" : 80, "chinese" : 90}
items = scores.items()
keys = scores.keys()
values = scores.values()

for key, value in items:
    print(key + " : " + str(value))

print("=====================")
for key in keys:
    value = scores[key]
    print(key + " : " + str(value))

print("=====================")

for value in values:
    print("value = ", value)

结果:

math : 80
english : 80
chinese : 90
=====================
math : 80
english : 80
chinese : 90
=====================
value =  80
value =  80
value =  90

2.3 循环控制

python语言没有提供goto语句来控制程序的跳转,提供了continue和break来控制循环结构

2.3.1 break 语句

某些时候,需要在某种条件出现时强行中止循环,而不是等到循环条件为False时才退出循环,与其他编程语言一样,break用于跳出循环,请看下面的例子:

例2.15

#!usr/bin/python3
for i in range(1,10):
    if i == 5:
        break
    print("i = ", i) #5以后的不会打印

结果:

i =  1
i =  2
i =  3
i =  4

2.3.2 continue语句

与其他编程语言一样,continue语句用于跳出本次循环,执行下一次循环

例2.16

#!usr/bin/python3
for i in range(1,10):
    if i == 5:
        continue

    print("i = ", i) #不会把5打印出来

结果:

i =  1
i =  2
i =  3
i =  4
i =  6
i =  7
i =  8
i =  9

2.2.3.3 pass

一般在函数中,或循环中使用,什么也不做,就是个占位符,在if条件语句中也有

#!usr/bin/python3
for i in range(1,10):
    pass

2.4 嵌套循环

与其他编程语言一样,嵌套循环就是多层循环,内层循环是外层循环的循环体,只有内层循环的循环条件为假时,才会完全跳出内层循环

例2.17

#!usr/bin/python3
for i in range(1, 3):
    j = 0
    while j < 3:
        print("i = %d, j = %d" % (i, j))
        j = j + 1

结果:

i = 1, j = 0
i = 1, j = 1
i = 1, j = 2
i = 2, j = 0
i = 2, j = 1
i = 2, j = 2

2.5 推导式

推导式又叫做for表达式,主要是对列表、字典、元组等进行遍历同时生成新的列表、字典、元组,写起来简洁一些,往往用一行代码就搞定,而如果用其他语言可能需要五六行代码

2.5.1 列表推导式

例2.18 找出数组中字符串长度大于3的元素

names = ["haha","hehe","xixi","2","32","3323"]
new_names = [name for name in names if len(name)>3]
print(new_names)

结果:

['haha', 'hehe', 'xixi', '3323']

例2.19 找出30以内可以被3整除的数字

arr = [i for i in range(30) if i % 3 == 0]
print(arr)

结果:

[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

2.5.2 字典推导式

例2.20

lists = ["haha", "heihei", "hehe"]
dicts = {key:len(key) for key in lists}
print(dicts)

结果:

{'haha': 4, 'heihei': 6, 'hehe': 4}

例2.21

dicts = {x: x**2 for x in (3, 4, 5)}
print(dicts)

结果:

{3: 9, 4: 16, 5: 25}

2.5.3 集合推导式

例2.22

sets = {x ** 3 for x in (2,3,4)}
print(sets)

结果:

{8, 64, 27}

2.5.4 元组推导式

例2.23

a = (x for x in range(1,5))
print(tuple(a))

结果:

(1, 2, 3, 4)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值