2016-09-16 46 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。看到我更新的答案。 – levi

1

你的許多代碼是關閉的但是關閉,而且你似乎不太瞭解循環和條件如何工作。

嘗試以下操作:

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

二讀時,我認爲你對長度條件是正確的。從樣本期望的輸出來看,它看起來像長度爲4的第一個字打破它不應該被打印。 –

0

你想從一個文本文件轉換所有的話到字符串列表,然後通過串閱讀和打印所有具有多於或少於四個詞信嗎?如果是這樣,您將需要遍歷文件並將每個單詞附加到單詞列表中。

如果沒有,我建議使用繼續,而不是突破

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

召回= 0

的詞的詞表:

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

打招呼萊昂Tietz來自火星(滿分這個世界)你們都IT 210 kiddos!