【问题标题】:word guessing game in pythonpython中的猜词游戏
【发布时间】:2021-07-22 06:45:37
【问题描述】:

我正在尝试创建一个猜谜游戏,提示用户输入单词,然后提示猜字母。我的代码有问题 - 如果字母猜测不在单词中,我的预期输出是“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”。 后来,我只是胡闹,成功了?首先,当我尝试将其应用于我的原始代码时,它不起作用(问题仍然存在,只是输出不断返回“未找到”)。其次,我不明白这最终是如何工作的...... 这是工作(?)代码:

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')

【问题讨论】:

    标签: python while-loop


    【解决方案1】:

    您正在使用以下行覆盖 word 变量的值:

     for word in guess:
    

    更改变量名

    【讨论】:

      【解决方案2】:

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

      假设我的猜测词是 test 而我的猜测是 a

      自从你写了for word in guessword 现在是a。这就是为什么if word in guess 总是会返回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')
      

      【讨论】:

        【解决方案3】:

        当你遍历循环时,你基本上用字母写了变量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')
        

        【讨论】:

          【解决方案4】:

          在您的代码中,您首先将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 只不过是@987654335 中引入的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')
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-06-15
            • 2013-03-27
            • 2013-10-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多