2015-07-11 2 views
0

Итак, я делаю основную текстовую игру, когда я продвигаю изучение python. Как я предложить выбор я пытаюсь напечатать выбор из списка и у меня есть следующие строки кода:Python sep = "," But Only Want It 2nd Time On

hubchoices = ["fight","shop","upgrade stats"]

print("You Can,"hubchoices[0].capitalize(),,hubchoices[1].capitalize(),hubchoices[2].capitalize(), sep= ", ") 

выход я получаю это:

You Can, Fight, Shop, Upgrade stats 

есть способ иметь sep = "," работать только после первой запятой, чтобы получить что-то вроде этого:

You Can Fight, Shop, Upgrade stats 

(а также способ заглавной первую букву каждого слова с .capitalize())

+0

Действительная получил выход имеет 0-й элемент из 'hubchoices', даже если он не должен отображаться в соответствии с кодом. Вы можете исправить несоответствие? – TigerhawkT3

+0

О, и короткий ответ на ваш вопрос - «нет». Функция 'print()' 'sep' применяется ко всем аргументам, поэтому для получения нужного вам результата вам нужно использовать какую-то строковую операцию. – TigerhawkT3

ответ

3

str.join Попробуйте:

print("You Can %s" % ','.join([c.capitalize() for c in hubchoices])) 
0

Try форматирования строк.

hubchoices = ["fight","shop","upgrade stats"] 
'You can: {}, {}'.format(*map(str.capitalize, hubchoices[1:])) 

Результат:

'You can: Shop, Upgrade stats' 
+0

Я думаю, он имел в виду, что ему нужна только запятая между первым и вторым вариантами, поэтому '[1:]' не требуется. –

+0

@Reut, 1. Код OP содержит только последние два элемента 'list', но на выходе отображаются все три элемента. 2. Выход имеет запятую между каждым элементом 'list'. 3. Разница между производимым выходом и желаемым выходом - это запятая после 'can'. Независимо от того, что вопрос названия - включение аргумента 'sep' функции' print() 'применимо только к некоторым элементам - интересно, но не представляется возможным. Это нужно делать с помощью строковых операций. – TigerhawkT3