import random

def generate_question():
    operators = ['+', '-', '*', '/']
    operator = random.choice(operators)
    if operator == '/':
        # 生成除法题目时,确保结果是整数
        num1 = random.randint(1, 10)
        num2 = random.randint(1, 10)
        num2_factors = [i for i in range(1, num2+1) if num2 % i == 0]
        num2 = random.choice(num2_factors)
        num1 = num2 * random.randint(1, 10)
    else:
        num1 = random.randint(1, 100)
        num2 = random.randint(1, 100)
    question = f'{num1} {operator} {num2}'
    return question, eval(question)

def check_answer(question, answer):
    user_answer = input(question + ' = ')
    try:
        user_answer = float(user_answer)
        if user_answer == answer:
            print('回答正确!')
            return True
        else:
            print('回答错误!')
            return False
    except:
        print('请输入一个有效的数字!')
        return False

def main():
    num_questions = 5
    correct_count = 0
    for _ in range(num_questions):
        question, answer = generate_question()
        if check_answer(question, answer):
            correct_count += 1
    print(f'您答对了{correct_count}道题目!')

if __name__ == '__main__':
    main()

代码修改说明:

在原代码中,变量 correct_count 在每次循环中都会自增,导致计数错误。

修改后,将 correct_count 的自增放在 check_answer 函数返回 True 时执行,即只有回答正确时才自增。

代码功能:

  1. 生成随机的加减乘除算术题。
  2. 测试用户的答案,判断是否正确。
  3. 对用户输入进行错误处理。
  4. 统计用户答对的题目数量。

使用说明:

运行代码后,程序会依次出示 5 道算术题,用户需要输入答案。

程序会判断用户答案是否正确,并给出相应的提示。

最后程序会统计用户答对的题目数量。

代码特点:

  1. 使用 random 库生成随机算术题。
  2. 使用 eval 函数计算算术题的答案。
  3. 使用 try-except 语句对用户输入进行错误处理。
  4. 使用函数封装代码逻辑,提高代码可读性和可维护性。

代码优势:

  1. 代码简洁易懂,易于理解和修改。
  2. 代码功能完善,能够满足用户测试算术题的需求。
  3. 代码包含错误处理,能够提高代码健壮性。

代码不足:

  1. 代码没有考虑负数的情况。
  2. 代码没有考虑除数为 0 的情况。
  3. 代码没有对用户输入进行更严格的验证,例如防止用户输入非数字字符。

未来改进方向:

  1. 考虑负数的情况。
  2. 考虑除数为 0 的情况。
  3. 对用户输入进行更严格的验证。
  4. 添加更多功能,例如设置难度等级、记录用户得分等。
Python 生成随机算术题并测试用户答案

原文地址: https://www.cveoy.top/t/topic/qCHa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录