我有一个工作布尔函数,但我的代码非常笨拙。我怎样才能使它更顺畅? [关闭]
Posted
技术标签:
【中文标题】我有一个工作布尔函数,但我的代码非常笨拙。我怎样才能使它更顺畅? [关闭]【英文标题】:I've got a working boolean function, but my code is very clumsy. How can I make it smoother? [closed] 【发布时间】:2021-07-23 05:48:42 【问题描述】:问题如下:
你开得太快了,警察拦住了你。 编写代码来计算结果,编码为 int 值:0=no 票,1=小票,2=大票。如果
speed
小于等于 60,则 结果为 0。如果speed
介于 61 和 80 之间,则结果为 1。 如果speed
大于等于81,则结果为2。除非是is_birthday
-- 在那一天,你的速度在所有情况下都可以提高 5 倍。
我的功能如下:
def caught_speeding(speed, is_birthday):
if is_birthday:
if speed <= 65:
return 0
if 66 <= speed <= 86:
return 1
if speed >= 86:
return 2
if not is_birthday:
if speed <= 60:
return 0
if 61 <= speed <= 81:
return 1
if speed >= 81:
return 2
【问题讨论】:
这并不笨拙。我想你可以通过说if is_birthday: speed -= 5
稍微减小大小,然后使用非生日序列。
您可以停止检查不必要的条件:例如确定速度大于65后,就不需要在下一个if语句中检查了。
欢迎来到 ***。我相信codereview.stackexchange.com 更适合您的问题。
我投票结束这个问题,因为属于codereview.stackexchange.com
【参考方案1】:
这将是我的第一次尝试。您可以在返回所有其他分支后删除 if not is_birthday
。
def caught_speeding(speed: int, is_birthday: bool) -> int:
if is_birthday:
if speed <= 65:
return 0
elif speed <= 86:
return 1
else:
return 2
if speed <= 60:
return 0
elif speed <= 81:
return 1
else:
return 2
【讨论】:
可以进一步简化 -elif 66 <= speed <= 86
-> elif speed <= 86
和 elif 61 <= speed <= 81
-> elif speed <= 81
以上是关于我有一个工作布尔函数,但我的代码非常笨拙。我怎样才能使它更顺畅? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章