基本上,我希望能够制作一个代码来生成一个随机数,并让用户尝试通过输入来猜测该数字。我以为它会起作用,但它每次都运行 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()
要了解更多信息,您可以在函数中打印a
和b
的类型
print(type(a))
print(type(b))
<class 'int'>
<class 'str'>
根据@nfnneil的建议,将main()
的缩进更新为在其他条件内。