【问题标题】:While loops, if-else statements: Guess my number gameWhile 循环,if-else 语句:猜我的数字游戏
【发布时间】:2017-04-01 13:53:36
【问题描述】:

我是一个使用 python 的初学者,正在编写一个“猜我的数字游戏”。到目前为止,我一切正常。计算机在 1 到 3 之间选择一个随机数,并要求玩家猜测该数字。如果猜测值高于随机数,则程序打印“Lower”,反之亦然。玩家只有5次尝试,当他们用完时,玩家会收到一条消息,游戏结束。如果玩家猜对了,则恭喜他们,游戏结束。但是,有时当数字猜对时,程序不会打印祝贺信息,我不知道为什么......

import random

print("\tWelcome to 'Guess My Number'!:")
print("\nI'm thinking of a numer between 1 and 100.")
print("Guess carefully, you only have 5 tries!.\n")

#sets initial values
the_number = random.randint(1,3)
guess = int(input("Take a guess: "))
tries = 1
guesses = 4


#guessing loop
while guess != the_number:
    if guess > the_number:
        print("Lower...")
    elif guesses <= 0:
        print("Sorry, you're out of guesses! Try again...")
        break

    elif guess < the_number:
        print("Higher...")



    guess = int(input("Take a guess: "))
    tries += 1
    guesses -= 1

    if guess == the_number:
        print("You guessed it! The number was", the_number)
        print("And it only took you", tries, "tries!\n")

【问题讨论】:

  • if guess == the_number 在 while 循环内...永远不会是真的
  • 啊……当然。谢谢!

标签: python if-statement while-loop


【解决方案1】:

要回答您关于缺少正确数字的祝贺消息的原始问题,请使用 input() 结束代码,以确保它不会在显示最后一条消息之前终止。

计算顺序:

  1. 给出输入猜测
  2. 减少猜测(从 5 开始),增加尝试次数(从 1 开始)
  3. 如果猜测 == 0 则立即休息
  4. 评估猜测(较低、较高或相等,这将结束 while 循环)

import random

print("\tWelcome to 'Guess My Number'!:")
print("\nI'm thinking of a numer between 1 and 3.")
print("Guess carefully, you only have 5 tries!.\n")

#sets initial values
the_number = random.randint(1,3)
guess = int(input("Take a guess: "))
tries = 1
guesses = 5


#guessing loop


while guess != the_number:
    tries += 1
    guesses -= 1

    if guesses == 0:
        print("Sorry, you're out of guesses! Try again...")
        break

    elif guess > the_number:
        print("Lower...")
    elif guess < the_number:
        print("Higher...")

    

    guess = int(input("Take a guess: "))

if guess == the_number:
    print("You guessed it! The number was", the_number)
    print("And it only took you", tries, "tries!\n")

input()

【讨论】:

    【解决方案2】:

    假设其他一切正常,取消缩进最后的检查。 guess == the_number 不相等时,您无法检查它

    #guessing loop
    while guess != the_number:
        # do logic
    
    # outside guessing loop
    if guesses > 0:
        print("You guessed it! The number was", the_number)
        print("And it only took you", tries, "tries!\n")
    

    【讨论】:

    • if 仍然需要,因为循环可能会因猜测不足而结束。
    【解决方案3】:

    如果您在第一次尝试中猜到了数字,那么程序将需要再次猜测,因为

    guess = int(input("Take a guess: "))
    tries += 1
    guesses -= 1
    

    来之前

    if guess == the_number:
        print("You guessed it! The number was", the_number)
        print("And it only took you", tries, "tries!\n")
    

    当您已经要求在循环之外进行猜测时。您应该只在循环内要求输入:

    the_number = random.randint(1,3)
    tries = 0
    guesses = 5
    
    #guessing loop
    guess = None
    while guess != the_number:
        guess = int(input("Take a guess: "))
        tries += 1
        guesses -= 1
    
        if guess > the_number:
            print("Lower...")
        elif guess < the_number:
            print("Higher...")
    
        if guess == the_number:
            print("You guessed it! The number was", the_number)
            print("And it only took you", tries, "tries!\n")
    
        if guesses <= 0:
            print("Sorry, you're out of guesses! Try again...")
            break
    

    【讨论】:

      猜你喜欢
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 2015-11-08
      • 2014-10-30
      • 2017-08-31
      • 1970-01-01
      相关资源
      最近更新 更多