擅长:python、mysql、java
<p>问题是<code>phonenumber</code>是一个<code>int</code>,而不是一个<code>str</code>。<code>__getitem__</code>是<code>[:3]</code>符号。最简单的解决方案:</p>
<pre><code>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
</code></pre>
<p>给了我:</p>
<pre><code>>>> phonenumbergenerator()
415-867-5309
</code></pre>
<hr/>
<p>解决此类异常的一个好方法是将工作分成多行,这样您就可以更好地了解异常发生的位置。例如:</p>
<pre><code>area_code = phonenumber[:3]
prefix = phonenumber[3:6]
suffix = phonenumber[6:]
phonenumberformatted = (str("%s-%s-%s" % (area_code, prefix, suffix)))
</code></pre>