美文网首页python
python(5):if语句------双分支与多分支选择结构

python(5):if语句------双分支与多分支选择结构

作者: Li_bioinfo | 来源:发表于2022-03-28 10:36 被阅读0次

1.双分支选择结构: if-else语句

双分支选择结构就是在if之后程序流程走向两个分支,一个分支处理条件表达式为真的情况,一个分支处理条件表达式为假的情况。

其语法格式如下:

if 条件表达式:

    语句块1

else:

    语句块2

下面用一个简单的例题说说双分支选择结构的具体用法。

题目

从键盘输入三个数值,判断这三个数值能否构成三角形

题目解析

构成三角形的条件是任意两边之和大于第三边,关键就是这任意两个字,对于三个数值来说,任意两个数求和有三种情况,这三种情况的组合都要大于第三边,即这三种情况要同时满足,要用逻辑与(and)来连接这三种情况。

代码

a=eval(input('请输入第1个数:'))
b=eval(input('请输入第2个数:'))
c=eval(input('请输入第3个数:'))
if a+b>c and a+c>b and b+c>a:
    print('这三个数能构成三角形')
else:
    print('这三个数不能构成三角形')

代码解析

前三行是从键盘输入三个数分别赋值给三个变量;

第4行的表达式表示三个数中任意两个数求和的三种情况,用and进行连接,注意表达式之后有一个冒号;

第5行处理表达式为真的情况,注意缩进;

第6行单独1个else加冒号,构成if...else...的双分支选择结构;

最后一行处理表达式为假的情况,注意缩进。
如果把题目改一下,自己试试能不能做得出来:

从键盘输入三个数值,判断这三个数值能否构成三角形,如果能构成三角形,求三角形的面积(提示:已知三角形的三条边用海伦公式求面积)。

海伦公式

image.png

代码

import math
a=eval(input('请输入第1个数:'))
b=eval(input('请输入第2个数:'))
c=eval(input('请输入第3个数:'))
if a+b>c and a+c>b and b+c>a:
    p=(a+b+c)/2
    s=math.sqrt(p*(p-a)*(p-b)*(p-c))
    print('三角形的面积是:',s)
else:
    print('这三个数不能构成三角形')

代码解析

第 7 行用于求三角形的面积,使用了math库的sqrt()函数进行开平方根,这一行的代码也可以写成:

(p(p-a)(p-b)(p-c))*0.5

6-8行用于处理表达式为真的情况,这是由3行代码构成的语句块,这是一个整体,要么全部被执行,要么全部不被执行,所以这三行代码是对齐并且缩进的。

2.多分支选择结构:if-elif-else结构

当我们在做一个决策时,可能会面临有多个选择,比如国庆放假前我们肯定想过,七天去哪呢?旅游?玩游戏?追剧?还是学python?这就是一个多分支的选择结构。这种结构的程序流程图如下图所示:


image.png

在上图中,有N-1个表达式,程序先判断第1个表达式是否为真,若是,执行语句块1,退出选择结构;若第1个表达式为假,再判断第2个表达式,以此类推。不管哪个表达式为真,执行完对应的语句块后立即退出选择选择结构,若N-1个表达式全为假,则执行第N个语句块。
接下来用一道题目来说说它的用法。
题目

输入一元二次方程axx+b*x+c=0的三个系数a,b,c,根据以下几种情况输出相应的结果:

a=0,输出“不是二次方程”;

delta=0,求两个相等的实根并输出;

delta>0,求出两个不等的实根并输出;

delta<0,输出“有两个共轭复根”;
代码

import math
a=eval(input('请输入系数a的值:'))
b=eval(input('请输入系数b的值:'))
c=eval(input('请输入系数c的值:'))
delta=b*b-4*a*c
if a==0:
    print('不是二次方程')
elif delta==0:
    x=(-b+math.sqrt(delta))/(2*a)
    print('x1=x2=',x)
elif delta>0:
    x1=(-b+math.sqrt(delta))/(2*a)
    x2=(-b-math.sqrt(delta))/(2*a)
    print('x1=',x1,'x2=',x2)
else:
    print('有两个共轭复根')
请输入第一个数a:1
请输入第二个数b:2
请输入第三个数c:3
有两个共轭复根
=========================================
也可以省略else代码块
import math
a=eval(input('请输入系数a的值:'))
b=eval(input('请输入系数b的值:'))
c=eval(input('请输入系数c的值:'))
delta=b*b-4*a*c
if a==0:
    print('不是二次方程')
elif delta==0:
    x=(-b+math.sqrt(delta))/(2*a)
    print('x1=x2=',x)
elif delta>0:
    x1=(-b+math.sqrt(delta))/(2*a)
    x2=(-b-math.sqrt(delta))/(2*a)
    print('x1=',x1,'x2=',x2)
elif delta<0:
    print('有两个共轭复根')
请输入系数a的值:2
请输入系数b的值:2
请输入系数c的值:5
有两个共轭复根

代码解析

第8行elif是else if 的组合缩写,若a==0为假,则判断delta==0是否为真;

最后一个分支用else:,这里不需要任何的表达式,意思是以上表达式全为假时才执行else;

再次强调每个分支表达式后面都有一个冒号,且冒号下一行必须缩进,这是python语言的特色,也可以理解为这是它的语法。

代码编写完成后要对所有分支进行测试,所有分支测试没有问题才能确定此代码是正确的。切记一点,代码写完还没完,测试完成才算完,语法没错不代表运行时不会出错。见过太多的学生写完代码一看没语法错误,直接就停下来不运行看结果了,这是初学者的大忌。

3.测试多个条件,应使用简单if语句

if-elif-else结构功能强大,但仅适合用于只有一个条件满足的情况:遇到通过了测试后,python就跳过余下的测试。

#测试多个条件
requssted_toppings = ['mushrooms', 'extar cheese']
if 'mushrooms' in requssted_toppings:
    print('adding mushrooms')
if 'pepperoni' in requssted_toppings:
    print('adding pepperoni')
if 'extar cheese' in requssted_toppings:
    print('adding extar cheese')
print('\nFinished')
adding mushrooms
adding extar cheese

Finished
===================================
如果使用if-elif-else语句,代码将不能正确运行,因为只有一个测试通过后,就会跳过余下的测试
requssted_toppings = ['mushrooms', 'extar cheese']
if 'mushrooms' in requssted_toppings:
    print('adding mushrooms')
elif 'pepperoni' in requssted_toppings:
    print('adding pepperoni')
elif 'extar cheese' in requssted_toppings:
    print('adding extar cheese')
print('\nFinished')
adding mushrooms

Finished
==================================
###使用多个列表
A = [1,2,3,4,5]
B =[3,4,5,6]
for b in B:
    if b in A:
        print('right')
    else:
        print('false')
print('\nfinished')
right
right
right
false

finished

相关文章

  • python(5):if语句------双分支与多分支选择结构

    1.双分支选择结构: if-else语句 双分支选择结构就是在if之后程序流程走向两个分支,一个分支处理条件表达式...

  • [JS基础]笔记四

    js流程控制语句 流程控制 顺序结构、分支结构、循环结构 分支结构 if 分支结构 if else 双分支结构语句...

  • day5-分支和循环总结

    5.1 分支结构 python中分支结构只有if语句,没有switch语句 5.1.1 if语句 a.语法:if ...

  • Day4-分支&循环的总结

    """author= HuangZhong""" 一.分支结构 python中的分支结构只有if语句 1.if语句...

  • 编写Shell脚本---流程控制语句

    [TOC] 流程控制语句 1 if条件测试语句 if语句分为三种结构: 单分支结构 双分支结构 多分支结构 1.1...

  • 总结Day5_分支、循环

    =====Python分支结构if=====   python中的分支结构只有if语句没有switch 1.什么时...

  • 2018-12-21

    shell中if用法详解 if使用详解 格式 1.单分支语句结构 2.双分支语句结构 3.多分支语句结构 条件表达...

  • Python初学(十二)

    上章说了程序的基本结构,这章说下分支结构。 程序的分支结构 单分支结构:if语句: Python的单分支结构使用i...

  • Python基础(三)——程序结构

    与c语言类似,Python的程序结构包括分支结构、循环结构和函数。 1.分支结构 语句为if....elif......

  • IF使用详解

    一, 格式 1.1 单分支语句结构 if [ 条件表达式 ]; then指令fi 1.2 双分支语句结构 if [...

网友评论

    本文标题:python(5):if语句------双分支与多分支选择结构

    本文链接:https://www.haomeiwen.com/subject/katpjrtx.html