2017-02-02 39 views
-1

現在我要建立一個迴文檢查器。爲什麼我的循環不斷向字符串中添加字母,並且之後不會擦除它們?

我的想法是設置一個空白列表,然後詢問用戶一個字符串,將所有字母添加到字符串中,將其顛倒,然後通過「sum」與字母顛倒創建一個新字。之後,檢查兩個單詞是否相同。如果它們一樣,那就是賓果!

但不知何故,在第一次嘗試之後,「迴文」值不會被重置,而是會一直存儲舊字,並將新字添加到頂部(或之後),因此導致程序無法正確檢查。

這裏是我的代碼:

USER_WORD_LETTERS = [] 

finished = False 

while finished == False: 
    USER_WORD = input("Write a word: ") 
    palindrome = '' 
     if USER_WORD == 'q': 
      finished = True 
     else: 
      for i in USER_WORD: 
       USER_WORD_LETTERS.append(i) 
      USER_WORD_LETTERS.reverse() 
      for i in USER_WORD_LETTERS: 
       palindrome += i 
      if palindrome == USER_WORD: 
       print("Your word is a palindrome!") 
      else: 
       print("Your word is not a palindrome!") 

那麼,如何避免這種情況?是否有一個命令或函數來「擦除」一個字符串?

+0

你需要在你的while循環裏面定義'USER_WORD_LETTERS'。否則,它會保留所有條目。 – tmwilson26

+0

檢查一個單詞是否是迴文:'word =「hobbit」; word == word [:: - 1]' –

+0

是的!那樣做了。此外,Simeon Aleksov方法也適用,我現在知道刪除列表中的內容的有用功能。多謝你們! –

回答

0

您需要清除while循環內的列表。

USER_WORD_LETTERS = [] 

finished = False 

while finished == False: 
    USER_WORD_LETTERS.clear() 
    USER_WORD = input("Write a word: ") 
    palindrome = '' 
    if USER_WORD == 'q': 
     finished = True 
    else: 
     for i in USER_WORD: 
      USER_WORD_LETTERS.append(i) 
     USER_WORD_LETTERS.reverse() 
     for i in USER_WORD_LETTERS: 
      palindrome += i 
     if palindrome == USER_WORD: 
      print("Your word is a palindrome!") 
     else: 
      print("Your word is not a palindrome!") 
相關問題