python分支和循环结构

Posted 阿龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python分支和循环结构相关的知识,希望对你有一定的参考价值。

 本文收录在Python从入门到精通系列文章系列

1. 分支结构

1.1 应用场景

迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分,那么在完成本局游戏后,我们要根据玩家得到分数来决定究竟是进入第二关,还是告诉玩家“Game Over”,这里就会产生两个分支,而且这两个分支只有一个会被执行。类似的场景还有很多,我们将这种结构称之为分支结构选择结构

 

1.2 if语句的使用

Python中,要构造分支结构可以使用ifelifelse关键字。所谓关键字就是有特殊含义的单词,像ifelse就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他的标识符也是不可以)。

01-单分支

下面的例子中演示了如何构造一个分支结构。

"""

用户身份验证

 

Version: 0.1

Author: along

"""

username = input(\'请输入用户名: \')

password = input(\'请输入密码: \')

 

if username == \'along\' and password == \'12345\':

    print(\'验证通过\')

else:

    print(\'验证失败\') 

唯一需要说明的是和C/C++Java等语言不同,Python中没有用花括号来构造代码块而是使用了缩进的方式来设置代码的层次结构,如果if条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了,换句话说连续的代码如果又保持了相同的缩进那么它们属于同一个代码块,相当于是一个执行的整体。

 

02-多分支

当然如果要构造出更多的分支,可以使用if…elif…else…结构,例如下面的分段函数求值。

"""

分段函数求值

 

        3x - 5  (x > 1)

f(x) =  x + 2   (-1 <= x <= 1)

        5x + 3  (x < -1)

 

Version: 0.1

Author: along

"""

x = float(input(\'请输入一个数: \'))

if x > 1 :

    y = 3 * x - 5

elif x >= -1 and x <= 1 :

    y = x + 2

else:

    y = 5 * x + 3

print(\'f(%.2f) = %.2f\' % (x , y))

 

03-嵌套分支

当然根据实际开发的需要,分支结构是可以嵌套的,例如判断是否通关以后还要根据你获得的宝物或者道具的数量对你的表现给出等级(比如点亮两颗或三颗星星),那么我们就需要在if的内部构造出一个新的分支结构,同理elifelse中也可以再构造新的分支,我们称之为嵌套的分支结构,也就是说上面的代码也可以写成下面的样子。

"""

分段函数求值

        3x - 5  (x > 1)

f(x) =  x + 2   (-1 <= x <= 1)

        5x + 3  (x < -1)

 

Version: 0.1

Author: along

"""

x = float(input(\'x = \'))

if x > 1:

    y = 3 * x - 5

else:

    if x >= -1:

        y = x + 2

    else:

        y = 5 * x + 3

print(\'f(%.2f) = %.2f\' % (x, y))

说明: 大家可以自己感受一下这两种写法到底是哪一种更好。在之前我们提到的Python之禅中有这么一句话“Flat is better than nested.”,之所以提倡代码扁平化是因为嵌套结构的嵌套层次多了之后会严重的影响代码的可读性,所以能使用扁平化的结构时就不要使用嵌套。

 

1.3 练习

练习1:英制单位英寸与公制单位厘米互换。

参考答案:

"""

英制单位英寸和公制单位厘米互换

 

Version: 0.1

Author: along

"""

value = float(input(\'请输入长度: \'))

unit = input(\'请输入单位: \')

if unit == \'in\' or unit == \'英寸\':

    print(\'%f英寸 = %f厘米\' % (value, value * 2.54))

elif unit == \'cm\' or unit == \'厘米\':

    print(\'%f厘米 = %f英寸\' % (value, value / 2.54))

else:

    print(\'请输入有效的单位\')

 

练习2:百分制成绩转换为等级制成绩。

要求:如果输入的成绩在90分以上(含90分)输出A80-90分(不含90分)输出B70-80分(不含80分)输出C60-70分(不含70分)输出D60分以下输出E

参考答案:

"""

百分制成绩转换为等级制成绩

 

Version: 0.1

Author: along

"""

score = float(input(\'请输入成绩: \'))

if score >= 90:

    grade = \'A\'

elif score >= 80:

    grade = \'B\'

elif score >= 70:

    grade = \'C\'

elif score >= 60:

    grade = \'D\'

else:

Python从入门到精通,100天就够了!——分支结构与循环结构

python分支和循环结构

python第二课--分支结构与循环结构

Python控制流:顺序结构分支结构循环结构+forif ... elsewhileif... elif...elif..elseif

Python开发第4节Python分支结构与循环结构

Python代码结构——顺序分支循环