Logic

作者: Python_Camp | 来源:发表于2022-10-21 17:50 被阅读0次

    逻辑符合任务之一

    创建一个不使用 "or "关键字的OR函数,该函数接收一个布尔值列表并对所有的布尔值进行OR运算。

    假设有1到6个变量,如果列表为空,则返回Nonepython|nil(ruby)

    def alt_or(lst):
        #Please do not use the OR operator
        return True if any([c==True for c in lst]) else False if lst else None
    

    继续精简代码

    def alt_or(lst):
        return any(lst) if lst else None
    

    逻辑符合任务之二

    给定一个布尔值数组和一个逻辑运算符,根据对数组中的值依次应用运算符,返回一个布尔值结果。

    例子

    booleans = [True, True, False], operator = "AND"
    真与真 -> 真
    True AND False -> False 
    最终结果返回假
    
    booleans = [True, True, False], operator = "OR"
    True OR True -> True
    True OR False -> True
    返回真
    
    booleans = [True, True, False], operator = "XOR"
    True XOR True -> False
    False XOR False -> False
    返回假
    

    输入
    一个布尔值数组(1 <= array_length <= 50)
    一个指定逻辑运算符的字符串。"and", "or", "xor".
    输出
    一个布尔值(真或假)。

    import operator
    
    OPS = {
        "AND": operator.and_,
        "OR" : operator.or_,
        "XOR": operator.xor
    }
    
    def logical_calc(array, op):
        return reduce(OPS[op], array)
    

    各有千秋,思路拓宽

    2nd

    def logical_calc(array, op):
        res = array[0]
        for x in array[1:]:
            if op == "AND":
                res &= x
            elif op == "OR":
                res |= x
            else:
                res ^= x
    
        return res
    
    

    3rd

    from operator import and_, or_, xor
    from functools import reduce
    OPERATOR = {'AND': and_, 'OR': or_, 'XOR': xor}
    
    def logical_calc(array, op):
        return reduce(OPERATOR[op], array)
    
    

    4th

    def logical_calc(array, op):
        ops = {
            "AND": lambda x, y: x & y,
            "OR": lambda x, y: x | y,
            "XOR": lambda x, y: x ^ y
        }
    
        from functools import reduce
        return reduce(ops[op], array)
    
    

    5th

    def logical_calc(array, op):
        return reduce(eval('bool.__'+op.lower()+'__'),array)
    
    

    6th

    def logical_calc(array, op):
        s = ' ' + op.lower().replace('xor', '^') + ' '
        return eval(s.join(str(x) for x in array))
    
    

    7th

    import operator
    
    def logical_calc(array, op):
        op = '__{}__'.format(op.lower())
        op = getattr(operator, op)
        return reduce(op, array)
    
    

    8th

    def logical_calc(array, op):
      return eval({ 'AND': '&', 'OR': '|', 'XOR': '^' }[op].join(map(str, array)))
    

    9th

    def logical_calc(array, op):
        out = array[0]
        for c in array[1:]:
            if op in ('AND','OR'):
                out = eval(str(out) + f" {op.lower()} " + str(c))
            elif op == 'XOR':
                out = not c == out
        return out
    

    一道题深挖出多少语法/知识点/技巧,大力推荐自学的好方法!

    本文由mdnice多平台发布

    相关文章

      网友评论

          本文标题:Logic

          本文链接:https://www.haomeiwen.com/subject/uwymzrtx.html