希望有人能解释一下
我是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)
`
结果是:
list
对象没有find
方法。str
和list
对象都有index
方法,但只有str
有find
方法。对于字符串,这两种方法基本相似,只是当参数不在字符串中时,index
将抛出异常,find
将返回-1
相关问题 更多 >
编程相关推荐