【问题标题】:How do I simplify an overly broad if statement?如何简化过于宽泛的 if 语句?
【发布时间】:2019-04-09 21:14:04
【问题描述】:

我不知道如何清楚地简化 if 语句运行的要求。 有没有更简单的方法可以做到这一点? 如果数字是接近 10 的 2 个整数,则代码应该返回 True,无论是高于还是低于。

def nearten(num):
    if (abs(num - 2) % 10) == 0 or (abs(num + 2) % 10) == 0 or (abs(num - 1) % 10) == 0 or (abs(num + 1) % 10) == 0 or num % 10 == 0:
        return True
    return False

【问题讨论】:

  • def nearten(num): return abs(10 - num) <= 2
  • 就像@PMende 所说:你确定这是你想要的条件吗?因为x % 10 会为您提供最后一位数字。例如123 % 10 == 3 - 其中 123 不在 10 附近。
  • @foobarna 我要离开提供的问题描述,即“如果数字是 2 个接近 10 的整数,代码应该返回 True,要么高于或低于。”如果柯蒂斯的代码比我的更接近他想要的行为,我可以提供修改。

标签: python-3.x simplify simplification


【解决方案1】:

你肯定把事情复杂化了。这是一个更灵活的版本:

def near_ten(num, close=2):
    return abs(10 - num) <= close

另一种版本(如果您正在寻找接近 10 的任何倍数的数字):

def near_ten_multiple(num, close=2):
    return abs(10 - (num % 10)) <= close

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-20
    • 2014-06-18
    • 2021-12-07
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多