zoukankan      html  css  js  c++  java
  • 集体编程智慧(发现的一些代码问题)

    如果你在看集体编程智慧这本书,第五章的遗传算法时候,出现这样的错误:TypeError: object of type 'NoneType' has no len()。。

    请注意下面这个函数:

     

      def mutate(vec):
        i=random.randint(0,len(domain)-1)
        if random.random()<0.5 and vec[i]>domain[i][0]:
          return vec[0:i]+[vec[i]-step]+vec[i+1:] 
        elif vec[i]<domain[i][1]:
          return vec[0:i]+[vec[i]+step]+vec[i+1:]

     

    若输入vec同时不满足两个if的条件,该函数就不会有return 语句。因此该函数就会默认返回None.所以就出现了上面的错误。

     

    修改方法如下,在函数最后一句加上return vec,或者其他方法,总之要返回一个列表

     

      def mutate(vec):
        i=random.randint(0,len(domain)-1)
        if random.random()<0.5 and vec[i]>domain[i][0]:
          return vec[0:i]+[vec[i]-step]+vec[i+1:] 
        elif vec[i]<domain[i][1]:
          return vec[0:i]+[vec[i]+step]+vec[i+1:]
        return vec

    第六章,如果你的一些概率计算为0,可能是int除法的一些问题,即整数2/3=0,在相应变量前面乘以1。0就可以了。

  • 相关阅读:
    unity c# 获取系统时间
    如果你想让继承MonoBehaviour的类变成Singleten
    关于程序员
    开始养成记录的习惯吧
    关于结构体的赋值问题
    数学中的集合,群,环,域
    励志
    [编程题] 进制均值
    javaEE 入门
    jsp内置对象2
  • 原文地址:https://www.cnblogs.com/Dzhouqi/p/3203766.html
Copyright © 2011-2022 走看看