2016-11-21 12 views
-1

今私はHackRankで文字列操作について非常に小さな質問をしています。これは宿題ダンプのように非常に簡単です。問題は、指定された文字列を大文字に変換して、以下のように質問を述べることです。文字列はPythonで大文字にします

文字列が与えられています。あなたの仕事は、Sの各単語を大文字の文字列は、英数字で構成されてい

入力フォーマット

文字列を含む入力の一行、S.

制約

0< len(s) <1000 

することであり、スペース。私は私のpythonから2行のスクリプトを書いて、私はそれを提出したが、彼らはそれが間違った答えであることを特徴とする 、ここで行っている 出力フォーマット

サンプル入力

hello world 

サンプル出力

Hello World 

私のコードがそれに従っている理由は理解できません。

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

私のコードで何が間違っているのか誰にでも教えてください (テストケース1/3/4/5ではPython 3で失敗します)

+0

してください人々**質問を読んでopが「どのように」も「より良い方法」を求めていません**、彼が求めています**なぜ彼のコードがHackRankのテストに失敗したのですか? –

答えて

0

セパレータをstr.split()に指定しない場合、「空白文字列はセパレータであり、空の文字列は結果から削除されます。」ここで "空白"にはタブ、改行などが含まれています。

問題は明確に指定されていません(「単語」の定義はありません)。テストケースで使用するものはわかりませんが、改行などの文字列が2つあります。とにかく:明示的セパレータとして" "を指定すると、テストが合格します:!

# 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

ありがとうございました。私も.finally私のコードも働きました。ありがとうございました! print( '' .join(l)) –

+0

コードが失敗した理由を知ったのでPatrick Haughの答えを読みたいかもしれません...あなたの質問に答えることはできませんが、文字列内のすべての単語を大文字にする無限の方法です。 –

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を使用しました.I HackRankでそれをダブルチェックしました –

+0

これはPython 3でテストケース1/3/4/5で失敗するので、 'input()'は原因ではありません。 –

関連する問題