Python 多次运行测验时分离分数时出错
对于我的工作,我必须进行3次测验,并打印3个单独的分数。但是,当我运行代码时,它会运行测试3次,但只将最终测试分数打印到python和文本文件中 我目前正在尝试的代码的主要部分是Python 多次运行测验时分离分数时出错,python,Python,对于我的工作,我必须进行3次测验,并打印3个单独的分数。但是,当我运行代码时,它会运行测试3次,但只将最终测试分数打印到python和文本文件中 我目前正在尝试的代码的主要部分是 NB_QUESTIONS = 2 NB_QUIZNUMBER = 3 for _ in range(NB_QUIZNUMBER): score = 0 for _ in range(NB_QUESTIONS): num1 = random.randint(1,25) nu
NB_QUESTIONS = 2
NB_QUIZNUMBER = 3
for _ in range(NB_QUIZNUMBER):
score = 0
for _ in range(NB_QUESTIONS):
num1 = random.randint(1,25)
num2 = random.randint(1,25)
op, symbol = random.choice(OPERATIONS)
print("What is", num1, symbol, num2)
if get_int_input() == op(num1, num2):
print("Correct")
score += 1
else:
print("Incorrect")
如果需要,这是完整的代码:
import random
import operator
OPERATIONS = [
(operator.add, "+"),
(operator.mul, "*"),
(operator.sub, "-")
]
NB_QUESTIONS = 2
NB_QUIZNUMBER = 3
def get_int_input(prompt=''):
while True:
try:
return int(input(prompt))
except ValueError:
print("Not a valid input (integer is expected)")
def get_bool_input(prompt=''):
while True:
val = input(prompt).lower()
if val == 'yes':
return True
elif val == 'no':
return False
else:
print("Not a valid input (yes/no is expected)")
if __name__ == '__main__':
name = input("What is your name?").title()
class_name = input("Which class do you wish to input results for? ")
print(name, ", Welcome to the OCR Controlled Assessment Maths Test")
for _ in range(NB_QUIZNUMBER):
score = 0
for _ in range(NB_QUESTIONS):
num1 = random.randint(1,25)
num2 = random.randint(1,25)
op, symbol = random.choice(OPERATIONS)
print("What is", num1, symbol, num2)
if get_int_input() == op(num1, num2):
print("Correct")
score += 1
else:
print("Incorrect")
print("Well done", name, "you scored", score, "/", NB_QUESTIONS)
filename = class_name + ".txt"
with open(filename, 'a') as f:
f.write(str(name) + " : " + str(score) + '\n')
with open(filename, 'a') as f:
f = open(filename, "r")
lines = [line for line in f if line.strip()]
f.close()
lines.sort()
if get_bool_input("Do you wish to view previous results for your class"):
for line in lines:
print (line)
else:
input ("Press any key to exit")
如果你想打印每个测验的分数,你应该在循环中打印它,如果你在循环中迭代每个测验的话 代码-
for _ in range(NB_QUIZNUMBER):
score = 0
for _ in range(NB_QUESTIONS):
num1 = random.randint(1,25)
num2 = random.randint(1,25)
op, symbol = random.choice(OPERATIONS)
print("What is", num1, symbol, num2)
if get_int_input() == op(num1, num2):
print("Correct")
score += 1
else:
print("Incorrect")
print("Well done", name, "you scored", score, "/", NB_QUESTIONS)
这允许测试运行3次,但它会询问用户是否希望在前2次查看结果,我不希望出现这一情况。你是什么意思?你想把分数打印三次对吗?