python - “long”对象没有属性 '__getitem__'错误

标签 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()

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

类型错误:“long”对象没有属性“__getitem__”

最佳答案

问题是 phonenumberint,而不是 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/

相关文章:

python - 使用 DFS 检测无向图中的循环

python - wxpython:是否可以在单击停止按钮时停止正在运行的程序?

python - 侧面的 sns.jointplot "kde"样式的颜色条

python - 删除具有一定百分比的 0's pandas 的列和行

python - 使用 commit=False 调用 save() 时未调用 Django 的 FileField "upload_to"方法

python - 将数字与字符串分开并使用 pandas 添加数字

python - TensorFlow 动态 RNN 未训练

python - 一组python的幂集和笛卡尔积

Python-如何在字典中查找多个值/键的平均值

python - Tensorflow 中的多标签分类器