004从零开始学Python—控制流

时间:2022-06-21
本文章向大家介绍004从零开始学Python—控制流,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

01Python控制流分类及使用规则

1.分类

Python 中的控制流语句和其他编程软件控制流相似。主要包含:

  • if分支
  • for循环
  • while循环

2.使用规则

控制流的使用非常频繁,使用规则如下:

  • 分不同情况执行不同的内容就可以使用 if 分支完成;
  • 对每一个对象进行相同的操作可以使用 for 循环实现;
  • 当无法确定循环的对像时,可以用while循环完成重复性的操作。

02Python控制流具体使用说明

1.if分支

if分支是用来判别某个条件是否满足所对应的执行内容,常见的分支类型有二分支类型和多分支类型。

二分支语法:

if conditionl:    expression1else:     expression2

三分支语法:

if conditionl:    expression1elif condition2:    expression2else:    expression3

关于上面的语法,有如下4点需要注意:

  • 对于多分支的情况,elseif在Python缩写为elif;
  • 不论是关键词if,elif还是else,其所在的行末尾都必须加上英文状态的冒号;
  • 在条件之后的执行语句(expression部分)都需要缩进, 而且在整个语句块中, 保持缩进风格一致;
  • else 关键词后面千万不要再加上具体的条件。

2.for循环

循环的目的:一般都是为了解决重复性的工作。

优点:如果使用循环的语法,代码简洁,避免重复性无意义代码。

经验:if分支和 for 循环常配合使用。

举例1:将列表中的每个元素做平方加1处理

# 将列表中的每个元素作平方加1处理list6 = [1,5,2,8,10,13,17,4,6]
result = []for i in list6:    y = i ** 2 + 1    result.append(y)print(result)out:[2, 26, 5, 65, 101, 170, 290, 17, 37

注:

  • 在 for 循环之前先构造了空列result, 用于最终计算结果的存储;
  • Python 中的指数运算可以使用两个星号表示, 如 3 的5 次方3**5;
  • 最后通过列表append方法将每个元素计算结果依次存入result变量。

举例2:计算1到100之间的偶数和

# 计算1到100之间的偶数和s1_100 = 0for i in range(1,101):    if i % 2 == 0:        s1_100 = s1_100 + i    else:        passprint('1到100之间的偶数和为%s'%s1_100)out:1到100之间的偶数和为2550

注:

  1. 在进入循环之前必须定义一个变量,并将0赋给它,目的是用于和的累加;
  2. range 函数很方便地生成有规律的可迭代对象, 但是该函数取不到上限, 所以range 函数的第二个参数写入的是 101;
  3. 判断一个数值是否为偶数,就将该数值与2相除求其余数,如果余数等于0则为偶数,否则为奇数, 所以用%表示计算两个数相除的余数, 判断余数是否等于0,用双等号 ==” 表示;
  4. 由于计算的是偶数和,所以if分支属于二分支类型,这里只关心偶数的和,对于else直接使用关键词 pass表示忽略,当然读者也可以省略掉else:和pass两行;
  5. 最后的 print 输出部分使用了格式化的输出方法:
    • %d代表一个整数型的坑,%s1_100就定在坑中填入的值;
    • %s代表字符型的坑;;
    • %f代表浮点型(小数型)的坑;
    • .2f%代表保留两位小数点的浮点型坑;
    • 如果有多个待填入坑, 就得指定多个填入的值, 这样的格式化输出可以写成%(值1,值2,值3)。

举例3:用更高效的列表表达式替代for循环

如果是对可迭代对象中的每一个元素做相同处理的话,不仅可以使用 for循环,还可以通过更简单的列表表达式完成。

对于列表表达式,可以写成如下语法:

[expression for i in iterable if condition]

  • expression就是对每一个元素的具体操作表达式;
  • iterable是某个可迭代对象, 如列表、 元组或字符串等;
  • if condition 是对每一个元素做分支判断, 如果条件符合, 则expression 操作对应的元素。
# 对列表中的偶数作三次方减10的处理list7 = [3,1,18,13,22,17,23,14,19,28,16]result = [i ** 3 - 10 for i in list7 if i % 2 == 0]print(result)out:[5822, 10638, 2734, 21942, 408

注:

  • 原列表 list7 中通过余数判断获得 5个偶数, 再对这些数做三次方减 10 的操作得到列表型的数据结构输出结果;
  • Python 中除了有列表表达式还有元组表达式和字典表达式, 语法跟列表表达式类似, 但后两者在实际工作中不常用;
  • 如果for 循环和列表表达式均可解决问题,优先选择列表表达式,因为其语法简洁,计算效率高。

3.while循环

while循环与for循环有一些相似之处,有时两者可以互换,但while循环更适合无具体迭代对象的重复性操作。

举例:当你登录某手机银行APP账号时,一旦输入错误,就会告知用户还剩几次输入机会,其限定用户只能在 N 次范围内完成正确的输入, 否则当天就无法再进行用户名和密码的输入。从1到N就是for循环的具体迭代对象;

当你在登录某邮箱账号时,输入错误的用户名或密码,只会告知“您的用户名或密码错误”, 并不会限定还有几次剩余的输入机会,所以对于这种重复性的输入操作,对方服务器不确定用户将会输入多少次才会正确,对于while 循环来说, 就相当于一 个无限次的循环, 除非用户输入正确。

while 循环在Python 中的语法表达:

while condition:    if conditionl:    expression1elif condition2:    expression2else:    expression3

注:

  • 当while关键词后面的条件满足时,将会重复执行第二行开始的所有语句块。
  • 一般情况下,while循环都会与if分支搭配使用。

03通过实例比较for循环与while循环

for循环:

# 使用for循环登录某手机银行APPfor i in range(1,6):    user = input('请输入用户名:')    password = int(input('请输入密码:'))    if (user == 'test') & (password == 123):        print('登录成功!')        break    else:        if i < 5:            print('错误!您今日还剩%d次输入机会。' %(5-i))        else:            print('请24小时后再尝试登录!')out:请输入用户名:test请输入密码:111错误!您今日还剩4次输入机会。请输入用户名:test请输入密码:123登录成功!

while循环:

# 使用while循环登录某邮箱账号while True:    user = input('请输入用户名:')    password = int(input('请输入密码:'))    if (user == 'test') & (password == 123):        print('登录成功!')        break    else:        print('您输入的用户名或密码错误!')out:请输入用户名:Excel知识管理请输入密码:111您输入的用户名或密码错误!请输入用户名:爱上深呼吸李强请输入密码:123您输入的用户名或密码错误!请输入用户名:test请输入密码:123登录成功!

注:

  • input 函数可以实现人机交互式的输入, 一旦运行, 用户填入的任何内容都会以字符型的值赋值给user变量和password 变量, 由于实际的密码为数字 123, 因此必须将 input 函数的结果套在int函数内, 将其转换为整数型。
  • 如果有多个条件,条件之间的逻辑关系不管是“且”(用&表示)还是“或”(用|表示),所的条件都必须用圆括号括起来, 否则可能会得到诡异的结果。
  • 在 while 循环中, while 关键词后面直接跟上 True 值, 就表示循环将无限次执行, 正如用无限次输入错误的用户名和密码一般, 直到输入正确并碰见break关键词时才会退出循环;
  • break 关键字在 Python 的循环过程中会比较常见,其功能是退出离它最近的循环系统(可能是for循环或while循环)。
  • 与break类似的另一个关键字是continue,不同的是continue只是结束循环系统中的当前循环,还得继续下一轮的循环操作,并不会退出整个循环。

整体感觉:编程思想大同小异,如果你学习过C、C++、Java Script那肯定很有优势,或者哪怕只会VBA编程也没关系,知识迁移能力非常重要,类比着学习方能触类旁通。

读书笔记内容来源:刘顺祥,《从零开始学Python数据分析与挖掘》

作者公众号:数据分析1480