Форматирование условной строки Python

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

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

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

Я ищу что-то подобное этому, в строковой форме

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, но он показывает, в общем, то, что я ищу. Мне интересно, существует ли какое-либо допустимое выражение для форматирования булевых строк, похожее на приведенное выше. После небольшого поиска я не смог найти ничего, относящееся к условному форматированию строк. Я нашел несколько сообщений в строках формата в целом, но это не то, что я ищу.

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

  • Невозможно понять формат данных 802.11 Data Frame в файле PcapNG
  • IOError: 13, «Permission denied» при записи в / etc / hosts через Python
  • AttributeError: объект 'unicode' не имеет атрибута '_sa_instance_state'
  • Как установить текст по умолчанию для виджета Tkinter Entry
  • python + numpy: почему numpy.log выдает ошибку атрибута, если его операнд слишком велик?
  • Как подключить HBase и Spark с помощью Python?
  • Почему я не могу заставить статический каталог работать с django 1.3?
  • Список групп по значениям
  • 2 Solutions collect form web for “Форматирование условной строки Python”

    Ваш код действительно действителен Python, если вы удалите два символа, запятую и двоеточие.

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

    Более современный стиль использует .format , хотя:

     >>> s = "At least, that's what {pronoun} told me.".format(pronoun="he" if gender == "male" else "she") >>> s "At least, that's what he told me." 

    где аргумент в формате может быть dict вы строите в любой сложности, какой вам нравится.

    В Python существует условное выражение, которое принимает вид

     A if condition else B 

    Ваш пример можно легко превратить в действительный Python, опуская только два символа:

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

    Альтернативой, которую я часто предпочитаю, является использование словаря:

     pronouns = {"female": "she", "male": "he"} print "At least, that's what %s told me." % pronouns[gender] 
    Python - лучший язык программирования в мире.