python random choices_关于python:’模块’对象没有属性’选择’-尝试使用random.choice...

有人可以告诉我我可能做错了什么。 当我运行python代码时,我一直收到此消息:

1

2

3

4

5

6

7import random

foo = ['a', 'b', 'c', 'd', 'e']

random_item = random.choice(foo)

print random_item

错误

AttributeError: 'module' object has no attribute 'choice'

你到底想做什么?

@mlwn他们想从列表foo中选择一个随机项,这不是很明显吗?

该代码非常适合我...您正在使用哪个版本的python? 和哪个操作系统?

很明显,它对您有用,但是可能的问题在答案中被解释了两次;)

我正在运行最新版本的pyCharm社区版

@AMHD:这不能解释mlwn提出的两个问题,因为PyCharm可以在至少3个不同的OS上使用多种Python版本。

另一种可能性是您可能具有较旧的numpy版本。 升级方式:sudo pip install numpy --upgrade

在黑暗中拍摄:您可能将脚本命名为random.py。不要为脚本命名与模块相同的名称。

我之所以这样说是因为random模块确实具有choice方法,因此导入可能捕获了错误的(读:不需要的)模块。

如果仍不能解决问题,请同时检查random.pyc文件。

它可能是在黑暗中拍摄,但仍然是黑暗中令人印象深刻的拍摄。 +1(也为记录起见,名称为math.py会导致相同的问题)

非常感谢,它为我工作。

对我来说,问题是我用

1random.choices

在python 3.6本地dev中

服务器是python3.5没有此方法...

使用" random.sample"

当我的生产服务器使用python3.5时,random.sample为我工作。无需更改代码。只需添加即可。当然,在执行此操作之前,请先测试您的代码。

听起来像是导入问题。同一目录中是否存在另一个名为random的模块?如果是这样(并且您使用的是python2,这在print random_item中很明显),那么它将导入它。尽量不要掩盖内置名称。

您可以使用以下代码对此进行测试:

1

2

3import random

print random.__file__

stdlib中的实际random.py模块位于path/to/python/lib/random.py中。如果您的在其他地方,这会告诉您它在哪里。

通常不是pathtopythonlibpythonX.Yrandom.py吗(除非他使用的是非常老的Python,否则我认为应该在2.3之前)?另外,我不认为2.7会为您提供.py文件,即使3.3。+的方式存在.pyc,也可能是random.pyc,但我可能记错了。但是除了那点挑剔的小问题之外,这是一个很好的答案。

我将文件保存在桌面上。

@abarnert我在Python3.3上进行了测试,并得到了"C:\Python33\lib

andom.py"

@AdamSmith:哦,是的,在Windows上它离开了pythonX.Y目录,因为顶级目录已经是PythonXY。

它给了我SyntaxError: Missing parentheses in call to print

@ Marine1此问题上的OP正在运行Python2,其中python是不是函数的语句,不需要括号。

我也通过这样命名方法random来得到此错误:

1

2

3

4

5

6

7

8

9

10

11import random

def random():

foo = ['a', 'b', 'c', 'd', 'e']

random_item = random.choice(foo)

print random_item

random()

这不是您的情况(为文件random.py命名),但对于其他人来说,搜索此错误并可能会犯此错误。

简而言之,Python在第一个文件中查找名为"随机"的文件,而没有找到choice属性。

99.99%的时间,这意味着您在路径/目录中已经有一个文件名为" random"。如果是这样,请重命名并重试。它应该工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值