“long”对象没有属性“getitem”

2024-09-22 16:26:21 发布

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

我正在编写一个函数来帮助我们的测试部门将随机电话号码放入电话号码字段。

这是我的代码:

from random import randrange

def phonenumbergenerator():
    phonenumber = randrange(1111111111, 9999999999)
    phonenumberformatted = (str("%s-%s-%s" % (phonenumber[:3], phonenumber[3:6], phonenumber[6:])))
    return phonenumberformatted

print phonenumbergenerator()

当我试图运行此程序时,出现以下错误,我不确定我在这里做了什么错误:

TypeError: 'long' object has no attribute '__getitem__'


Tags: 函数代码fromimportreturndef错误电话号码
2条回答

您正在使用一个数字phonenumber,就好像它是一个字符串一样。试用:

phonestr = str(phonenumber)
phonestr[:3], ...

问题是phonenumber是一个int,而不是一个str__getitem__[:3]符号。最简单的解决方案:

from random import randrange

def phonenumbergenerator():
    phonenumber = str(randrange(1111111111, 9999999999)) # <-- make it a string
    phonenumberformatted = (str("%s-%s-%s" % (phonenumber[:3], phonenumber[3:6], phonenumber[6:])))
    return phonenumberformatted

给了我:

>>> phonenumbergenerator()
415-867-5309

解决此类异常的一个好方法是将工作分成多行,这样您就可以更好地了解异常发生的位置。例如:

area_code = phonenumber[:3]
prefix    = phonenumber[3:6]
suffix    = phonenumber[6:]
phonenumberformatted = (str("%s-%s-%s" % (area_code, prefix, suffix)))

相关问题 更多 >