gpt4 book ai didi

python - 在 Python 中循环工作时无法变得简单

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:13 24 4
gpt4 key购买 nike

LETTERS = "abc"
correct = "cab "
guess = ""

while guess != correct:
for i in LETTERS:
position = random.randrange(len(LETTERS))
guess += LETTERS[position]
LETTERS = LETTERS[:position] + LETTERS[(position + 1):]
print(guess)

我是 Python 的新手,我想制作这个简单的程序:

  • 将字母“abc”混在一起,随机创建一个新的三字母单词。
  • 打印那堆东西
  • 继续执行此循环,直到计算机困惑“cab”。
  • 然后停下来。

我想出了这段代码,它给了我一个无限循环。我不明白为什么要这样做。我敢肯定这很容易,但我看不到。需要一些帮助!谢谢!

最佳答案

我看到了三个问题:

  1. "cab "里面有空格,LETTERS里面没有空格。所以你永远猜不出空格
  2. 您没有重置猜测。您只需不断添加即可
  3. 您在 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)

关于python - 在 Python 中循环工作时无法变得简单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21317292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com