2016-11-21 114 views
-1

現在我正在做一個非常小的問題HackRank關於字符串操作,它很容易就像家庭作業轉儲一樣。問題是將一個給定的字符串轉換爲大寫,他們提到他們的問題就像下面一樣字符串大寫python

給你一個字符串。你的任務是利用S的每個字

輸入格式

包含字符串輸入的單次線,S.

約束

0< len(s) <1000 

字符串由字母數字字符和空間。 輸出格式

採樣輸入

hello world 

樣本輸出

Hello World 

我在這裏做我從蟒蛇寫了兩行腳本,我提出,但 他們說,這是一個錯誤的答案但我不明白爲什麼我的代碼是按照

l=list(map(str.capitalize,input().strip(' ').split())) 
print(' '.join(l)) 

任何人都可以告訴我我的代碼有什麼問題 (它在Python 3的測試用例1/3/4/5上失敗,所以)

+0

請人民**閱讀問題**運算不是要求「如何」,也不是「更好的方式」,他詢問**爲什麼**他的代碼無法通過HackRank進行測試! –

回答

0

如果您沒有將分隔符指定爲str.split(),則「任何空格字符串都是分隔符,並且空字符串將從結果中刪除。請注意,這裏的「空白」包括製表符,換行符等。

問題沒有明確指出(沒有關於「詞」的含義的定義),我們不知道它們用於測試用例,但我假設它們有一些字符串或換行符等。總之:顯式地指定" "作爲分隔符,使測試通過!

# Python 2 
s = raw_input() 
print " ".join(x.capitalize() for x in s.strip().split(" ")) 

# Python 3 
s = input() 
print(" ".join(x.capitalize() for x in s.strip().split(" "))) 
+0

謝謝你先生。最後我的代碼也工作了。謝謝你先生! 'l = list(map(str.capitalize,input()。strip('').split(''))) print(''.join(l))' –

+0

現在您知道代碼失敗的原因,你可能想要閱讀帕特里克霍的答案......雖然沒有回答你的問題,但仍然是將字符串中的所有單詞進行大寫處理的pythonic方法。 –

1

使用str.title

>>>'aba aba'.title() 
'Aba Aba' 
+0

這是如何回答這個問題的? –

+0

它不,但它解決了最初的問題 – Ravenix

+0

@brunodesthuilliers http://meta.stackexchange.com/a/66378 –

-1

我相信錯誤是input()。如果HackRank使用Python 2.7,它將嘗試評估輸入,而不是返回一個字符串。因此,輸入hello world將嘗試評估這個字符串,這是無稽之談。如果您嘗試使用raw_input(),則應該解決此問題。

+0

我剛剛在HackRank上嘗試過這個問題,並且您確實有Python 2或Python 3的選擇。我認爲OP確實將它作爲Python 2提交。 –

+0

不,我用python 3。我在HackRank上覆查了它 –

+0

好吧,它在測試用例1/3/4/5與Python 3上失敗,所以'輸入()'不是罪魁禍首。 –