我有一个工作布尔函数,但我的代码非常笨拙。我怎样才能使它更顺畅? [关闭]

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 &lt;= speed &lt;= 86 -> elif speed &lt;= 86elif 61 &lt;= speed &lt;= 81 -> elif speed &lt;= 81

以上是关于我有一个工作布尔函数,但我的代码非常笨拙。我怎样才能使它更顺畅? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用函数切换布尔值? [复制]

在 Xcode 中使用自动布局禁用了我的代码(动态)工作?

我有一个与布尔值相关的 Mongoose 错误

布尔值的 Django 模板标签

我的带有 Rcpp::List 输入的 C++ 函数非常慢

在循环中使用协程