【问题标题】:Guessing random number game python猜随机数游戏python
【发布时间】:2016-10-26 15:35:33
【问题描述】:

我的程序应该要求用户猜测 0 到 100 之间的数字,但我似乎无法正确输出。此时如果用户数大于随机数,则打印出无限量的“你的数太高”。此外,如果第一个 UserGuess 较低,则以下所有数字都会有相同的提示:(“您的数字太低”)尽管它们实际上大于随机数。我不知道我做错了什么。任何帮助将不胜感激。谢谢!

from random import randint

def main():


    guessesTaken = 0

    randomNumber = randint(0,100)
    #print(randomNumber)
    giveUp = -1
    UserGuess = int(input("Take a guess" + "(The random number is: " + str(randomNumber) + "): "))

    while UserGuess != randomNumber:

        guessesTaken += 1

        if UserGuess < randomNumber:
            UserGuess = int(input("Your guess is too high.Try again: "))

        elif UserGuess > randomNumber:
            UserGuess = int(input("Your guess is too high.Try again: "))

        elif UserGuess == randomNumber or UserGuess == giveUp:
            break

    if UserGuess  == randomNumber:
        guessesTaken = str(guessesTaken)
        print("Yes, that is right!")
        print("It took you " + guessesTaken +  " guesses")
    if UserGuess == giveUp:
        guessesTaken = str(guessesTaken)
        randomNumber = str(randomNumber)
        print("Better luck next time.")
        print("You tried"+ guessesTaken +  " guesses")


    return
    print (main())

if __name__ == "__main__":
     main()    

【问题讨论】:

  • 如果他没有猜对(在while循环内),你必须再次要求用户输入一个数字
  • 顺便说一句,请修正你的缩进。

标签: python random


【解决方案1】:

进入循环后,您需要获得更多用户输入。考虑

UserGuess = None

while UserGuess != randomNumber:
    UserGuess = int(input("Take a guess" + "(The random number is: " + str(randomNumber) + "): "))
    guessesTaken += 1
    ....

就目前而言,您只是在猜测。然后你反复重新评估它。由于用户没有机会改变他们的猜测,所以它无限循环。


此外,您还需要更改 if/elif 的顺序。

目前的结构是

if guess (is too low)
if the guess (is not too low), and (is too high)
if the guess (is not too low), and (is not too high), and (is correct) or (is 'give up')

让它工作的快速方法是

if   UserGuess == randomNumber or UserGuess == giveUp:
    ...
elif UserGuess > randomNumber:
    ...
elif UserGuess < randomNumber:
    ....

【讨论】:

  • 我解决了这个问题,现在我的程序运行了,但是当我输入 -1(这意味着我想放弃)时,它只是说太低了。知道为什么吗?
  • @JaneDoe2 这是因为 if 和 elif 语句块按顺序排列。由于 -1 低于您的猜测,因此接受该声明并继续前进,如果您愿意,可以将第三个 elif 声明移至第一个:UserGuess == randomNumber or UserGuess == giveUp 将此作为您的第一个 if,并将您当前的第一个 @987654326 @成为elif
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 2019-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
相关资源
最近更新 更多