2016-09-11 2 views
3

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

  for items in winners: 
       print(items) 

Могу ли я включить это в операторе печати? Я хочу:

  print("The winners of {} were: {} with a score of {}".format(sport, winners, max_result)) 

Есть ли способ интеграции для цикла в заявлении для печати, или другой способ устранения кавычки и квадратные скобки такие, которые я могу включить его в заявлении?

Спасибо.

+3

Просьба показать точный образец данных, с которыми вы имеете дело, и образец того, как вы ожидаете, чтобы он выглядел. Объясните, что в настоящее время происходит прямо сейчас, что указывает на то, что есть проблема с вашим кодом. – idjaw

+0

@idjaw Это вопрос о возможностях языка, а не о проблеме в коде. –

+0

@JeremyFriesner Я не вижу, что не так с просьбой предоставить дополнительную информацию в этом случае? Конечно, это, должно быть, было опробовано, и что-то не получилось, что побудило OP задавать этот вопрос в первую очередь? Просить больше информации, чтобы помочь OP понять их ошибку для меня, является хорошим подходом здесь. – idjaw

ответ

0

Если winners - это список строк, вы можете объединить их с помощью str.join.

Например:

>>> winners = ['John', 'Jack', 'Jill'] 
>>> ', '.join(winners) 
'John, Jack, Jill' 

Таким образом, вы можете поместить ', '.join(winners) в вашей печати вызова вместо winners и напечатает победителей, разделенных запятыми.

6

Вы не можете включить цикл for, но можете присоединиться к вашему списку победителей в строку.

winners = ['Foo', 'Bar', 'Baz'] 
print('the winners were {}.'.format(', '.join(winners))) 

Эта печать будет

победителей были Foo, Bar, Баз.

0

A для цикла может поставляться только print в виде постижения.

Но, если содержимое списка в соответствующем порядке требуется, вы можете просто сделать:

print("The winners of {} were: {} with a score of {}".format(*winners)) 

Это просто сопоставляет каждый кронштейн с каждой позиции в списке. Если вам нужно заказать это по-другому вы просто поставить их относительное положение:

print("The winners of {1} were: {0} with a score of {2}".format(*winners)) 
0

Первая нота, в Python 3 print является функцией, но это было заявление в Python 2. Кроме того, вы не можете использовать for заявление как аргумент. Только такое странное решение приходит на ум, который выглядит только как для цикла:

data = ['Hockey','Swiss', '3'] 
print("Sport is {}, winner is {}, score is {}".format(*(_ for _ in data))) 

Конечно, потому что print является функцией, вы можете написать свою собственную функцию со всеми вещами вам нужно, в качестве примера:

def my_print(pattern, *data): 
    print(pattern.format(*(_ for _ in data))) 

my_print("Sport is {}, winner is {}, score is {}", 'Hockey', 'Swiss', '3') 

Вы также можете прочитать о F-строки"Literal String Interpolation" PEP 498, которые будут введены в Python 3.6. Эти f-строки предоставят способ встраивания выражений внутри строковых литералов, используя минимальный синтаксис.

Смежные вопросы