创建一个Python猜谜游戏

时间:2019-12-11 16:17:05

标签: python

我是Python的新手,所以我决定从数字游戏开始。我的数字输入正确,但是我希望它显示正确答案的数量和正确的原始随机数。

代码如下:

import random
print('============================')
print('Now try to guess a list of numbers! The range of number is 0-10')
print('How many numbers do you want?')

numberOfNumbers = int(input('Enter the number: '))
counter = 0
answers = [random.randint(0, 10), numberOfNumbers]
values = []
numCorrect = 0

print('Enter your ' + str(numberOfNumbers) + ' numbers.')

while numberOfNumbers != counter:
    counter += 1
    values.append(int(input("Enter number " + str(counter) + ": ")))
    if values == answers:
        numCorrect += 1
        print('You got' + numCorrect + ' correct!')

print('Original: ' + str(answers))
print('Your guess: ' + str(values))

当前输出:

Now try to guess a list of numbers! The range of number is 0-10
How many numbers do you want?
Enter the number: 3
Enter your 3 numbers.
Enter number 1: 1
Enter number 2: 2
Enter number 3: 3
Original: [5, 3]
Your guess: [1, 2, 3]

目标输出:

Now try to guess a list of numbers! The range of number is 0-10
How many numbers do you want?
Enter the number: 3
Enter your 3 numbers.
Enter number 1: 1
Enter number 2: 2
Enter number 3: 3
(Currently not working for print) You got (x) Correct!
(Here prints answers, it's only printing two numbers) Original: [5, 3, x]
(Your input prints here, working as planned) Your guess: [1, 2, 3]

2 个答案:

答案 0 :(得分:0)

您这样做:

values.append(int(input("Enter number " + str(counter) + ": ")))
    if values == answers:
        numCorrect += 1

但是,由于您一直附加到values,因此在所有正确答案都存在之前,它永远不会等于({==answers,甚至只有以正确的顺序。

如果您希望numCorrectvalues中具有当前正确的答案数量,则可以编写如下内容:

numCorrect = len([v for v in values if v in answers])

当然,如果您仅 要打印numCorrect(如果更改),则您需要编写更多代码。

(还请注意,如果您有重复的正确答案,这种方法就会横盘整理,因此并不是那么简单,但是我不是在编写您的游戏,只是在更正您的代码,以便它按照您的意愿去做)< / p>

您这样做:

answers = [random.randint(0, 10), numberOfNumbers]

这将创建一个包含两个数字的列表,一个随机数和numberOfNumbers。看来您确实想要包含所有随机数的长度numberOfNumbers的列表:

answers = [random.randint(0, 10) for _ in range(numberOfNumbers)]

这可能包括重复项,但是您必须弄清楚如何避免这种情况。

通常,我建议使用免费的IDE(例如PyCharm或Spyder)来调试代码。它们具有使您一次单步执行一行代码的选项,因此您可以看到变量值在命令执行时如何变化-这样做会更有意义。

答案 1 :(得分:0)

由于您是python的新手,所以我决定坚持使用您的代码并更正它们,而不是使其复杂化。因此,您根本上做错的是您在print('You got ' + str(numCorrect) + ' correct!')内使用if statement,因为如果条件不成立,则打印语句将无法工作。

接下来,您需要在while循环中获取随机数,以获取x个随机数。或者,否则,您正在做的是只是得到一个随机数和来自numberOfNumbers的输入。

这是最终代码:

import random
print('============================')
print('Now try to guess a list of numbers! The range of number is 0-10')
print('How many numbers do you want?')

numberOfNumbers = int(input('Enter the number: '))
counter = 0
answers = []
values = []
numCorrect = 0

print('Enter your ' + str(numberOfNumbers) + ' numbers.')

while numberOfNumbers != counter:
    ans_var = random.randint(0,10)
    answers.append(ans_var)
    counter += 1
    values.append(int(input("Enter number " + str(counter) + ": ")))
    if values == answers:
        numCorrect += 1
print('You got ' + str(numCorrect) + ' correct!')
print('Original: ' + str(answers))
print('Your guess: ' + str(values))

希望它会有所帮助:)