谁能告诉我在我的代码中哪里出错了?

时间:2021-05-30 18:14:53

标签: python function

问题:您开得太快了,警察拦住了您。编写一个函数以返回 3 种可能结果之一:“无票”、“小票”或“大票”。如果您的速度为 60 或更低,则结果为“无票”。如果速度在 61 和 80 之间(含),则结果为“小票”。如果速度为 81 或更高,则结果为“大票”。除非是你的生日(在函数的参数中编码为布尔值)——在你生日那天,你的速度在所有情况下都可以提高 5。

set(CMAKE_SYSTEM_PROCESSOR arm64)
set(CMAKE_OSX_ARCHITECTURES arm64)

当我运行下面提到的代码时,我得到的是“小票”而不是“大票”。

def caught_speeding(speed,is_birthday):
    status=''
    if is_birthday==False:
        if speed<=60:
            status= 'No Ticket'
        elif speed>=61 or speed<=80:
            status= 'Small Ticket'
        else:
            status= 'Big Ticket'
    else:
        if speed<=65:
            status= 'No Ticket'
        elif speed>=66 or speed<=85:
            status= 'Small Ticket'
        else:
            status= 'Big Ticket'
    return status

3 个答案:

答案 0 :(得分:3)

speed>=61 or speed<=80

如果速度为 81,则第一个条件为 True。

真或(任何)为真


您应该使用 and,或者干脆使用 61 <= speed <= 80

答案 1 :(得分:0)

在 if 语句中,当比较速度时,需要将其更改为“and”而不是“or”。正如所写的那样,您告诉程序仅在速度超过 61 或低于 80 时才输出小票。由于 81 更大,它将满足该参数。一旦'or'变成'and',81就不再满足小票的要求了。

答案 2 :(得分:0)

当您不了解代码中发生的事情时,您应该一步一步地执行,看看会发生什么。在这种情况下,context.become 的计算结果为 Receive

编写函数的最简洁方法是

speed >= 61 or speed <= 80