【问题标题】:How to negate a value with if/else logic in python?如何在python中用if/else逻辑否定一个值?
【发布时间】:2021-02-10 05:48:10
【问题描述】:

我是使用 Python 的初学者。我有两个值要设置 if/else 逻辑。一个是 "obj.default_value",另一个是 "obj.override"

我的问题的基本总结是我想设置一个 if/else 语句来检查 obj.override == 'true' 那么 obj.default_value 是否应该改变为“真”。如果 obj.override == 'false' 那么 obj.default_value 应该更改为 'False'。最后一个选项是如果 obj.override == 'none' 那么 obj.default_value 应该保持原来的值。

更好的是,如果可能的话,我希望 obj.override 否定 obj.default_value 的值。真变成假,反之亦然。我想设置一个覆盖默认值的新函数。我希望我能很好地解释这一切,任何帮助将不胜感激。

这是我当前引用的两个值的代码:

    def default_value_custom(self, obj):
        color = 'green' if obj.default_value else 'red'
        return mark_safe("<span style='color:%s'>%s</span>" % (color, obj.default_value))
    default_value_custom.short_description = 'default value'


    def override_custom(self, obj):
        if obj.override == 'true':
            return mark_safe("Always <span style='color:green'>True</span>")
        elif obj.override == 'false':
            return mark_safe("Always <span style='color:red'>False</span>")
        else:
            return obj.override

这里也是管理视图的屏幕截图。

【问题讨论】:

标签: python


【解决方案1】:

让我们总结一下:

  1. 条件if value:(以及while value:)测试value 的计算结果是否为布尔真。许多人称这些价值观为“真实”或“真实”。

    否定条件if not value: 测试相反的情况,即value 的计算结果是否为布尔假。这样的值被称为“假”。

    真相就是一切都不是假的;典型的 falsy 值是:

    • 定义为假的常量:无和假。
    • 任何数字类型的零:0, 0.0, 0j, Decimal(0), Fraction(0, 1)
    • 空序列和集合:''、()、[]、{}、set()、range(0)

    (引自the docs,更多详情请点击)

  2. 任何值都可以转换为布尔值TrueFalsebool(value)。换句话说:truthy 只是意味着 bool(value) 等于 True

  3. 剩下的问题是如何测试常量True(或FalseNone),而不仅仅是任何真(或假)值。答案是:

     if value is True: # or False/None
         ...
    

您要求的功能是:

def overriden(value, override):
    return value if override is None else override

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-24
    • 2021-08-27
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多