擅长:python、mysql、java
<p>首先,您应该注意,您的<code>file.readlines()</code>实际上在每一行的末尾提供了<code>\n</code>,在您的代码中,这两个值都将在<code>else</code>块中处理,因此no:</p>
<pre><code>>>> with open("votes.txt","r") as f:
... print(f.readlines())
...
['Aberdeenshire\n',
'yyynnnnynynyannnynynanynaanyna\n',
'Midlothian\n',
'nnnnynyynyanyaanynyanynnnanyna\n',
'Berwickshire\n',
'nnnnnnnnnnnnnnnnnnnnynnnnnynnnnny\n']
</code></pre>
<p>所以这也许可以解释为什么你找不到好的数字</p>
<p>现在,为了提高代码的效率,我们可以研究<code>str</code>的<a href="https://docs.python.org/3.6/library/stdtypes.html#str.count" rel="nofollow noreferrer">^{<cd4>}</a>方法,也可以用<code>split</code>而不是<code>readlines</code>除去那些<code>\n</code>:</p>
<pre><code>with open("votes.txt","r") as f:
full = f.read()
lines = full.split("\n")
votes = 0
a = 0
y = 0
n = 0
for m in range(1,len(lines),2):
line = lines[m]
votes += len(line) # I'm counting n's as well here
a += line.count("a")
y += line.count("y")
n += line.count("n")
print("Overall, there were " + str(100 * y / (y + n)) + "% yes votes.")
</code></pre>
<p>希望有帮助</p>