Python ';长';对象没有属性'__获取项目';错误

Python ';长';对象没有属性'__获取项目';错误,python,Python,我正在编写一个函数,帮助我们的测试部门将随机电话号码输入电话号码字段 这是我的密码: from random import randrange def phonenumbergenerator(): phonenumber = randrange(1111111111, 9999999999) phonenumberformatted = (str("%s-%s-%s" % (phonenumber[:3], phonenumber[3:6], phonenumber[6:])

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

这是我的密码:

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”对象没有属性“\uuu getitem\uuuuu”
问题是
phonenumber
是一个
int
,而不是
str
\uu getitem\uu
[: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

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

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

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

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