【发布时间】:2017-08-02 05:12:45
【问题描述】:
我正在尝试创建一个小游戏。
规则很简单:你给一个英文单词,计算机会一个字母一个字母地猜测这个单词。
问题是,我正试图让计算机以一种聪明的方式猜测字母。让我举一个简单的例子来说明我正在尝试构建的内容,以便您理解:
你把“猫”这个词交给电脑去猜。
我的 130K 单词列表被缩小到只有 3 个字符的单词,最多只有 805 个单词。从这个单词列表中,创建了一个字母表,只包含 25 个字母(不是全部 26 个),因为新的 805 个单词列表包含字母表中的所有字母,但“z”除外。所以我们现在有一个包含 25 个(不同)字母的列表。
-- 由于我无法在 SO 上上传任何内容,我们将在此示例中说庞大的 130K 单词列表是 10 个单词列表(变量名称“fullDice”)--
如果您尝试运行我的代码,请从此列表中选择一个词,否则 它不会工作
计算机现在从这 25 个字母列表中猜测一个随机字母。
如果字母不在单词中,他什么也不做,从列表中重新猜测一个字母。
但如果字母在单词中,事情就会变得更加复杂。假设计算机猜测字母“c”。我希望计算机将可能的单词列表重新缩小到只有第一个字符中有“c”的单词。这样,805 个单词的列表现在变成了一个只有 36 个单词的列表。因为只有 36 个单词是 3 个字符并且以“c”开头,所以创建了一个新字母表。新的字母表现在只有 14 个字母,让计算机更容易猜出下一个字母并正确判断。以此类推,直到他找到所有的字母。
我被困在第 5 部分。如果您尝试在下面运行我的代码,您会发现字典列表永远不会缩小。那是我的问题。
import time
from random import randint
fullDice = ["panda", "tiger", "cat", "elephant", "whale", "leopard", "gorilla", "fish", "snake", "eagle"]
askForWord = input("Please enter an english word: ")
while True:
updatedDice = []
for k in range (0, len(fullDice)):
if len(askForWord) == len(fullDice[k]):
updatedDice += [fullDice[k]]
alphabet = []
for i in range (0, len(updatedDice)):
for n in range (0, len(updatedDice[i])):
if updatedDice[i][n] not in alphabet:
alphabet += [updatedDice[i][n]]
guessRandomLetter = alphabet[randint(0, len(alphabet) - 1)]
print("I guess the letter: " + guessRandomLetter)
print("From this dice: " + str(len(updatedDice)))
print("From this amount of letters: " + str(len(alphabet)) + "\n")
time.sleep(0.75)
guessedWordUnderlined = "_" * len(askForWord)
if guessRandomLetter in askForWord:
for m in range(0, len(askForWord)):
if askForWord[m] == guessRandomLetter: # CHECKING IF THE GUESSED LETTER IS INSIDE THE WORD
guessedWordUnderlined = list(guessedWordUnderlined)
guessedWordUnderlined[m] = guessRandomLetter
guessedWordUnderlined = ''.join(map(str, guessedWordUnderlined))
if guessedWordUnderlined == askForWord: # CHECK IF USER HAS WON
print("YOU WON")
break
【问题讨论】:
-
你尝试过什么调试?
-
没有。我在 Python 方面没有真正的经验,你能解释一下我的观点以及如何去做吗?顺便说一句,代码没有产生错误信息,那太简单了,错误是逻辑错误。
-
尝试将
print语句放在显示您怀疑安装错误的不同变量的值周围。这称为“打印调试”,对于快速调试小型简单程序很有用。 -
哦,是的,当然,我试过了,它并没有真正帮助.. :(
-
那你一定没找对地方。如果输出错误,那么对输出有贡献的值之一肯定是错误的。
标签: python python-2.7 list python-3.x artificial-intelligence