下面我在python中创建了一个Maths测验。它由随机方程组成。问题是使用随机数和函数生成的,这些函数和函数确定问题是加法还是减法。我已经完成了测验,但我尝试添加一个分数计数器,这样如果用户得到一个问题,就会添加一个点。我不确定如何做到这一点,因为我已经尝试将得分实现到功能中并且它不起作用。这是代码:
import random
#Asks for name
name = input("What's your name?")
#Stops user from entering invalid input when entering their class
classchoices = ["A","B","C"]
classname = input("What class are you in?")
while classname not in classchoices:
classname = input("Not a valid class, try again:")
print(name, ",", classname)
print("Begin quiz!")
questions = 0
a = random.randint(1,12)
b = random.randint(1,12)
def add(a,b):
addQ = int(input(str(a) + "+" + str(b) + "="))
result = int(int(a) + int(b))
if addQ != result:
print ("Incorrect! The answer is", result)
else:
print("Correct")
def multiply(a,b):
score = 0
multQ = int(input(str(a) + "X" + str(b) + "="))
results = int(int(a) * int(b))
if multQ != results:
print ("Incorrect! The answer is", results)
else:
print("Correct")
def subtract(a,b):
subQ = int(input(str(a) + "-" + str(b) + "="))
resultss = int(int(a) - int(b))
if subQ != resultss:
print ("Incorrect! The answer is", resultss)
else:
print("Correct")
for questions in range(10):
Qlist = [add, subtract, multiply]
random.choice(Qlist)(random.randint(1,12), random.randint(1,12))
questions += 1
if questions == 10:
print ("End of quiz")
答案 0 :(得分:1)
您可以为每项任务返回分数。添加功能的一个示例:
if addQ != result:
print ("Incorrect! The answer is", result)
return 0
else:
print("Correct")
return 1
当然,你可以为更困难的任务提供更高的分数(例如乘法2分)。
然后在下面:
score = 0
for questions in range(10):
Qlist = [add, subtract, multiply]
score += random.choice(Qlist)(random.randint(1,12),random.randint(1,12))
questions += 1
答案 1 :(得分:0)
使用全局变量并在每个正确的解决方案上添加+1。唯一的负面影响是,一旦程序关闭,分数就会丢失。 something like this
答案 2 :(得分:0)
使用大提琴演示的函数的返回值将是我的第一个直觉。
但是,由于您已经在使用全局变量来跟踪您的问题,因此您可以为分数引入另一个变量。
questions = 0
score = 0
a = random.randint(1,12)
b = random.randint(1,12)
要使用它(而不是仅在函数中可用的局部变量score
),您的函数必须使用globals
来引用它:
def add(a,b):
global score
然后您可以在函数的else语句中递增它:
else:
print("Correct")
score += 1
最后,您可以打印得分:
print("End of quiz")
print("Your score:", score)
请注意,您以奇怪的方式使用questions
变量:
首先用0:
初始化它questions = 0
然后在循环中覆盖它:
for questions in range(10):
questions += 1
for
会给出值0..9的问题,因此在循环内手动增加数字是完全不必要的。这个增加的值将立即被循环的下一个值覆盖。
循环退出后,您肯定会问10个问题。以下if条件是多余的(并且只能起作用,因为您还会在循环中增加问题)。只是失去它:
print("End of quiz")
答案 3 :(得分:0)
您错过了全局定义分数,然后在功能中访问并更新它,这是一个有效的版本:
import random
#Asks for name
name = input("What's your name?")
#Stops user from entering invalid input when entering their class
classchoices = ["A","B","C"]
classname = input("What class are you in?")
while classname not in classchoices:
classname = input("Not a valid class, try again:")
print(name, ",", classname)
print("Begin quiz!")
score = 0
questions = 0
a = random.randint(1,12)
b = random.randint(1,12)
def add(a,b):
global score
addQ = int(input(str(a) + "+" + str(b) + "="))
result = int(int(a) + int(b))
if addQ != result:
print ("Incorrect! The answer is", result)
else:
score += 1
print("Correct")
def multiply(a,b):
global score
multQ = int(input(str(a) + "X" + str(b) + "="))
results = int(int(a) * int(b))
if multQ != results:
print ("Incorrect! The answer is", results)
else:
score += 1
print("Correct")
def subtract(a,b):
global score
subQ = int(input(str(a) + "-" + str(b) + "="))
resultss = int(int(a) - int(b))
if subQ != resultss:
print ("Incorrect! The answer is", resultss)
else:
score += 1
print("Correct")
for questions in range(10):
Qlist = [add, subtract, multiply]
random.choice(Qlist)(random.randint(1,12), random.randint(1,12))
questions += 1
if questions == 10:
print ("End of quiz")
print('Score:', score)