我需要帮助在一个简单的游戏中将随机数生成器作为锁

时间:2017-11-18 06:52:06

标签: python random generator

基本上,我希望能够创建一个生成随机数的代码,并让用户尝试通过输入来猜测该数字。我认为它会起作用,但它每次都会运行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()

3 个答案:

答案 0 :(得分:0)

你的if条件是检查带整数的字符串。在检查或检查之前,使用b将输入数字int(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()的缩进更新为其他条件。

答案 1 :(得分:0)

假设您正在使用Python 3,问题在于您将字符串与数字进行比较,因此它总是错误的。只需改变:

b = input('Enter a number: ')

要:

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

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

答案 2 :(得分:0)

一些事情。一,您不会将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()