【问题标题】:Python while loop to test two true/false elementsPython while循环测试两个真/假元素
【发布时间】:2012-06-29 02:36:26
【问题描述】:

我正在为我的孩子们制作一个单词拼字游戏。我希望他们能够在猜测中输入“提示”以获得提示。第一个“提示”应该给出单词的第一个和最后一个字母。下次他们输入“提示”时,应提供单词的前两个和后两个字母.. 等等。

我在他们第一次输入“提示”时让它工作,但随后 while 循环被破坏,他们无法猜错或再次输入“提示”。

我知道问题出在这一行:

while guess != correct and guess != 'hint':

我似乎无法修复它,以便用户可以多次输入提示。

这是我的代码:

# The computer picks a random word, and then "jumbles" it
# the player has to guess the original word

import random

replay = "y"
while replay == "y":

    print("\n"* 100)
    word = input("Choose a word for your opponent to de-code: ")
    print("\n"* 100)
    # provide a hint if the user wants one
    hint_count = 1

    # create a variable to use later to see if the guess is correct
    correct = word

    # create a empty jumble word
    jumble = ""
    # while the chosen word has letters in it
    while word:
        position = random.randrange(len(word))
    #   add the random letter to the jumble word
        jumble += word[position]
    #   extract a random letter from the chosen word
        word = word[:position] + word[position +1:]

    # start the game
    print(
    """

                Welcome to the Word Jumble!

        Unscramble the letters to make a word.
    (Press the enter key at the prompt to quit.)
    """
    )
    score = 10
    print("The jumble is: ",jumble)

    guess = input("\nType 'hint' for help but lose 3 points. \
                  \nYOUR GUESS: ")

    while guess != correct and guess != 'hint':
        print("Sorry that's not it.")
        score -= 1
        guess = input("Your guess: ")

    if guess == 'hint':
        print("The word starts with '"+ correct[0:hint_count]+"' and ends with '"+correct[len(correct)-hint_count:len(correct)]+"'")
        score -= 3
        hint_count += 1
        guess = input("Your guess: ")

    if guess == correct:
        print("That's it! You guessed it!\n")
        print("Your score is ",score)


    print("Thanks for playing.")

    replay = input("\n\nWould you like to play again (y/n).")

【问题讨论】:

  • 您的问题是while 循环让用户输入猜测或hint 但输入hint 会跳出循环。这就是为什么用户只能使用hint 一次(并且在那次提示之后用户只能再输入一个单词)。现在有几个答案,其中任何一个都可以解决问题。您想要一个 while 循环,直到用户正确理解该词后才会退出,并且您希望用户类型的每个答案都被单独评估(正确吗?是 hint 吗?也可能是 @987654329 @?)
  • 这是逻辑问题,不是编程问题。
  • @KarlKnechtel 编程本身就是一个逻辑问题。

标签: python while-loop


【解决方案1】:

在第一个“提示”之后,程序应该要求猜测,然后继续 print("Thanks for playing."),因为检查提示的条件在 while 循环之外。放入while循环:

while guess != correct:
    if guess == 'hint':
        print("The word starts with '"+ correct[0:hint_count]+"' and ends with '"+correct[len(correct)-hint_count:len(correct)]+"'")
        score -= 3
        hint_count += 1
        guess = input("Your guess: ")

     else:
        print("Sorry that's not it.")
        score -= 1
        guess = input("Your guess: ")

【讨论】:

    【解决方案2】:

    问题是您在 while 循环之外检查 guess == 'hint'。尝试类似

    while True:
        guess = input(...)
        if guess == correct:
            # correct
            break
        elif guess == 'hint':
            # show hint
        else:
            # not it, decrement score
    

    【讨论】:

    • 顺便说一句,有更简单的方法来创建混乱。查看random.shuffle
    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多