2016-10-06 8 views
-3

なぜ私は入力した各項目の最初の文字だけを印刷するのだろうと思っていました。リストをループしてfirst_letters変数の文字のいずれかで始まる各項目を出力したいと思います。リスト内の各項目の最初の文字のみを印刷するのはなぜですか?

phrase = input('Enter a list: ') 
first_letters = ['A','B','C','D'] 
for name in phrase: 
    if name[0] in first_letters: 
     print(name) 

#['Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot'] 
+2

がどのようにデータを入力していますか?入力の正確なサンプルを提供できますか? – idjaw

+0

また、これはPython 2または3ですか? 'input'はそれぞれの動作が非常に異なっています。 – ShadowRanger

+0

これはP3です。私は 'Alpha'、 'Bravo'、 'C​​harlie'、 'Delta'、 'Echo'、 'Foxtrot' – Xicivi

答えて

0

これがPython3の場合、入力するリストは実際にはリストではなく文字列です。だからあなたが電話するとき、

for name in phrase: 

あなたはその文字列の各文字を呼んでいます。したがって、変数nameは実際には1文字なので、name[0]nameに等しくなります。

0

として、あなたの入力を考える:これはあなたの入力ビットを扱う複雑に

Alpha, Bravo, Charlie, Delta, Echo, Foxtrot 

。あなたは今、各単語の間にスペースとカンマを扱わなければならないでしょうから。

ユーザー入力を入力したら、すべてのスペースを処理し、splitを使用して実際にエントリのリストを取得します。だから、:することができます次に

Alpha Bravo Charlie Delta Echo Foxtrot 

、:それはおそらく簡単に同じようにリストを離れた空間を扱うようになり

['Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot'] 

phrase = input('Enter a list: ').replace(' ', '').split(',') 

フレーズは、今のように見えるリストになりますそのreplaceメソッドを使用しないでsplit()と呼び出して、そのデフォルトのスプリットオンスペースを利用してください:

phrase = input('Enter a list: ').split() 

あなたのリストを繰り返しているので、first_lettersリストで各単語の最初の文字を確認できるようになりました。

あなたのリストに同じ場合と比較して、リスト内の各反復のためupper()を呼び出すことを確認してください、あなたは常に正確に同じ筐体に比較することを確認するには、次の

phrase = input('Enter a list: ').replace(' ', '').split(',') 
first_letters = ['A','B','C','D'] 
for name in phrase: 
    if name[0].upper() in first_letters: 
     print(name) 

出力:

Alpha 
Bravo 
Charlie 
Delta 
入力アルファ、ブラボー、チャーリー、デルタ、エコー、フォックストロット

あなたはそれぞれの名前の後にコンマを入力している場合は、.splitを使用する入力(「」)については

0

あなただけのスペースを使用している場合betwee n個の名前は.split()を使用します。

.split()は空白を探し、スペースの後にユーザー入力を分割し、.split( '、')はコンマを検索し、コンマを見つけた後にユーザー入力を分割します。

phrase = input('Enter a list: ').split(',') 
first_letters = ['A','B','C','D'] 
for name in phrase: 
    if name[0].upper() in first_letters: 
     print(name) 

は、それが.split()またはを使用した後、あなたにリスト形式で名前が表示されます名前

print(phrase) 

のリストを参照してください。スプリット( ' ')

[' アルファ'、 'ブラボー'、 'チャーリー'、 'デルタ'、 'エコー'、 'フォックストロット']

出力:

Alpha 
Bravo 
Charlie 
Delta 

あなたは正しい名前をしたい場合は、小文字を使用する場合でも、このコードを入力アルファ、ブラボー、チャーリー、デルタ、エコー、フォックストロット、アルファ、ブラボー、チャーリー、デルタのために

phrase = input('Enter a list: ').split(',') 
first_letters = ['A','B','C','D','a','b','c','d'] 
for name in phrase: 
    if name[0] in first_letters: 
     print(name) 

を使用するエコー、フォックストロット

出力:

Alpha 
Bravo 
Charlie 
Delta 
alpha 
bravo 
charlie 
delta 
関連する問題