【问题标题】:Python: Number Guessing GamePython:猜数游戏
【发布时间】:2014-01-28 21:26:33
【问题描述】:

您的程序通过在 1 到 1000(含)范围内随机选择一个整数来选择要猜测的数字。如果玩家的猜测不正确,你的程序应该循环直到玩家最终猜对了数字。你的程序应该不断告诉玩家太高或太低,以帮助玩家“归零”正确答案。游戏结束后,程序应提示用户输入“y”重新玩游戏或“n”退出游戏。

我的问题是每次他们想再次播放时如何生成一个新的随机整数?

这是我的代码。

import random

randomNumber = random.randrange(1, 1000)

def main():
    print ""
    number = input("I have a number between 1 and 1000. Can you guess my number? Please type your first guess: ")
    guess(number)

def guess(number1):
    correct = False
    while not correct:
        if number1 > randomNumber:
            print "Too high. Try again."
            print ""
        elif number1 < randomNumber:
            print "Too low. Try again."
            print ""
        elif number1 == randomNumber:
           break
        number1 = input ("What number do you guess? ")
    if number1 == randomNumber:
       playAagain = raw_input ("Excellent! You guessed the number! Would you like to play again (y or n)? ")
       if playAagain == "y":
            main()

main()

【问题讨论】:

  • 您可能需要考虑不在guess 函数内调用main 函数。这称为递归(因为调用guess 函数的是main 函数)并且可能导致您的程序崩溃。弄清楚如何用循环替换它。

标签: python function


【解决方案1】:

走这条线:

randomNumber = random.randrange(1, 1000)

并将其放入guess:

import random

def main():
    print ""
    number = input("I have a number between 1 and 1000. Can you guess my number? Please type your first guess: ")
    guess(number)

def guess(number1):
    #########################################
    randomNumber = random.randrange(1, 1000)
    #########################################
    correct = False
    while not correct:
        if number1 > randomNumber:
            print "Too high. Try again."
            print ""
        elif number1 < randomNumber:
            print "Too low. Try again."
            print ""
        elif number1 == randomNumber:
           break
        number1 = input ("What number do you guess? ")
    if number1 == randomNumber:
       playAagain = raw_input ("Excellent! You guessed the number! Would you like to play again (y or n)? ")
       if playAagain == "y":
            main()

main()

现在,每次调用函数时都会创建一个新的随机整数。

【讨论】:

    【解决方案2】:

    main()中放一个循环,在循环的开头初始化randomNumber

    【讨论】:

      【解决方案3】:

      请尝试删除从随机到while循环开始的四个空格

      import random
      
      print " welcome to game of guessing "
      print "you have 6 attempts"
      num1 = random.randint(1,100)
      print num1  # this is your computer generated number ( skip while running :only for test purpose)
      num2 = num1+random.randint(1,15)
      print " hint: number is close to " + str(num2)
      
      count=1
      

      而计数

      elif inputnum<str(num1):
          print " number is lower than correct one "
          count=count+1
      elif inputnum>str(num1):
          print "number is greater than correct one"
          count=count+1
      else:
          break
      

      【讨论】:

        【解决方案4】:

        你只需要像这样定义你的 main() 函数。

        def main():
        
            global randomNumber
            print ""
            randomNumber = random.randrange(1, 1000)
            number = input("I have a number between 1 and 1000. Can you guess my number? Please type your first guess: ")
            guess(number)
        

        一切都会完美。希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 2016-06-21
          • 2013-10-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-30
          相关资源
          最近更新 更多