<p><code>generateRandomNumber</code>函数在<code>randomNumber = generateRandomNumber(myfile)</code>语句中递归调用自身,如果输入0,则跳过该语句。你知道吗</p>
<p>另外,您的<code>main</code>包含一个未使用的<code>with open</code>,<code>myfile.close</code>语句既不执行也不需要。试着缩短它。你知道吗</p>
<pre><code>def main():
myfile = str(input("Enter file name here "))
generateRandomNumber(myfile)
</code></pre>
<p>通过使用<a href="https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files" rel="nofollow noreferrer">with open</a>,还可以显著简化<code>generateRandomNumber</code>和<code>displayNumber</code>函数。你知道吗</p>
<blockquote>
<p>It is good practice to use the <em>with</em> keyword when dealing with file
objects. The advantage is that the file is properly closed after its
suite finishes, even if an exception is raised at some point. Using
<em>with</em> is also much shorter than writing equivalent try-finally blocks</p>
</blockquote>
<p>最后,<code>displayNumber</code>包含一个无限循环,请尝试将第二个<code>line = myfile.readline()</code>缩进一步,或者重写函数以立即读取完整文件并使用一个简单的<code>for</code>循环。你知道吗</p>
<pre><code>with open(myfile) as myfilehandle:
lines = myfilehandle.readlines()
for line in lines:
# do things
</code></pre>