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



基本上,我希望能够制作一个代码来生成一个随机数,并让用户尝试通过输入来猜测该数字。我以为它会起作用,但它每次都运行 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 3,问题是你正在将字符串与数字进行比较,所以它总是假的。 只需更改:

b = input('Enter a number: ')

自:

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

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

几件事。 第一,您不会将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()

你的 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()的缩进更新为在其他条件内。

最新更新