歡迎來到bug狩獵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()調用引用變量話你沒有通過,以及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
>>>
正如我過去告訴過的學生:一個程序完全按照被告知要做的事情,而不是你想做的事情。
你明白,通過'try/except NameError'保護13行代碼(其中5個現在已被註釋)意味着你拼錯整個部分名稱的任何對象都將導致你的程序打印出「WARNING :因爲文件沒有找到......「等等,這不會是真的嗎? – 2015-03-13 17:57:33
什麼是「threeByThree」,爲什麼最後一行不是'threeByThree()'? – Jkdc 2015-03-13 17:57:33
此代碼無法運行,請提供*完整運行示例*。有一件事我可以指出:'threeByThree'是一個函數,但在最後一次打印之後,它被稱爲內建函數。 – alfasin 2015-03-13 17:57:38