2017-11-18 90 views
0

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

回答

0

你的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类型更新的main()压痕是else条件中函数

print(type(a)) 
print(type(b)) 

<class 'int'> 
<class 'str'> 

内,按照从@nfnneil建议。

+1

的'主()'行不正确缩进,只是一个友善的领导。 – Neil

0

你使用Python 3假设,问题是,你比较字符串一个数字,所以它总是假的。只要改变:

b = input('Enter a number: ') 

到:

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

b接着将是一个数(只要用户输入的数字)。

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() 
相关问题