[
  {
    "id": 1,
    "type": "single_choice",
    "content": "小明在学习Python的输入与输出时，编写了以下代码：\n\nuser_input = input('请随意说一个数字：')\nresult = user_input * 3\nprint('最终结果是：', result)\n\n他在运行程序时，输入了数字 5 并按下回车。请问程序会输出什么？",
    "options": [
      "A. 最终结果是： 15",
      "B. 最终结果是： 555",
      "C. 最终结果是： 53",
      "D. 程序会报错"
    ],
    "answer": "B"
  },
  {
    "id": 2,
    "type": "single_choice",
    "content": "小红编写了一段字符串处理程序，代码如下：\n\nname = 'Alexandra'\nsuffix = name[1:5]\nmessage = f'Hi, {suffix}老师！'\nprint(message)\n\n请问程序运行后，输出的内容是什么？",
    "options": [
      "A. Hi, Alex老师！",
      "B. Hi, lexa老师！",
      "C. Hi, Alexa老师！",
      "D. Hi, Alexand老师！"
    ],
    "answer": "B"
  },
  {
    "id": 3,
    "type": "single_choice",
    "content": "学校根据考试成绩划分等级，规则如下：\n- 90分及以上为“优秀”\n- 80分至89分为“良好”\n- 60分至79分为“及格”\n- 60分以下为“不及格”\n\n小亮编写了以下代码来判断等级：\n\nscore = 83\nif score >= 90:\n    grade = '优秀'\nelif score >= 80:\n    grade = '良好'\nelif score >= 60:\n    grade = '及格'\nelse:\n    grade = '不及格'\nprint(grade)\n\n请问输出结果是什么？",
    "options": [
      "A. 优秀",
      "B. 良好",
      "C. 及格",
      "D. 不及格"
    ],
    "answer": "B"
  },
  {
    "id": 4,
    "type": "single_choice",
    "content": "老师讲解了列表的常用操作，随后给出以下代码让同学们分析：\n\nfruits = ['苹果', '香蕉', '橙子', '葡萄']\nfruits.append('西瓜')\nfruits.pop(2)\nfruits.insert(1, '草莓')\nprint(fruits)\n\n请问程序最终输出的列表是什么？",
    "options": [
      "A. ['苹果', '草莓', '香蕉', '葡萄', '西瓜']",
      "B. ['苹果', '草莓', '橙子', '葡萄', '西瓜']",
      "C. ['苹果', '香蕉', '草莓', '葡萄', '西瓜']",
      "D. ['苹果', '香蕉', '橙子', '葡萄', '西瓜']"
    ],
    "answer": "A"
  },
  {
    "id": 5,
    "type": "single_choice",
    "content": "小伟在学习函数作用域时，编写了下面的程序：\n\ntotal = 100\n\ndef add_bonus(amount):\n    total = 0\n    total = total + amount\n    return total\n\nbonus = add_bonus(20)\nprint('total =', total)\nprint('bonus =', bonus)\n\n请分析程序，最后两行依次输出的内容是什么？",
    "options": [
      "A. total = 120 换行 bonus = 20",
      "B. total = 100 换行 bonus = 20",
      "C. total = 100 换行 bonus = 120",
      "D. total = 20 换行 bonus = 100"
    ],
    "answer": "B"
  },
  {
    "id": 6,
    "type": "multiple_choice",
    "content": "关于字符串的常用操作，以下哪些表达式能够将字符串 s = '  Hello World  ' 转换为完全大写的 'HELLO WORLD'（不包含首尾空格）？",
    "options": [
      "A. s.strip().upper()",
      "B. s.upper().strip()",
      "C. s.lstrip().rstrip().upper()",
      "D. s.replace(' ', '').upper()"
    ],
    "answer": "A,B,C"
  },
  {
    "id": 7,
    "type": "multiple_choice",
    "content": "下列关于列表、元组和集合的说法，哪些是正确的？",
    "options": [
      "A. 列表的元素可以修改，元组的元素不能修改",
      "B. 可以使用列表作为字典的键，因为列表是可变的",
      "C. 集合中的元素是无序且不重复的",
      "D. 元组和列表都可以使用索引访问元素"
    ],
    "answer": "A,C,D"
  },
  {
    "id": 8,
    "type": "multiple_choice",
    "content": "阅读下面的程序：\n\nnumbers = [5, 12, 9, 20, 3]\nresult = []\nfor num in numbers:\n    if num > 10:\n        break\n    result.append(num)\nprint(result)\n\n关于这段程序，以下哪些说法是正确的？",
    "options": [
      "A. 最终输出结果是 [5, 12]",
      "B. 循环过程中，遇到12时执行了break，循环提前结束",
      "C. 最终输出结果是 [5]",
      "D. 如果去掉break语句，输出结果将是 [5, 9, 3]"
    ],
    "answer": "B,C,D"
  },
  {
    "id": 9,
    "type": "multiple_choice",
    "content": "在Python中，以下有关文件操作的代码段：\n\nwith open('data.txt', 'w', encoding='utf-8') as f:\n    f.write('第一行\\n')\n    f.write('第二行')\n\nwith open('data.txt', 'r', encoding='utf-8') as f:\n    content = f.read()\nprint(content)\n\n假设文件原来不存在，运行后以下哪些描述是正确的？",
    "options": [
      "A. 写入操作使用了 'w' 模式，如果文件存在会清空原内容",
      "B. 最终打印的内容是 '第一行\\n第二行'",
      "C. with语句能够自动关闭文件，不需要调用close()",
      "D. 若将 'w' 改为 'a'，并且原文件存在，新内容将追加到文件末尾"
    ],
    "answer": "A,B,C,D"
  },
  {
    "id": 10,
    "type": "multiple_choice",
    "content": "关于Python中的函数与参数传递，请判断以下哪些说法是正确的？",
    "options": [
      "A. 函数内部可以访问全局变量，但如果要修改全局变量的值，需要使用global关键字",
      "B. 定义函数时，参数可以有默认值，例如 def greet(name='同学')",
      "C. 函数可以没有return语句，此时函数返回None",
      "D. Python中函数可以返回多个值，实质上返回的是一个元组"
    ],
    "answer": "A,B,C,D"
  },
  {
    "id": 11,
    "type": "application",
    "content": "小慧需要编写一个字符串分析程序。程序运行后，提示用户输入一段任意文字，然后分别统计并输出这段文字中：(1) 数字字符的个数；(2) 字母字符的个数（包括大小写）；(3) 其他字符（既不是数字也不是字母）的个数。\n\n例如，输入：'Python3.9很棒！'，输出应为：\n数字个数：2\n字母个数：6\n其他字符个数：3\n\n请编写完整的Python程序实现上述功能，要求使用for循环遍历字符串，合理使用字符串方法或字符判断。",
    "answer": "解题思路：\n1. 使用input()获取用户输入的字符串。\n2. 初始化三个计数器：digit_count=0, letter_count=0, other_count=0。\n3. 用for循环遍历字符串中的每个字符，通过字符的str.isdigit()方法判断是否是数字，str.isalpha()判断是否是字母，都不满足则计入其他。\n4. 最后按格式输出。\n\n参考代码：\n```python\n# 获取用户输入\ntext = input('请输入一段文字：')\n\n# 初始化计数器\ndigit_count = 0\nletter_count = 0\nother_count = 0\n\n# 遍历每个字符\nfor ch in text:\n    if ch.isdigit():\n        digit_count += 1\n    elif ch.isalpha():\n        letter_count += 1\n    else:\n        other_count += 1\n\n# 输出统计结果\nprint('数字个数：', digit_count)\nprint('字母个数：', letter_count)\nprint('其他字符个数：', other_count)\n```"
  },
  {
    "id": 12,
    "type": "application",
    "content": "数学兴趣小组需要一个专门处理整数列表的函数。请你定义一个名为 sum_of_even_squares 的函数，它接收一个整数列表作为参数，计算列表中所有偶数的平方和，并返回该结果。如果传入的列表为空，则返回0。\n\n编写完函数后，请再写一段代码调用该函数：给定列表 data = [1, 4, 5, 8, 9]，调用 sum_of_even_squares(data)，将返回的结果打印出来。要求函数内部不能修改原列表，只需计算。\n\n请写出完整的程序（包含函数定义与调用部分）。",
    "answer": "解题思路：\n1. 定义函数 sum_of_even_squares(lst)，初始化 total = 0。\n2. 遍历列表每个元素 num，判断 num % 2 == 0，若是偶数，则 total += num ** 2。\n3. 返回 total。\n4. 外部定义 data 列表，调用函数并打印结果。\n\n参考代码：\n```python\ndef sum_of_even_squares(lst):\n    total = 0\n    for num in lst:\n        if num % 2 == 0:  # 判断偶数\n            total += num ** 2\n    return total\n\n# 调用函数\ndata = [1, 4, 5, 8, 9]\nresult = sum_of_even_squares(data)\nprint('列表中偶数的平方和为：', result)\n```\n运行结果：4^2 + 8^2 = 16 + 64 = 80，输出 80。"
  },
  {
    "id": 13,
    "type": "application",
    "content": "小杰想玩一个猜骰子游戏。程序需要实现以下功能：\n1. 程序内部使用随机数生成一个1到6之间的整数（模拟骰子结果）。\n2. 玩家输入自己猜测的数字（1~6）。\n3. 比较并给出反馈：如果猜中，打印“恭喜你猜对了！”；否则打印“很遗憾，正确结果是X”（X 为实际骰子数）。\n4. 每轮结束后，询问玩家是否继续游戏，输入字母 'q' 退出程序，输入其他任意字符则开始新的一轮。\n5. 使用 while True 循环控制游戏过程，需合理使用 break 退出循环。\n\n请编写完整的Python程序实现上述游戏。",
    "answer": "解题思路：\n1. 导入 random 模块。\n2. 使用 while True 无限循环，每次生成骰子数 random.randint(1,6)。\n3. 提示用户猜测，用 int(input(...)) 转换。\n4. 比较后输出对应信息。\n5. 继续询问，若输入 'q' 则 break 退出，否则循环继续。\n\n参考代码：\n```python\nimport random\n\nprint('欢迎来到猜骰子游戏！输入 q 退出游戏。')\n\nwhile True:\n    dice = random.randint(1, 6)\n    guess = int(input('请猜数字（1-6）：'))\n    \n    if guess == dice:\n        print('恭喜你猜对了！')\n    else:\n        print(f'很遗憾，正确结果是{dice}')\n    \n    choice = input('是否继续？(q 退出，其他键继续)：')\n    if choice == 'q':\n        print('游戏结束，再见！')\n        break\n```"
  },
  {
    "id": 14,
    "type": "application",
    "content": "在数学课上，老师要求计算一个 3×3 二维矩阵的主对角线元素之和（即从左上到右下的对角线）。假定矩阵已经给出：\n\nmatrix = [\n    [2, 5, 8],\n    [1, 6, 3],\n    [4, 7, 9]\n]\n\n请你编写程序，通过遍历二维列表的方式计算出主对角线上元素的和，并输出结果。\n\n要求：必须使用索引 i 和 j 遍历，不能直接手动相加。可以只用一层循环，也可以两层循环。计算完成后打印类似“主对角线元素之和为：17”的语句。\n\n请写出完整程序。",
    "answer": "解题思路：\n1. 初始化 total = 0。\n2. 获取矩阵的行数（n=3）。\n3. 使用 for i in range(n) 循环，主对角线上元素满足 i == j，所以累加 matrix[i][i]。\n4. 打印结果。\n\n参考代码：\n```python\nmatrix = [\n    [2, 5, 8],\n    [1, 6, 3],\n    [4, 7, 9]\n]\n\ntotal = 0\nn = len(matrix)  # 矩阵的行数\n\nfor i in range(n):\n    total += matrix[i][i]  # 主对角线元素\n\nprint('主对角线元素之和为：', total)\n```\n计算结果：2 + 6 + 9 = 17。"
  },
  {
    "id": 15,
    "type": "application",
    "content": "老师提供了一个文本文件 'words.txt'，里面每一行存放一个英文单词（单词可能重复）。请编写Python程序完成以下任务：\n1. 读取该文件中的所有单词。\n2. 统计每个单词出现的次数（不区分大小写，即'Hello'和'hello'视为同一个单词）。\n3. 找出出现次数最多的单词，并输出该单词及其出现次数。如果有多个单词并列第一，输出按字母顺序最小的那个（例如'apple'与'banana'次数相同时输出'apple'）。\n4. 使用异常处理结构：如果文件 'words.txt' 不存在，程序应捕获异常并输出“文件不存在，请检查路径！”，然后结束程序，不能崩溃。\n\n要求：必须使用字典进行统计，使用try-except捕获FileNotFoundError。\n\n请编写完整程序。",
    "answer": "解题思路：\n1. 使用 try-except 块，尝试以 'r' 模式打开文件。若抛出 FileNotFoundError，打印提示信息并退出。\n2. 读取所有行，对于每行去掉换行符并转为小写（.strip().lower()），然后统计到字典中。\n3. 遍历字典，找到出现次数最多的单词。既要比较次数，也要在次数相同时保留字母序较小的单词。可以用条件判断。\n4. 输出结果。\n\n参考代码：\n```python\ntry:\n    with open('words.txt', 'r', encoding='utf-8') as f:\n        lines = f.readlines()\nexcept FileNotFoundError:\n    print('文件不存在，请检查路径！')\n    exit()\n\nword_count = {}\nfor line in lines:\n    word = line.strip().lower()  # 去掉换行和首尾空格，转小写\n    if word:  # 忽略空行\n        if word in word_count:\n            word_count[word] += 1\n        else:\n            word_count[word] = 1\n\n# 寻找出现次数最多的单词\nmax_count = 0\nmax_word = ''\nfor word, count in word_count.items():\n    if count > max_count or (count == max_count and word < max_word):\n        max_count = count\n        max_word = word\n\nprint(f'出现次数最多的单词是：{max_word}，出现了 {max_count} 次。')\n```\n说明：此程序也可使用max函数，但此处演示手动判断以展示比较逻辑。"
  }
]