我是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]
答案 0 :(得分:0)
您这样做:
values.append(int(input("Enter number " + str(counter) + ": ")))
if values == answers:
numCorrect += 1
但是,由于您一直附加到values
,因此在所有正确答案都存在之前,它永远不会等于({==
)answers
,甚至只有以正确的顺序。
如果您希望numCorrect
在values
中具有当前正确的答案数量,则可以编写如下内容:
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))
希望它会有所帮助:)