'Strikes {} / 10'无限打印

时间:2017-05-19 03:45:13

标签: python

无限循环,我无法解决它。 Python的新手,请原谅任何新手的错误。还没有完全理解语法,但我只在这里工作了三天。我认为这是因为缩进但我不确定。提前谢谢!

    import random



    words = [ 
      'burger',
      'fettucine',
      'lasanga',
      'steak',
      'garlic bread'
      'watermelon',
      'tea',
      'pineapple'
      'coffee',
      'shrimp penne'
    ]

    while True:
      start = input("Press enter to start, or press Q to quit.")
      if start.lower() == 'q':
        break

      secret_word = random.choice(words)
      bad_guesses = []
      good_guesses = []

      while len(bad_guesses) < 10 and len(good_guesses) != len(list(secret_word)):
        for letter in secret_word:
          if letter in good_guesses:
            print(letter, end='')
          else:
              print('_', end='')

        print('')
        print('Strikes: {}/10'.format(len(bad_guesses))) # this is what loops
        print('')


      guess = input("Guess a letter: ").lower()
      if len(guess) != 1:
        print("You can only guess one letter!")

continue 
elif guess in bad_guesses or guess in good_guesses: 
print("You have already guessed that letter.") 
continue 
elif not guess.isalpha(): 
print("You can only guess letters.") continue

if guess in secret_word: 
good_guesses.append(guess) if len(good_guesses) == len(list(secret_word)): print("You win! The word was {}.".format(secret_word)) 

break

else: bad_guesses.append(guess)

else: print("You didn't get it. The word was{}.".format(secret_word))

1 个答案:

答案 0 :(得分:0)

下面修正了代码。

我发现了一些问题:

  1. 当您共享代码时,某些缩进和换行似乎已丢失。
  2. 你无法猜测空间,所以解决含有空格的谜题是不可能的(“蒜蓉面包”和“虾通心粉”)。
  3. 'garlic bread''pineapple'之后缺少逗号。
  4. 要求新猜测的代码需要在内部while循环中。
  5. 有一个else没有if ...我摆脱了else并将该代码置于while循环之外。现在游戏似乎工作正常。
  6. 这里有完整的固定代码:

    import random
    
    words = [ 
        'burger',
        'fettucine',
        'lasanga',
        'steak',
        # commented out since you can't guess spaces
        # 'garlic bread',
        'watermelon',
        'tea',
        'pineapple',
        'coffee',
        # commented out since you can't guess spaces
        # 'shrimp penne',
    ]
    
    while True:
        start = input("Press enter to start, or press Q to quit.")
        if start.lower() == 'q':
            break
    
        secret_word = random.choice(words)
        bad_guesses = []
        good_guesses = []
    
        while len(bad_guesses) < 10 and len(good_guesses) != len(list(secret_word)):
            for letter in secret_word:
                if letter in good_guesses:
                    print(letter, end='')
                else:
                        print('_', end='')
    
            print('')
            print('Strikes: {}/10'.format(len(bad_guesses))) # this is what loops
            print('')
    
            guess = input("Guess a letter: ").lower()
            if len(guess) != 1:
                print("You can only guess one letter!")
                continue
            elif guess in bad_guesses or guess in good_guesses:
                print("You have already guessed that letter.")
                continue
            elif not guess.isalpha():
                print("You can only guess letters.")
                continue
    
            if guess in secret_word:
                good_guesses.append(guess)
                if len(good_guesses) == len(list(secret_word)):
                    print("You win! The word was {}.".format(secret_word))
                    break
            else:
                bad_guesses.append(guess)
    
        print("You didn't get it. The word was {}.".format(secret_word))