簡體   English   中英

如何使此代碼識別之前輸入的內容?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM