创建一个字符串条件,如果条件

2024-09-28 05:26:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个字符串条件,通过在不同的位置插入一个条件

伪示例:

is_active=True
is_ready=True

    str = 'aquire {} lorem ipsum {} another {} lorem2 {}'.format((if is_active:'activated' else ''), (if is_ready:'ready' else ''), (if is_active:'activated occurred' else ''), (if is_ready:'set to go' else ''))

实际上有7个变量,所以我尽量避免使用很多ifs

结果:

'aquire activated lorem ipsum ready another activated occurred lorem2 set to go'

Tags: trueifisanother条件elseactiveready
2条回答

将规则放入函数中:

def pattern(active,ready):
        rule=[ (active,'activated',''),(ready,'ready',''),(active,'activated occurred',''),(ready,'set to go','') ]
        return [ t[1] if t[0] else t[2] for t in rule ]

str= 'aquire {} lorem ipsum {} another {} lorem2 {}'
print( str.format(*pattern(True,True)) )

Out: "aquire activated lorem ipsum ready another activated occurred lorem2 set to go"

您可以创建一个映射器函数和一个字典,其中包含根据位置和真实值打印的内容:

is_active=True
is_ready=True

d ={ (0,True)  : "activated",
     (1,True)  : "ready",
     (2,True)  : "activated occured",
     (3,True)  : "set to go",
     (4,False) : "enough said"
   }

# use a better name - gt for shortness here so line does not need to break
def gt(pos, value): 
    # if not in dict, default to empty string
    return d.get((pos,value),"")

t = 'aquire {} lorem ipsum {} another {} lorem2 {}'

# str is a built in - dont name variables like that
text = t.format(gt(0,is_active), gt(1,is_ready), gt(2,is_active), gt(3,is_ready))
print(text)

is_active=False
text = t.format(gt(0,is_active), gt(1,is_ready), gt(2,is_active), gt(3,is_ready))
print(text)
print(gt(99,False))
print(gt(4,False))

输出:

# True,True
aquire activated lorem ipsum ready another activated occured lorem2 set to go
# False,True
aquire  lorem ipsum ready another  lorem2 set to go
# gt(99,False) which is not in dict

# gt(4,False)
enough said

Doku:dict.get(key[, defaultvalue])

相关问题 更多 >

    热门问题