2015-07-11 38 views
0

所以我正在做一個基本的文字遊戲,因爲我正在學習python。 正如我提供的選擇我想從一個列表打印選擇,我有幾行代碼:Python sep =「,」但只要它第二次啓動

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

你的實際接收到的輸出具有從'hubchoices'第0個元素,即使它應根據代碼不顯示。你能糾正差異嗎? – TigerhawkT3

+0

哦,你的問題的簡短答案是「不」。 'print()'函數的'sep'應用於所有參數,所以你必須使用某種字符串操作來獲得你想要的輸出。 – TigerhawkT3

回答

3

嘗試str.join

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

嘗試字符串格式化。

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'後面的逗號。無論如何,標題的問題 - 使'print()'函數的'sep'參數僅適用於某些元素 - 很有趣但不可能。它必須通過字符串操作完成。 – TigerhawkT3

相關問題