我需要帮助做一个随机数发生器,在一个简单的游戏
问题描述:
基本上,我希望能够使这将产生一个随机数的代码的锁定,并让用户尝试通过将在输入猜测数。我认为它会起作用,但它每次都会运行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()
答
你的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()
要知道更多,你可以打印a
和b
类型更新的main()
压痕是else条件中函数
print(type(a))
print(type(b))
<class 'int'>
<class 'str'>
内,按照从@nfnneil建议。
答
你使用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()
的'主()'行不正确缩进,只是一个友善的领导。 – Neil