python 中的猜字游戏

word guessing game in python

我正在尝试创建一个猜谜游戏,先提示用户输入单词,然后再提示猜字母。我的代码遇到了问题——如果字母 guess 不在单词中,我的预期输出是“guess 'not found'”,但无论猜测如何,输出仍然是“guess 'found'”。 这是我的原始代码:

word = input('Enter a guess word: ')
while True:
        guess = input('Enter a guess letter: ')
        for word in guess:
                if guess in word:
                        print('\t>', guess, 'found')
                else:
                        print('\t>', guess, 'not found')

例如,如果用户输入 'hello' 作为单词,输入 'p' 作为猜测,它仍然会打印“> p found”。 后来我就瞎混了,有用吗?首先,当我尝试将它应用到我的原始代码时,它不起作用(问题仍然存在,只是输出不断返回 'not found' 而不是)。其次,我不明白这最终是如何工作的...... 这是工作(?)代码:

for x in 'word':
        pass
for word in x:
        if 'p' in word:
                print(':)')
        else:
                print(':(')

尝试应用到原始代码:

word = input('Enter a guess word: ')
while True:
        guess = input('Enter a guess letter: ')
        for x in word:
                pass
        for word in x:
                if guess in word:
                        print('\t>', guess, 'found')
                else:
                        print('\t>', guess, 'not found')

您正在用以下行覆盖单词变量的值:

 for word in guess:

更改变量名

命名变量时必须小心。您首先将 word 声明为目标,然后再次使用 word 来表示 guess.

的每个字符

假设我猜的词是 test 我猜是 a.

由于您写了 for word in guessword 现在是 a。这就是为什么 if word in guess 总是 return True,因为 a 确实在 a.

修复方法如下:

word = input('Enter a guess word: ')
while True:
        guess = input('Enter a guess letter: ')
        for x in guess: # or any other variable name besides "word"
                if x in word:
                        print('\t>', guess, 'found')
                else:
                        print('\t>', guess, 'not found')

当你遍历循环时,你基本上是用字母覆盖变量 word 。此外,您需要遍历 word 而不是 guess:

word = input('Enter a guess word: ')
while True:
        guess = input('Enter a guess letter: ')
        for words in word:
                
                if guess==words:
                        print('\t>', guess, 'found')
                        break
                else:
                        print('\t>', guess, 'not found')

在您的代码中,您首先将 word 定义为变量,然后将输入存储在其中。

word = input('Enter a guess word: ')

然后,您尝试在那里执行 while loop,您在 guess:

中输入字母
guess = input('Enter a guess letter: ')
    

问题从下一行开始,在这个循环中

for word in guess:
        if guess in word:
                print('\t>', guess, 'found')
        else:
                print('\t>', guess, 'not found')

循环中,迭代条件为for word in guess,将word视为循环内的局部项,每次迭代包含guess的每个元素。

在下一行中,if 条件检查 if guess in word,这意味着您正在检查 guess 是否在 word 中,但是这个 word 是除了 for loop 中引入的 word。因此,从技术上讲,您已经用猜测输入中的字母覆盖了开头介绍的 actual word

由于输入的guessguess中的word相同,所以p满足这个条件。因此,您得到的结果是 p found

但也应该改一下,从guess中取出每个letter,检查letter是否在word中。只需将条件 for word in guess 中的变量名称 word 更改为类似 for letter in guess 的名称。同时将 if guess in word 更改为 if letter in word,而你 运行 是一个循环 for letter in guess。它会正常工作:

word = input('Enter a guess word: ')
while True:
    guess = input('Enter a guess letter: ')
    for letter in guess:
            if letter in word:
                    print('\t>', guess, 'found')
            else:
                    print('\t>', guess, 'not found')