用' pop'删除单词

时间:2015-03-13 17:54:33

标签: python

我需要从列表中删除一个单词,然后显示单词 - 我可以做得很好。 但是当我删除第二个单词并附加前面删除的单词时,它找不到列表。

replword = words.pop(9)
except IOError:
    print("WARNING: The text file cannot be found. The program will not run without error.")

'while menu = true'
    try:
        threeByThree() #function: threeByThree
        #suffle words
        #remword = words[9]
        #words = random.shuffle(words)
        print(remword)
        newword = replword
        words.append(newword)
        threeByThree()
        #firstNineWords = words[:9]
        #lastWord = words[-1]
        words[random.randrange(9)] = lastWord #generate integer between 0 and 9
        print("")
        threeByThree
    except NameError:
        print("WARNING: Because the file is not found, the   list 'words' is not defined.")

我已经尝试了多个不同的命令中的代码,我仍然得到名称错误,说明列表没有定义,当它在拉入单词时定义。

我需要能够为这两个单词分配2个变量,一个被删除并添加,然后删除第二个变量 - 在此问题之后我可以自己完成。

1 个答案:

答案 0 :(得分:0)

欢迎来寻找错误101 。您需要退后一步,尝试澄清您遇到的问题。您提供的代码是一些较大脚本的不完整部分。如上面的注释所示,您将threeByThree引用为函数和内置函数。此外,您没有向该函数传递任何内容,假设单词是全局的并且始终可用。你可以做的最好的事情是打开一个REPL控制台并乱七八糟。

>>> listOfWords = ["My","dog","has","fleas","and","ticks","and","worms","he","al
>>> listOfWords
['My', 'dog', 'has', 'fleas', 'and', 'ticks', 'and', 'worms', 'he', 'also', 'smells']
>>> removeditem = listOfWords[4]
>>> removeditem
'and'
>>> listOfWords
['My', 'dog', 'has', 'fleas', 'and', 'ticks', 'and', 'worms', 'he', 'also', 'smells']
>>> removeditem = listOfWords.pop(4)
>>> listOfWords
['My', 'dog', 'has', 'fleas', 'ticks', 'and', 'worms', 'he', 'also', 'smells']
>>> removeditem
'and'
>>> anotherremoveditem = listOfWords.pop(1)
>>> listOfWords
['My', 'has', 'fleas', 'ticks', 'and', 'worms', 'he', 'also', 'smells']
>>> anotherremoveditem
'dog'
>>> listOfWords.append(removeditem)
>>> listOfWords
['My', 'has', 'fleas', 'ticks', 'and', 'worms', 'he', 'also', 'smells', 'and']
>>> listOfWords.append(anotherremoveditem)
>>> listOfWords
['My', 'has', 'fleas', 'ticks', 'and', 'worms', 'he', 'also', 'smells', 

'and', 'dog']
    >>>>>> def threeByThree(words):
...   print(words[:3])
...   print(words[3:6])
...   print(words[6:9])
...
>>> threeByThree(listOfWords)
['My', 'has', 'fleas']
['ticks', 'and', 'worms']
['he', 'also', 'smells']
>>> threeByThree(listOfWords[9:])
['and', 'dog']
[]
[]
>>>

当然,如果您输错了某些内容,则可以看到错误消息

>>> threeByThree(sistOfWords[9:])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sistOfWords' is not defined

因此,如果您对threeByThree()的调用正在引用您未传递的变量 words ,并且Try / Except循环正在捕获异常,那么您将收到错误的错误消息。

>>> def three():
...   print(words[0:3])
...
>>> three()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in three
NameError: global name 'words' is not defined
>>>

正如我过去告诉过的学生:一个程序完全按照它所要做的去做,而不是你想要它做什么。