<blockquote>
<p>I'm trying to make a function that, given input from the User, can map input to a list of strings in a text file, and return some integer corresponding to the string in the file. Essentially, I check if what the user input is in the file and return the index of the matching string in the file</p>
</blockquote>
<pre><code>def get_line_number(input):
"""Finds the number of the first line in which `input` occurs.
If input isn't found, returns -1.
"""
with open('words.txt') as f:
for i, line in enumerate(f):
if input in line:
return i
return -1
</code></pre>
<p>此函数将满足您描述中的规范,并假设您关心的字符串位于单独的行中。值得注意的是:</p>
<ol>
<li><p>Python中的文件对象在其内容行上充当迭代器。如果您只需要检查每一行,就不必将行读入列表。</p></li>
<li><p><code>enumerate</code>函数接受一个迭代器并返回一个生成器,该生成器生成一个类似<code>(index, element)</code>的元组,其中<code>element</code>是迭代器中的一个元素,index是它在迭代器中的位置。你知道吗</p>
<ul>
<li>iterator一词是指任何对象,它是可以在for循环中访问的一系列内容。你知道吗</li>
<li>术语生成器是指生成元素以“动态”遍历的对象。在这种情况下,这意味着您可以逐个访问文件的每一行,而无需将整个文件加载到计算机内存中。你知道吗</li>
</ul></li>
<li><p>此函数以标准Pythonic样式编写,带有docstring、变量名的适当大小写和描述性名称。</p></li>
</ol>