用python实现四则运算的生成与判定
小组成员:2252316,2252326
点击查看代码
import random
def generate_question():
operators= ['+', '-', '*', '/']
while 1:
operator1 = random.choice(operators)
operator2 = random.choice(operators)
num1 = random.randint(1, 100)
num2 = random.randint(1, 100)
num3 = random.randint(1, 100)
if operator2 == '/':
num2 = num3 * random.randint(1, 10)
if operator1 == '/':
num1 = num2 * random.randint(1, 10)
question = str(num1) + ' ' + operator1 + ' ' + str(num2) + ' ' + operator2 + ' ' + str(num3)
answer = int(eval(question))
if answer>0 and answer<100:
break
return question, answer
def generate_questions(num_questions):
questions = []
answers = []
for _ in range(num_questions):
question, answer = generate_question()
questions.append(question)
answers.append(answer)
return questions, answers
def check_answer(question, user_answer):
correct_answer = int(eval(question))
return user_answer == correct_answer
num_questions = int(input("题目数量:"))
questions, answers = generate_questions(num_questions)
score = 0
for i in range(num_questions):
print(f"Question {i + 1}: {questions[i]} = ?")
user_answer = int(input("Your answer: "))
if check_answer(questions[i], user_answer):
print("Correct!\n")
score += 1
else:
print(f"Wrong! The correct answer is: {answers[i]}\n")
print(f"Your final score is: {score}/{num_questions}")
通过随机函数生成随机运算符以及随机的数字,其中对于除法的处理花了一些功夫,因为想要结果为整数,所以我采用倒推的方法,比如a/b/c,那么就先随机生成c,然后用c一个随机数得到b,再一个随机数得到a,这样的办法来实现,另外一点是由于python3中固定完成除法会保留浮点型,所以采用强制转换成整型的方式来判断,这次尝试中我出现了很多记忆不准确的地方,小组合作商讨互相纠错才得以最终实现。