Python 编程 | 连载 13 - Python 的流程控制

367 阅读5分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情

一、Python 的逻辑语句

逻辑与 if 语句

逻辑判断与逻辑语句:

  • 对于一件事情正确与否的判断
  • 根据判断的结果做不同的事情
  • 对于条件满足的判断语句,就是条件语句
  • 一个逻辑语句是由条件语句和业务语句组合而成

判断一个命题的真实性,如果命题为真(True)则执行 if 的逻辑语句

if bool_result: # 语法块
    do # 业务代码块,有缩进
  • if 关键字后的 bool_result 是结果的真假,为布尔类型既 True 或者 False
  • do 代码块是在 bool_result 为 True 的条件下执行的
  • if 是关键字,不是函数,无返回值
info = 'i am iron man'

info_list = info.split(' ')
print(info_list)

if info_list[0] == 'iron':
    info_list[0] = 'spider'

if info_list[1] == 'iron':
    info_list[1] = 'spider'

if info_list[2] == 'iron':
    info_list[2] = 'spider'

if info_list[3] == 'iron':
    info_list[3] = 'spider'

print(info_list)

info_02 = ' '.join(info_list)
print(info_02)

image.png

使用成员运算符进行逻辑判断

message = 'Will says:"Keep my wife's name out of your fucking mouth"'

message_list = message.split()

if 'fucking' in message_list:
    message = message.replace('fucking', '*')

print(message)

image.png

条件语句中的 else 关键字

else 就是对于不满足 if 条件的时候执行另一个代码块的入口

if bool_result:
    do
else:
    else do # else 代码块,当满足if条件时执行,需要与if代码块有同样的缩进    

else是关键字,不是函数,无返回值

name = 'peter'

if name == 'stark':
    print('I am IronMan')
else:
    print('Who are you then?')

image.png

不满足 if 的条件,则会执行 else 代码块。

条件语句中的 elif 关键字

elif(或者如果)对于条件的非第一次的多种判断,每种判断条件对应一个代码块

if bool_reslut:
    do
elif bool_result:
    elif do # 当前elif对应的代码块, 缩进与上面保持一致
elif bool_result:
    elif do
else:
    else do

elif 是关键字,不是函数,没有返回值

num = 8

if num >= 10:
    print('num的值大于等于10')
elif num > 5:
    print('num的值大于5小于10')
else:
    print('num的值小于等于5')

条件语句总结

  • 条件语句中满足一个条件后,将推出当前条件语句
  • 每条语句中有且只有一个if语句,可以有0个或者多个elif语句,可以有0个或者1个else语句
  • 每个条件语句中的第一个条件语句必须是if条件语句

image.png

二、for 循环

for 关键字可以将列表、元组、字典、字符串中的每个元素按照队列中的顺序进行遍历

for item in iterable: # iterable 既可迭代的数据类型,元组、字典、字符串、列表等
    print(item) # item 是指队列中的一个元素
list_01 = ['stark', 'wanda', 'steve', 'strange', 'loki']

for item in list_01:
    print(item)
    if item == 'stark':
        print('I am IronMan')
    elif item == 'peter':
        print('I am SpiderMan')
    elif item == 'banner':
        print('Incredible Hulk')
    elif item == 'thor':
        print('Thor Odin')
    else:
        print('We are Heros')

image.png

字典的 item 函数

items函数可以将字典转成伪列表,每个Key、Value转换成元组

利用字典的item函数对字典进行for循环

for key, value in dict.items():
    print(key, value)

items函数无参数 key:for循环体中获取的字典的当前元素的key value:for循环体中对应当前Key的Value值

list_dict = [
    {'name': 'stark', 'age': 40},
    {'name': 'thor', 'age': 1500},
    {'name': 'banner', 'age': 40},
    {'name': 'clint', 'age': 37},
]

for i in list_dict:
    for k, v in i.items():
        print(k ,v)

image.png

range 函数

range函数返回的是一个一定范围的可迭代对象,元素为整型,不是列表,无法打印信息,但是可以进行循环。

for item in range(start, stop, step=1):
    print(item)
  • start: 开始的数字,类似切片时的起始位置
  • stop:结束的数字,类似切片的结束位置
  • step:步长,类似切片中的步长

返回一个可迭代的整型的对象,且与切片一样是左包含右不包含

for i in range(1, 5):
    print(i)

print('--------------')
for j in range(1, 10, 2):
    print(j)

image.png

else 在 for 循环中的使用

else语句只有在for循环正常退出后才执行

for i in range(1, 5):
    print(i)
else:
    print('for循环执行结束')

image.png

嵌套for 循环

for循环中的for循环称为嵌套for循环

for i in range(1, 3):
    print('第一层for循环')
    print(i)
    for j in range(1, 3):
        print('第二层for循环')
        print(i, ',', j)
print(i, j)

image.png

可以使用上一层的for循环中的变量,可以在 for 循环外使用 for 循环中的两个变量。

三、while 循环

以一定条件为基础的循环,条件满足则无限循环,条件不满足则退出循环,for循环是有限循环,有一定的迭代次数,while循环是无限循环,while循环不依赖可迭代的数据类型,for循环依赖可迭代的数据类型。

while bool_result:
    do
  • bool_result:True 或 False
  • do:while循环的代码块
count = 0
total = 0

while count <= 100:
    total += count
    count += 1
print(total)

image.png

index = 0
list_01 = ['stark', 'banner', 'peter', 'clint', 'thor']

while index < len(list_01):
    print(list_01[index])
    index += 1

image.png

四、continue 与 break 关键字

continue 关键字可以停止当前循环,直接进入下一次循环,continue 关键字在循环中使用

while bool_result:
    if bool_result:
        contineu

break 关键字可以使循环停止,并且不会执行当前语句中的else语句

while bool_result:
    break
  • continue 与 break 通常伴随着循环语句中的条件语句,满足某些条件可以继续执行,不满足条件提前退出或者结束循环
  • 在while循环中,break语句优先与while逻辑体中的判断
heros = [
    {'name': 'stark', 'age': 40, 'address': 'NY'},
    {'name': 'peter', 'age': 18, 'address': 'NY Queens'},
    {'name': 'steve', 'age': 40, 'address': 'NY Brooklyn'},
    {'name': 'thor', 'age': 1500, 'address': 'Asgard'},
]

humans = []

for hero in heros:
    if hero.get('name') == 'thor':
        continue
    humans.append(hero)
    print('{} is human'.format(hero.get('name')))

print(humans)

image.png

heros = [    {'name': 'stark', 'age': 40, 'address': 'NY'},    {'name': 'peter', 'age': 18, 'address': 'NY Queens'},    {'name': 'steve', 'age': 40, 'address': 'NY Brooklyn'},    {'name': 'thor', 'age': 1500, 'address': 'Asgard'},]

humans = []

for hero in heros:
    if hero.get('name') == 'steve':
        break
    humans.append(hero)
    print('{} is human'.format(hero.get('name')))
else:
    print('for循环执行完毕')

print(humans)

image.png

continue、break只能在循环中使用。

嵌套循环实现九九乘法表

num = [1, 2, 3, 4, 5, 6, 7, 8, 9]

for i in num:
    # print(i)
    for j in range(1, i+1):
        # 输出乘法口诀
        print('{} * {} = {}'.format(j, i, i * j), end=' ')
        if j == i:
            # 换行
            print()