2016-11-02 1 views
1

私は学校の仕事をしています。私はユーザーに10語のリストを作ってもらうことになっていて、ユーザーが選択した文字で始まるリスト内のすべての項目を削除するはずです。

これは私がやろうとした方法ですが、文字で始まるすべての単語を削除するわけではありません。
私は私の限られた知識で解決できるほど多くのトラブルシューティングを行いました。それはforループがすべての単語を処理していないように見えます。ユーザーが選択した文字で始まるアイテムをすべて削除するにはどうすればよいですか?

あなたが動作しないそれを反復しているとしてリスト から項目を削除する
ordalisti = [] 
for i in range(10): 
    wordlist.append(str(input("Type a word: ").lower())) 
letter = input("Choose a letter: ").lower() 
for word in wordlist: 
    if word[0] == letter: 
     wordlist.remove(word) 
print(wordlist) 
+0

' ordalistiは= 'ワードリストは= []'またあなたのインデントがあるビットオフ... – MooingRawr

答えて

2

。削除の行為は反復シーケンスに干渉し、いくつかの項目をスキップします。

これを回避する方法の1つは、保存するアイテムを新しいリストにコピーし、古いリストを新しいリストに置き換えることです。

handle removing items from a listにたくさんの方法についてこの既存の質問に対する回答を見てください。

+1

最小限の変更のために、あなたは可能性ちょうど 'wordlist.copy()'の単語のためにdo – brianpck

+0

ありがとう!あなたが言ったように、選択された文字で始まらなかったアイテムを新しいリストに追加して、古いリストを新しいものに置き換えました。 –

-2

ordalisti = []の代わりにwordlist = []が必要だと思います。そして、あなたの字下げは、最初の変数宣言から始まってちょっとです。

+1

これは答えではなく、コメントです。 –

+0

コメントする権限がありません。 – rumski20

+0

...自分の答えを除いて明らかに... – rumski20

2

あなたはリストの内包表記を使用することができます:[] `でなければなりません

print [word for word in wordlist if word[0] != letter] 
+0

私はあなたが 'word [0]!= letter'を望むと思うと思います。 –

+0

これをキャッチしてくれてありがとう。 –

-1
wordlist = [] 

for i in range(10): 
    wordlist.append(input("Type a word: ").lower().strip()) 

letter = input("Choose a letter: ").lower().strip() 

new_wordlist = [word for word in wordlist if not word.startswith(letter)] 

print(new_wordlist) 
+2

コード専用の回答は、なぜOPに問題があるのか​​、そしてあなたのコードがそれを修正する理由を説明するものほど役に立ちません。 –

関連する問題