面向'builtin_function_or_method'对象的初学者到python没有属性错误

时间:2016-08-22 13:11:59

标签: python artificial-intelligence

我正在尝试运行python代码,这似乎会导致错误。请帮帮我

def randomPlace(b,lis):
    pos = []
    for i in lis:
        if available(b,i):
            pos.append(i)

    if len.pos() != 0:
        return random.choice(pos)
    else:
        return None

b是一个包含10个字符的列表,lis是一个包含4个整数的列表 错误是:

  

追踪(最近一次呼叫最后一次):

     

文件“D:\ TestsPython \ TicTacToe.py”,第65行,in randomPlace       如果len.pos()!= 0:AttributeError:'builtin_function_or_method'对象没有属性'pos'

2 个答案:

答案 0 :(得分:1)

表达式len.pos()要求解释器找到len(标准内置函数),查找其pos属性(线索:它没有)那个看起来结果的电话。您确实希望将len函数应用于pos的值,因此应编码

if len(pos) != 0:

由于len始终返回整数结果,因此可以将其缩写为

if len(pos):
但是,请记住。空容器在Boolen上下文中估计False并且非空容器评估为True,通常将其缩短为

if pos:

答案 1 :(得分:1)

使用len(pos)

为了在python中找到列表的大小,语法为len(your_list)

在您的情况下,甚至不需要len功能。你可以这样做:

if pos:
    return random.choice(pos)
else:
    return None

因为如果您的列表中包含任何元素,if会将其视为True。如果是空列表,则会将其视为False