Как реализовать условное форматирование строки?

Я работал над текстовой игрой на Python и натолкнулся на случай, когда я хочу отформатировать строку по-разному в зависимости от набора условий.

В частности, я хочу отображать текст, описывающий предметы в комнате. Я хочу, чтобы это отображалось в описании комнаты тогда и только тогда, когда рассматриваемый объект элемента находится в списке элементов объекта комнаты. Я чувствую, что простое объединение строк на основе условных выражений не будет выводиться так, как я хочу, и было бы лучше иметь разные строки для каждого случая.

У меня вопрос, есть ли какой-нибудь питонический метод форматирования строк на основе результата логического условного выражения? Я мог бы использовать структуру цикла for, но мне было интересно, есть ли что-нибудь попроще, похожее на выражение генератора.

Я ищу что-то похожее на это в строковой форме

num = [x for x in xrange(1,100) if x % 10 == 0]

В качестве общего примера того, что я имею в виду:

print "At least, that's what %s told me." %("he" if gender == "male", else: "she")

Я понимаю, что этот пример недействителен Python, но он показывает, в общем, то, что я ищу. Мне интересно, есть ли какое-либо допустимое выражение для форматирования логической строки, подобное приведенному выше. Немного поискав, я не смог найти ничего, относящегося конкретно к условному форматированию строк. Я нашел несколько сообщений о строках формата в целом, но это не то, что я ищу.

Если что-то подобное действительно существует, это было бы очень полезно. Я также открыт для любых альтернативных методов, которые могут быть предложены. Заранее благодарим за любую помощь, которую вы можете предоставить.

64
задан martineau 7 June 2018 в 18:11
поделиться