擅长:python、mysql、java
<p>您的<code>randir()</code>函数不返回任何内容:</p>
<pre><code>def randir():
n=float(random.randint(0,8))
ang=(n*math.pi)/4
</code></pre>
<p>因此<code>None</code>被返回:</p>
<pre><code>>>> import random, math
>>> def randir():
... n=float(random.randint(0,8))
... ang=(n*math.pi)/4
...
>>> randir()
>>> randir() is None
True
</code></pre>
<p>然后将该<code>None</code>值传递给<code>math.cos()</code>:</p>
<pre><code>math.cos(randang)
</code></pre>
<p>从而引发您的错误:</p>
<pre><code>>>> math.cos(None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: a float is required
</code></pre>
<p>如果要修复此问题,必须向函数中添加<code>return</code>语句:</p>
<pre><code>def randir():
n=float(random.randint(0,8))
ang=(n*math.pi)/4
return ang
</code></pre>