首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么对多个if语句使用elif和else?

为什么对多个if语句使用elif和else?
EN

Stack Overflow用户
提问于 2020-03-16 16:51:44
回答 5查看 871关注 0票数 0

我正在处理Python的问题单,并回答了以下问题

你开得有点太快了,警察拦住了你。编写一个函数返回三种可能的结果之一:“无票”、“小票”或“大票”。如果你的速度是60或更低,结果是“没有票”。如果速度在61到80之间,结果就是“小票”。如果速度是81或更高,结果是“大票”。除非它是您的生日(在函数的参数中编码为布尔值) --在您的生日那天,您的速度在任何情况下都可以高出5。

代码语言:javascript
运行
复制
def caught_speeding(speed, is_birthday):

    if is_birthday:
        speeding = speed - 5
    else:
        speeding = speed

    if speeding < 60:
        print("No ticket")
    if 60 < speeding <= 80:
        print("Small Ticket")
    if speeding > 80:
        print("Big Ticket")

然而,给出的答案使用了elif和else子句。是否有更好的理由使用elif和there子句?还是只是个人喜好?

谢谢你的帮助!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-03-16 16:56:31

请注意,您的解决方案是错误的,因为它忽略了speed为60的任何情况。if … elif … elif … else …结构划分了各种可能性:每种可能性只分为一种情况(或者,如果省略了else,最多只有一种情况)。如果需要分区(通常是这样),那么if … if … if …的结构有两个缺点:

如果测试条件没有得到很好的设计,那么可以执行多个

  • 。为了分离这些情况,有些测试必须重复(有时以否定的形式),正如我们看到的那样,您的解决方案必须在60 < speeding.
  • Often,代码中测试代码(在if情况下),我们更改变量,有时是在测试条件中使用的变量,这些变量可以使后续的if测试结果变为真,尽管我们希望它们是假的。elif结构避免了这种情况.
票数 1
EN

Stack Overflow用户

发布于 2020-03-16 17:00:14

您可以编写更少的代码,也可以更容易阅读+提高代码速度:

代码语言:javascript
运行
复制
def caught_speeding(speed, is_birthday):    
    if is_birthday:
        speed -= 5

    if speed <= 60:
        print("No ticket")
    elif <= 80:
        print("Small Ticket")
    else:
        print("Big Ticket")
票数 1
EN

Stack Overflow用户

发布于 2020-05-13 00:11:53

这是另一个解决方案。

代码语言:javascript
运行
复制
    def caught_speeding(speed, is_birthday):
        if is_birthday:
            ll=60+5
            ul=80+5
        else:
            ll=60
            ul=80
        if speed<=ll:
            return "No Ticket"
        elif ll<speed<=ul:
            return "Small Ticket"
        else:
            return "Big Ticket"      
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60710029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档