你有三個問題,我可以看到:
"cab "
中有一個空間,LETTERS
沒有空間。所以你永遠無法猜測空間
- 你不會重置
guess
。您只需繼續添加它
- 您在for循環中更改
LETTERS
,因此在while循環的第二次迭代中,它將完全爲空。
這是我怎麼會去這樣做你想要做的(以最小的修改)什麼:
_LETTERS = "abc"
correct = "cab"
guess = ""
while guess != correct:
LETTERS = _LETTERS[:]
guess = ""
for i in LETTERS:
position = random.randrange(len(LETTERS))
guess += LETTERS[position]
LETTERS = LETTERS[:position] + LETTERS[(position + 1):]
print(guess)
這是我會怎麼做隨機搜索(這是你想要什麼要做):
guess = "abc"
correct = "cab"
while guess != correct:
guess = list(guess)
random.shuffle(guess)
guess = ''.join(guess)
print(guess)
print(guess)
當然,有更好的技術來正確猜測"cab"
。如果你真的想嘗試一個詳盡的搜索,那麼你可以使用回溯DFS:
def DFS(letters, correct, sofar=None)
if sofar is None:
sofar = ''
if not letters:
if sofar == correct:
print("Yay! I found it")
else:
print("Oops! I found %s instead" %sofar)
else:
for i,char in enumerate(letters):
DFS(letters[:i]+letters[i+1:], correct, sofar+char)
你的意思是用空格結束'正確'值嗎? –
你是否想在失敗後重置你的猜測? – user2357112
OP也在for循環的每次迭代中改變'LETTERS'。需要在while循環中立即更改一個LETTERS的副本,而不是立即使用'myLetters = LETTERS [:]'(並重置'guess') – inspectorG4dget