我正在編寫一個程序,需要一些字母並檢查哪些單詞可以與這些字母拼寫。這個想法是,它在玩拼字遊戲時很有用。爲了測試這個程序,我使用了一個較小的單詞選擇,以便for循環不會永遠持續下去。爲什麼從一個列表中刪除一個元素將它從另一個列表中刪除
One
Two
Three
Four
Five
到目前爲止,該計劃的全部工作正常,檢查時,如果一個字可以與輸入的字母拼寫除外。通過在for循環中的不同點處打印某些變量進行了一些測試之後,我發現錯誤是由於列表letters
從characters
中刪除了字符而導致的,即使我不是從letters
中刪除任何內容。這令我感到驚訝,因爲即使我已經使用Python一段時間了,這從來都不是問題。這裏是我的代碼:
words = []
file = open('test.txt', 'r')
for line in file.readlines():
words.append(line.strip('\n'))
letters = ''
while True:
letters = input('Enter your available letters: ')
if letters.isalpha() and len(letters) == 7:
letters = list(letters.lower())
break
else:
print('Please enter 7 letters')
continue
allowed = []
for i in words:
characters = letters
check = 0
for j in range(len(i)):
if i[j] in characters:
characters.remove(i[j])
check += 1
if j == check - 1 == len(i) - 1:
allowed.append(i)
print(allowed)
當我使用oneerht
作爲輸入,單詞one
和three
應放置在允許列表中,但只有one
出現在列表中。這是因爲列表letters
正在被清空以及列表characters
不應該發生。那麼爲什麼letters
被清空了,我能做些什麼來防止這種情況發生?
我知道別人可能已經提出了類似的問題,但是我找不到答案,而且我不知道要搜索什麼。任何幫助將不勝感激,謝謝!
'字母'和'字符'是相同的列表。 – user2357112