我正在编写一个函数来帮助我们的测试部门将随机电话号码放入电话号码字段中。
这是我的代码:
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()
当我尝试运行此程序时,出现以下错误,并且我不确定我在这里做错了什么:
类型错误:“long”对象没有属性“__getitem__”
最佳答案
问题是 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)))
关于python - “long”对象没有属性 '__getitem__'错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21562196/