![](/img/trans.png)
[英]How do I run a function from an input before the code for the function has been read?
[英]How to make this code identify what has been input before?
對於家庭作業,我們必須編寫代碼來執行以下操作:
編寫程序以讀取多行輸入,直到輸入空行。 輸入的每一行將包含多個單詞。 如果您以前見過該詞,則應將其打印出來。 用戶完成輸入后,您的程序應打印出看到的重復單詞數。
到目前為止,我已經做到了:
lineList = []
wordList = []
count = 0
line = input("Words: ")
while line:
for x in line.split():
if x in lineList:
count += 1
wordList.append(x)
print(x)
lineList.append(line)
line = input("Words: ")
print('You repeated '+ str(count) +' word(s).')
我的代碼不會循環回到開頭,而只是停止。 沒有錯誤; 事情就停止了。 我該怎么做才能使其再次運行?如何使它運行?
首先,您有一個無限循環。 line
永遠不會更新任何值,因為它所隱藏的條件永遠不會為真。 lineList
在程序開始時不會包含x
,因此它將被卡在此處。
明顯的解決方法是將input
線再次移到幾個空格上。
while line:
for x in line.split():
if x in lineList:
count += 1
wordList.append(x)
print(x)
lineList.append(line)
line = input("Words: ")
...但是那也不完全是。
您的下一個問題是您的狀況不正確。 您不必關心是否在lineList
中出現一個單詞-實際上,這是一個多余的變量,只會在以后使您感到困惑。 您想對照wordList
進行檢查。
因此,這使得代碼lineList
了這樣(沒有lineList
):
line = input("Words: ")
while line:
for x in line.split():
if x in wordList:
count += 1
wordList.append(x)
print(x)
line = input("Words: ")
最后一個條件-僅當您之前已經看到過該單詞時才應回聲-我留給讀者練習。
問題不在於它停止,這是相反的:它使一個無限循環下去,不要求輸入,因為它只要求提供更多的輸入時,如果發現一個詞就是已經在linelist
。 將輸入請求縮進兩個級別,以便在處理整行后請求輸入。 您還可以添加到計數和打印字,如果它是在列表中,或將其添加到列表中,如果它是不是已經在列表中。 您還必須將單詞添加到wordList
,而不是lineList
。 實際上,您也不需要lineList
。
wordList = []
count = 0
line = input("Words: ")
while line:
for x in line.split():
if x in wordList:
count += 1
print(x)
else:
wordList.append(x)
line = input("Words: ")
print('You repeated', str(count), 'word(s).')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.