用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中固定完成除法会保留浮点型,所以采用强制转换成整型的方式来判断,这次尝试中我出现了很多记忆不准确的地方,小组合作商讨互相纠错才得以最终实现。

posted @ 2024-04-19 02:55  Lucaba  阅读(55)  评论(0编辑  收藏  举报