2016-09-16 6 views
0

whileループを使用して、テキストファイル内のリストから単語を出力しようとしています。私はそれが4文字の長さに達すると、停止するためにループが必要です。私の現在のコードでは、無限ループが発生しています。whileループを使用して、長さ4の単語が印刷されるまでリストから単語を印刷します。

wordsFile = open("words.txt", 'r') 
words = wordsFile.read() 
wordsFile.close() 
wordList = words.split() 

# While loop displays names based on length of words in list 

print("\nSelected words are:") 
while words in wordList: 
if len(words) != 4: 
    print(words) 

サンプル所望の出力

選択された単語は、次のとおりです。

  • アバーテ

  • ごまかし

  • 普及

  • 潜否定する

  • 異常

  • 凝集

  • 溶解

  • とりとめ

+0

質問を投稿する際には、無関係な内容からできるだけコード内の問題を分離するようにしてください。この場合、単語のリストのソースは、長さに基づいてリストからワードを印刷する動作とは無関係です。 –

答えて

1

語長が4の場合は、breakを追加します。また、while words in wordList:でない場合は、for words in wordList:です。 While expressionステートメントを使用すると、式becomeFalseまで反復されますが、words in wordListは常にTrueになります。だからあなたは無限ループを起こすでしょう。

if len(words)==4: 
    break 

次のようになります:

for word in wordList: 
    if len(word)==4: 
     break 
    print(words) 

break文が何をしていますか?ループを停止し、ループの次の行を実行します。 forループでも同様に動作します

+0

こんにちはレビ、私はあなたのコードを試して、それはまだ私に無限ループを与えるようです。ループの中断でさえ。助言がありますか?ありがとう。 – tronicx

+0

@tronicx whileの代わりにforを使用する必要があります。私の更新された答えを見てください。 – levi

1

コードの多くは終了していますが、ループや条件文がどのように機能するかはわかりません。

次のことを試してください:文字列を読み多かれ少なかれ4以上を持っているすべての単語を印刷し、その後

for word in words: 
    # will not print the first word of length 4 which breaks the loop 
    if len(word) == 4: 
     break 
    print(word) 
+0

質問を正しく読めば、if条件は '== 4'でなければならず、印刷の後になければなりません。 –

+0

2度目の読書で、私はあなたが長さの状態について正しいと思います。サンプルの希望出力から判断すると、長さ4の最初の単語が折れて印刷されないように見えます。 –

0

あなたは文字列のリストにテキストファイルからすべての単語を変換しようとしていると手紙?もしそうなら、ファイルをループして単語のリストに各単語を追加する必要があります。

ない場合、私はwordListにして単語の

for word in wordList: 
    if len(word) == 4: 
     continue 
    else: 
     print(word) 
0

リコール= 0

を続ける代わりにブレーク使用することをお勧め:外の火星からレオンTietzへ

while recall == 0: 
    if len(word) != 4: 
     print(word) 
     break 
    else: 
     recall = 1 

セイHIを(この世界)Y'all IT 210 kiddos!

関連する問題