word 不等于 wordlist.readline() 即使它是
word Isn't equal to wordlist.readline() even though it is
这是我的代码:
wordlist = open('words.txt')
word = input()
i = 0
def loop():
for i in range(466549):
if wordlist.readline().strip() == word:
print(f'found in {i}')
return
else:
print(f"not {wordlist.readline()}")
i = i + 1
loop()
它不仅 return 不是列表的第一个值,而且它也没有说它找到了我的话。我从 GitHub 得到了我的 words.txt 文件,第二个词是“1080”。但是当我把它放进去时,它会打印 'not 1080' 即使它显然是
我想你要找的是:
word = input("enter word: ").strip()
def loop():
with open("words.txt") as f:
wordList = f.readlines()
for i,line in enumerate(wordList):
line = line.strip()
if line == word:
print(f"found in line {i}")
return
else:
print(f"did not find in {line}")
loop()
或者如果你想坚持只使用 readline
:
word = input("enter word: ").strip()
wordList = open("words.txt")
def loop():
for i in range(466549):
line = wordList.readline().strip()
if line == word:
print(f"found in line {i}")
return
else:
print(f"did not find in {line}")
loop()
wordList.close()
也许您想查找文本文件中的特定单词。
首先,wordlist.readline()
实际上从文件中读取了一行,这意味着它 不可重现。所以,print(f"not {wordlist.readline()}")
没有像您预期的那样工作。
例如,假设 words.txt
如下所示。
hello
1080
world
当您在循环中读取带有 if wordlist.readline() ...
的第一行时,该值为“hello”,而这不是 1080
,因此 else
语句运行。在这里,你读到第二行 print(f"not {wordlist.readline()}")
,即 1080
,因此将打印 not 1080
。
最后,if wordlist.readline() ...
将从文件中读取 world
,这也不是 1080
,下一个 readline()
将是 None。
第二个问题是变量i
没有被正确使用。由于 range
和 for
关键字,i
自动递增(严格来说,它只是可迭代对象的下一个值,而不是递增),所以你不需要像 i = 0
或i = i + 1
第三点是从第一个问题中推导出来的,None.strip()
是不可能的,所以会抛出异常。
还有很多话要说,但我只是给你看我的例子,你可以和你的比较
input_wordlist = open('words.txt')
input_word = input()
def loop(word, wordlist):
for index, line in enumerate(wordlist.readlines()):
if line.strip() == word:
# or if you wanna know whether word is in line
# if word in line:
print(f"found in {index}")
return
else:
print(f"not in {line}")
loop(input_word, input_wordlist)
input_wordlist.close()
这是我的代码:
wordlist = open('words.txt')
word = input()
i = 0
def loop():
for i in range(466549):
if wordlist.readline().strip() == word:
print(f'found in {i}')
return
else:
print(f"not {wordlist.readline()}")
i = i + 1
loop()
它不仅 return 不是列表的第一个值,而且它也没有说它找到了我的话。我从 GitHub 得到了我的 words.txt 文件,第二个词是“1080”。但是当我把它放进去时,它会打印 'not 1080' 即使它显然是
我想你要找的是:
word = input("enter word: ").strip()
def loop():
with open("words.txt") as f:
wordList = f.readlines()
for i,line in enumerate(wordList):
line = line.strip()
if line == word:
print(f"found in line {i}")
return
else:
print(f"did not find in {line}")
loop()
或者如果你想坚持只使用 readline
:
word = input("enter word: ").strip()
wordList = open("words.txt")
def loop():
for i in range(466549):
line = wordList.readline().strip()
if line == word:
print(f"found in line {i}")
return
else:
print(f"did not find in {line}")
loop()
wordList.close()
也许您想查找文本文件中的特定单词。
首先,wordlist.readline()
实际上从文件中读取了一行,这意味着它 不可重现。所以,print(f"not {wordlist.readline()}")
没有像您预期的那样工作。
例如,假设 words.txt
如下所示。
hello
1080
world
当您在循环中读取带有 if wordlist.readline() ...
的第一行时,该值为“hello”,而这不是 1080
,因此 else
语句运行。在这里,你读到第二行 print(f"not {wordlist.readline()}")
,即 1080
,因此将打印 not 1080
。
最后,if wordlist.readline() ...
将从文件中读取 world
,这也不是 1080
,下一个 readline()
将是 None。
第二个问题是变量i
没有被正确使用。由于 range
和 for
关键字,i
自动递增(严格来说,它只是可迭代对象的下一个值,而不是递增),所以你不需要像 i = 0
或i = i + 1
第三点是从第一个问题中推导出来的,None.strip()
是不可能的,所以会抛出异常。
还有很多话要说,但我只是给你看我的例子,你可以和你的比较
input_wordlist = open('words.txt')
input_word = input()
def loop(word, wordlist):
for index, line in enumerate(wordlist.readlines()):
if line.strip() == word:
# or if you wanna know whether word is in line
# if word in line:
print(f"found in {index}")
return
else:
print(f"not in {line}")
loop(input_word, input_wordlist)
input_wordlist.close()