這是我的代碼:
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 得到我的 words.txt 檔案,第二個字是“1080”。但是當我把它放進去時,它會列印“不是 1080”,即使它顯然是。
uj5u.com熱心網友回復:
我認為你正在尋找的是:
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()
uj5u.com熱心網友回復:
也許您想在文本檔案中查找特定單詞。
首先,wordlist.readline()實際上從檔案中讀取一行,這意味著它是不可重現的。所以,print(f"not {wordlist.readline()}")沒有像你預期的那樣作業。
例如,假設words.txt如下所示。
hello
1080
world
當您使用if wordlist.readline() ... 內部回圈讀取第一行時,該值是“hello”,而這不是1080,因此else陳述句運行。在這里,您讀取一行print(f"not {wordlist.readline()}")as second is 1080,因此not 1080將被列印。
最后,將從檔案中if wordlist.readline() ... 讀取world,這也不是1080,接下來readline()是無。
次要問題是變數i沒有被正確利用。i由于rangeandfor關鍵字自動遞增(嚴格來說,它只是來自可迭代物件的下一個值,而不是遞增),所以你不需要像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://www.uj5u.com/gongcheng/398291.html
