2016-09-16 93 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!