使用find()方法时出现AttributeError

2024-10-01 09:28:07 发布

您现在位置:Python中文网/ 问答频道 /正文

希望有人能解释一下

我是Python新手,在一个作业中偶然发现了这个问题(通过在线课程学习):

创建了卡片组,需要移除几张卡片——我认为应该在卡片组[]中.find(str),返回它的索引(I)和.remove(I)。这样我就可以验证代码是如何工作的,因为我还在学习

使用.find()方法时,会出现以下错误:
AttributeError: 'list' object has no attribute 'find'

但是在index方法上没有这样的错误:这里有两种方法

`

def indxcard(self,fcard):
    '''

    :return index of -1 if not found

    '''
    retval=-1

    try:
        retval=self.Carddeck.index(fcard)

    except:
        # value not found
        retval = -1

    # print only for debugging
    print('in Indxcard', retval,fcard)
    return retval

def findcard(self, fcard):
    '''
    :return index of card -1 if not found

    '''
    retval = self.Carddeck.find(fcard)  # Causes an attribute error...
    print('in find card', retval, fcard)
    return retval

。。。呼叫码

print(gamedeck)
print('-----------')
for killzerocard in Cards.Suits:
    # gamedeck.killcard('0'+killzerocard[1:])  # Uno deck only as 1  Zero (0) card for each of the colors

    try:
        gamedeck.findcard('0'+killzerocard)
    except:
        print('error thrown by find')

    gamedeck.indxcard('0'+killzerocard)

print('-----------')

# gamedeck.shuffle()
print(gamedeck)

`

结果是:

enter image description here


Tags: of方法inselfforindexreturnnot
1条回答
网友
1楼 · 发布于 2024-10-01 09:28:07

list对象没有find方法。strlist对象都有index方法,但只有strfind方法。对于字符串,这两种方法基本相似,只是当参数不在字符串中时,index将抛出异常,find将返回-1

相关问题 更多 >