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 guess
,word
现在是 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
。
由于输入的guess
和guess
中的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')
我正在尝试创建一个猜谜游戏,先提示用户输入单词,然后再提示猜字母。我的代码遇到了问题——如果字母 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 guess
,word
现在是 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
。
由于输入的guess
和guess
中的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')