我从以下函数调用该函数是唯一的,并收到上述错误消息。
isWordGuessed(secretWord, lettersGuessed)
55 '''
56 letters = 0
---> 57 a = unique(secretWord)
58 for char in a:
59 if char in lettersGuessed:
NameError: global name 'unique' is not defined
当我在Python中调用unique时,它运行正常。 EG
secretWord
Out[85]: 'revenging'
unique(secretWord)
Out[86]:
array(['e', 'g', 'i', 'n', 'r', 'v'],
dtype='|S1')
为什么在功能中无法识别? (如果这是一个新手错误,请道歉。)
答案 0 :(得分:4)
unique
不内置;这是numpy.unique
。
{0}在您的IPython控制台中工作的唯一原因是您已经完成的事情 - 例如在pylab模式下运行IPython - 已将所有unique
导入范围,这是一个坏主意。
numpy
这样做会取代In [1]: unique(list("abcb"))
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-83e4d9fe063f> in <module>()
----> 1 unique(list("abcb"))
NameError: name 'unique' is not defined
In [2]: from numpy import * # don't do this
In [3]: unique(list("abcb"))
Out[3]:
array(['a', 'b', 'c'],
dtype='|S1')
和all
以及许多其他功能,这些功能的版本与标准版本的工作方式相同,甚至可能会产生相反的结果,所以应该不惜一切代价避免。
答案 1 :(得分:0)
如果你想让内置函数获得唯一的字母,你应该使用set,你的代码中没有任何内容表明需要一个numpy数组:
In [3]: secretWord = 'revenging'
In [4]: set(secretWord)
Out[4]: {'e', 'g', 'i', 'n', 'r', 'v'}