我给你发了一个问题,因为我对python有问题,我不明白为什么。 我创建了一个“mut1”函数来更改列表中的数字(概率为1/2),除了0和9:
def mut1 (m):
i=np.random.randint(1,3)
j=np.random.randint(1,3)
if i==1:
if 0<m<9:
if j==1:
m=m+1
elif j==2:
m=m-1
elif m==0:
if j==1:
m=1
if j==2:
m=9
elif m==9:
if j==1:
m=0
if j==2:
m=8
print m
mut1运行良好,例如,如果我创建一个列表P1:
>>>p1=np.array(range(8),int).reshape((4, 2))
之后,我在列表p1中的一个数字(这里是3)应用“mut1”
>>>mut1(p1[1,1])
如果我写:
>>> p1[1,1]=mut1(p1[1,1])
我有一个消息错误:
Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: long() argument must be a string or a number, not 'NoneType'
这是因为您必须使
mut1
返回numpy.int64
类型的结果。所以我试着修改了你的代码。所以你唯一需要改变的就是用
return np.int64(m)
替换print m
,然后就可以工作了!通过以下调试代码,您将很容易理解为什么会发生这种情况:
相关问题 更多 >
编程相关推荐