布尔表达式:函数不返回预期输出

时间:2015-04-11 04:47:39

标签: python-3.x boolean boolean-logic

问题:

写一个函数should_shutdown(battery_level,time_on),如果电池电量低于4.8,则返回True,除非time_on小于60,在这种情况下,只有当电池电量低于4.7时,该函数才返回True。在所有其他情况下,函数返回False。

def should_shutdown(battery_level, time_on):
    if battery_level < 4.8:
        if time_on < 60:
            return False
        else:
            return True
    else:
        if battery_level < 4.7:
            return True
        else:
            return False

Testings:

should_shutdown(4.69, 50) 评估为: 'False'应返回 "True"

should_shutdown(5, 10) 评估为: False

should_shutdown(4.74, 90) 评估为: True

should_shutdown(4.74, 50) 评估为: False

should_shutdown(4.7, 50) 评估为: False

should_shutdown(4.75, 60) 评估为: True

should_shutdown(4.75, 59) 评估为: False

第一个测试没有返回测验服务器的预期输出。我不太了解这个问题,这就是我复制粘贴它的原因。

2 个答案:

答案 0 :(得分:1)

请注意:

  1. battery_level < 4.7时,该函数应始终返回True。

  2. battery_level < 4.8time_on 小于60时,该函数也应返回True。

  3. 将这两者放在一起产生:

    def should_shutdown(battery_level, time_on):
        return (battery_level < 4.7) or (battery_level < 4.8 and time_on >= 60)
    

答案 1 :(得分:1)

def should_shutdown(battery_level, time_on):
    if battery_level < 4.8:
        return (time_on >= 60) or (time_on < 60 and battery_level < 4.7)
    return False

这应该是上述问题的功能