擅长:python、mysql、java
<p>如文档所述,<a href="https://docs.python.org/3/library/stdtypes.html#str.isdigit" rel="nofollow">here</a><code>isdigit()</code>是一个字符串方法。不能为整数调用此方法。</p>
<p>这条线</p>
<pre><code>cpi = eval(input("Enter the CPI for July 2015: "))
</code></pre>
<p><code>evaluates</code>用户输入整数。</p>
<pre><code>>>> x = eval(input("something: "))
something: 34
>>> type(x)
<class 'int'>
>>> x.isdigit()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'isdigit'
</code></pre>
<p>但如果删除<code>eval</code>方法(最好这样做)</p>
<pre><code>>>> x = input("something: ")
something: 54
>>> type(x)
<class 'str'>
>>> x.isdigit()
True
</code></pre>
<p>一切都会好的。</p>
<p>顺便说一下,使用eval而不使用sanitizin用户输入可能会导致问题</p>
<p>想想这个。</p>
<pre><code>>>> x = eval(input("something: "))
something: __import__('os').listdir()
>>> x
['az.php', 'so', 'form.php', '.htaccess', 'action.php' ...
</code></pre>