2

例如我有这样一行代码

if checked:
    checked_string = "check"
else:
    checked_string = "uncheck"

print "You can {} that step!".format(checked_string)

有捷径吗?我只是好奇而已。

4

4 回答 4

20
print "You can {} that step!".format('check' if checked else 'uncheck')
于 2012-04-13T04:10:42.377 回答
5
checkmap = {True: 'check', False: 'uncheck'}
print "You can {} that step!".format(checkmap[bool(checked)]))
于 2012-04-13T04:06:28.217 回答
4

这可以通过 python 3.6+ 使用 f-strings 来处理

print(f"You can {'check' if checked else 'uncheck'} that step!")
于 2019-03-08T18:26:18.913 回答
2

我知道,我已经很晚了。但是人们会搜索。

我在一种情况下使用它,格式字符串必须尽可能简单,因为它们是用户提供的配置的一部分,即由对Python一无所知的人编写。

在这种基本形式中,使用仅限于一个条件。

class FormatMap:
    def __init__(self, value):
        self._value = bool(value)

    def __getitem__(self, key):
        skey = str(key)
        if '/' not in skey:
            raise KeyError(key)
        return skey.split('/', 1)[self._value]

def format2(fmt, value):
    return fmt.format_map(FormatMap(value))

STR1="A valve is {open/closed}."
STR2="Light is {off/on}."
STR3="A motor {is not/is} running."
print(format2(STR1, True))
print(format2(STR2, True))
print(format2(STR3, True))
print(format2(STR3, False))

# A valve is closed.
# Light is on.
# A motor is running.
# A motor is not running.
于 2016-08-11T15:56:06.607 回答