いくつかの文字を取り、その文字で綴ることができる単語を確認するプログラムを作成しています。アイデアは、スクラブルを演奏するときに役立つだろうということです。プログラムをテストするために、私はforループが永遠に取らないように、より小さな単語の選択を使用しています。1つのリストから要素を削除すると、別の要素から削除されるのはなぜですか?
One
Two
Three
Four
Five
入力された文字で単語のスペルができるかどうかを確認する以外は、プログラムの全体が正しく機能します。特定の変数をforループの異なるポイントに出力してテストを行った後、エラーがリストによって引き起こされていることがわかりましたcharacters
から文字が削除されると、letters
の文字が削除されていますletters
から何かを削除してください。これは私がPythonをしばらく使用していたとしても、今まで問題となったことはなかったように、私を驚かせました。ここに私のコードは次のとおりです。私は、入力としてoneerht
を使用する場合
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)
、言葉one
とthree
は許可リストに配置する必要がありますが、唯一のone
がリストに表示されます。これはリストletters
が空になっているだけでなく、リストcharacters
が発生してはならないようなものです。だからletters
が空になっているのですが、これが起こらないように私ができることは何ですか?
他の人がおそらく既に同様の質問をしている可能性があることを知っていますが、探しているときに回答が見つからず、何を検索するのかわかりません。どんな助けもありがとう、ありがとう!
'letters'と' characters'は同じリストです。 – user2357112