【问题标题】:Toggling between two sets of boolean and string representations在两组布尔和字符串表示之间切换
【发布时间】:2021-02-11 02:20:38
【问题描述】:

我有 2 个布尔变量:

a = True
b = True

每一个都有一些表现在它们的字符串表示中的属性:

a_str = "a is real"
b_str = "b is surreal"

结果应该:

  • 检查a and b 是否为真,是否为真,输出“a 是真实的,b 是超现实的
  • 检查是否只有a为True,然后输出:“a is real
  • 检查是否只有b为True,然后输出:“b is surreal

我尝试了以下方法并且它有效,但引出不同的 if-elifs 相当冗长,即

a = True
b = True

a_str = "a is real"
b_str = "b is surreal"

if a and b:
    print(f"{a_str} AND {b_str}")
elif a:
    print(a_str)
elif b:
    print(b_str)

特别是。如果有一个新变量c,例如

a = True
b = True
c = True

a_str = "a is real"
b_str = "b is surreal"
c_str = "c is cereal"

if a and b and c:
    print(f"{a_str} AND {b_str} AND {c_str")
elif a and b:
     print(f"{a_str} AND {b_str}")
elif a and c:
     print(f"{a_str} AND {b_str}")
elif b and c:
     print(f"{b_str} AND {c_str}")
elif a:
     print(a_str)
elif b:
     print(b_str)
elif c:
     print(c_str)

有没有更简洁的方法来枚举布尔检查的不同情况?

【问题讨论】:

    标签: python string if-statement boolean combinations


    【解决方案1】:

    你不能这样做吗:

    ' AND '.join(filter(None,[a_str*a,b_str*b,c_str*c]))
    

    【讨论】:

    • 优雅的解决方案!!
    【解决方案2】:

    为什么不在两个不同的列表中包含这些值。一个带有布尔值,另一个带有要打印的字符串。

    然后您可以使用与本文所述相同的逻辑来获取第三个列表,该列表具有索引为 True 的值:Selection elements of a list based on another 'True'/'False' list

    现在用“and”加入第三个列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-01
      • 2011-09-15
      • 1970-01-01
      • 2022-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-16
      相关资源
      最近更新 更多