你有三个问题,我可以看到:
"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