基本上,我希望能够创建一个生成随机数的代码,并让用户尝试通过输入来猜测该数字。我认为它会起作用,但它每次都会运行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 :(得分: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()
要了解更多信息,您可以在函数中打印a
和b
的类型
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()