这是我的密码:
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()它不仅没有返回列表的第一个值,而且也没有说它找到了我的话。我从GitHub获得了我的GitHub文件,第二个单词是"1080“。但是当我把它放进去的时候,它打印的是‘不是1080’,尽管它很明显。
发布于 2021-12-29 05:58:11
我想你要找的是:
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()发布于 2021-12-29 06:17:44
也许你想找出文本文件中的特定单词。
首先,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()将没有。
第二个问题是变量i没有得到适当的利用。i会自动递增,这要归功于range和for关键字(严格地说,它只是可迭代对象的下一个值,而不是增量),所以您不需要像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()https://stackoverflow.com/questions/70515494
复制相似问题