我需要从列表中删除一个单词,然后显示单词 - 我可以做得很好。 但是当我删除第二个单词并附加前面删除的单词时,它找不到列表。
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个变量,一个被删除并添加,然后删除第二个变量 - 在此问题之后我可以自己完成。
答案 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
>>>
正如我过去告诉过的学生:一个程序完全按照它所要做的去做,而不是你想要它做什么。