[英]'module' object has no attribute 'choice' - trying to use random.choice
有人可以告诉我我可能做错了什么。 运行 python 代码时,我不断收到此消息:
import random
foo = ['a', 'b', 'c', 'd', 'e']
random_item = random.choice(foo)
print random_item
错误
AttributeError:“模块”对象没有属性“选择”
在黑暗中拍摄:您可能将脚本命名为random.py
。 不要将脚本命名为与模块相同的名称。
我这样说是因为random
模块确实有一个choice
方法,所以导入可能会抓错(读取:不需要的)模块。
对我来说问题是我用的
random.choices
在python 3.6本地开发但服务器是python3.5没有这个方法...
听起来像是一个导入问题。 在同一目录中是否有另一个名为random
模块? 如果是这样(如果您使用的是python2,这在print random_item
是显而易见的)那么它将导入它。 尽量不要隐藏内置名称。
您可以使用以下代码对此进行测试:
import random
print random.__file__
stdlib中的实际random.py
模块位于path/to/python/lib/random.py
。 如果你的是其他地方,这将告诉你它在哪里。
简而言之,Python查找它发现的名为“random”的第一个文件,并且没有找到choice属性。
99.99%的时间,这意味着你已经在路径/目录中有一个已经命名为“随机”的文件。 如果这是真的,重命名并重试。 它应该工作。
通过像这样random
命名方法我也得到了这个错误:
import random
def random():
foo = ['a', 'b', 'c', 'd', 'e']
random_item = random.choice(foo)
print random_item
random()
这不是你的情况(命名文件random.py
),但对于其他搜索此错误的人可能会犯这个错误。
如果您使用的 Python 版本低于 3.6,则必须使用 NumPy 库来实现加权随机数。 借助choice()方法,我们可以获得一维数组的随机样本,并返回numpy数组的随机样本。
from numpy.random import choice
sampleList = [100, 200, 300, 400, 500]
randomNumberList = choice(
sampleList, 5, p=[0.05, 0.1, 0.15, 0.20, 0.5])
print(randomNumberList)
来源: geeksforgeek
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.