【问题标题】:I need help making a random number generator as a lock in a simple game我需要帮助制作一个随机数生成器作为一个简单游戏中的锁
【发布时间】:2018-05-01 23:35:22
【问题描述】:

基本上,我希望能够编写一个生成随机数的代码,并让用户通过输入来尝试猜测该数字。我认为它会起作用,但它每次都会运行 else 语句,即使我猜对了。

import random
def main():
  values = [1, 2, 3, 5, 7, 10]
  a = random.choice(values)
  print (a) ##########To see what the number is#########
  b = input('Enter a number: ')
  if b == a:
    print('You have guessed the number!')
  else:
    print('Try again')
    main()
main()

【问题讨论】:

    标签: python random generator


    【解决方案1】:

    假设您使用的是 Python 3,问题是您将字符串与数字进行比较,所以它总是错误的。只需更改:

    b = input('Enter a number: ')
    

    收件人:

    b = int(input('Enter a number: '))
    

    那么b将是一个数字(只要用户输入一个数字)。

    【讨论】:

      【解决方案2】:

      几件事。一,您不会将input 的结果转换为int。因此,'7' 永远不会等于 7,因为编程是如何工作的,除非您使用 int() 函数对其进行转换。第二件事,我注意到您正在使用递归来解决这个问题。不幸的是,在您的实现中,您似乎重新定义了要猜测的数字。我无法想象这是你的“猜谜游戏”的意图。所以,我重写了它,没有这个陷阱:

      如果不需要递归:

      import random
      
      values = [1, 2, 3, 5, 7, 10]
      number = random.choice(values)
      print("The secret number is {}".format(number))
      while True:
          guess = int(input('Enter a number: '))
          if guess == number:
              print('You have guessed the number!')
              break
          else:
              print('Try again')
      

      如果必须使用递归:

      import random
      def main(a=None):
          if a == None:
              values = [1, 2, 3, 5, 7, 10]
              a = random.choice(values)
              print (a) ##########To see what the number is#########
          b = int(input('Enter a number: '))
          if b == a:
              print('You have guessed the number!')
          else:
              print('Try again')
              main(a)
      main()
      

      【讨论】:

        【解决方案3】:

        您的 if 条件是检查带有整数的字符串。在检查前或检查时使用int(b) 将输入数字b 转换为int。

        import random
        def main():
            values = [1, 2, 3, 5, 7, 10]
            a = random.choice(values)
            print (a) ##########To see what the number is#########
            b = input('Enter a number: ')
            if int(b) == a:
                print('You have guessed the number!')
            else:
                print('Try again')
                main()
        main()
        

        要了解更多,可以在函数内部打印ab的类型

        print(type(a))
        print(type(b))
        
        <class 'int'>
        <class 'str'>
        

        根据@nfnneil 的建议,将main() 的缩进更新为其他条件。

        【讨论】:

        • main() 行没有正确缩进,只是一个友好的提示。
        猜你喜欢
        • 2019-06-03
        • 2020-10-27
        • 2014-11-30
        • 1970-01-01
        • 2015-01-25
        • 1970-01-01
        • 1970-01-01
        • 2014-12-21
        • 1970-01-01
        相关资源
        最近更新 更多