You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python答题游戏调用API如何支持数字作答并仅返回正确答案

Python答题小游戏修复方案

核心优化点

  • 支持用户输入数字序号作答,同时兼容直接输入答案文本的作答方式
  • 答错时仅返回正确答案内容,不再输出完整的答案字典结构

修改后完整代码

import requests

url = "" # 替换为你的API实际地址
the_questions = requests.get(url).json()

print("------ Welcome to Python Quiz ------")


def compare_answer(correct, user_input_answer):
    # 统一转小写去空格比对,避免格式问题误判
    return any(ca["correct"] and ca["answer"].strip().lower() == user_input_answer.strip().lower() for ca in correct)


def get_correct_answers(answers):
    res = []
    for ans in answers:
        if ans['correct']:
            res.append(ans['answer'])
    return res


def main():
    score = 0
    total = len(the_questions['questions']) # 动态计算总题数,不用硬编码3
    for question in the_questions['questions']:
        print(question['prompt'])
        answers = question['answers']

        for i, a in enumerate(answers, start=1):
            print(f"[{i}] {a['answer']}")

        user_answer = input("> ").strip()
        # 处理用户输入序号的情况
        if user_answer.isdigit():
            idx = int(user_answer) - 1
            # 校验序号合法性,避免输入超出选项范围报错
            if 0 <= idx < len(answers):
                user_answer = answers[idx]['answer']
        
        if compare_answer(answers, user_answer):
            score += 1
            print(f"Right!")
        else:
            # 调用已有的get_correct_answers提取正确答案,拼接成字符串显示
            right_ans = ', '.join(get_correct_answers(answers))
            print(f"Wrong, the right answer is: {right_ans}")
    print(f"You got {score} points out of {total}!")


if __name__ == '__main__':
    main()

关键修改说明

  • 新增输入序号处理逻辑:判断用户输入是否为纯数字,合法的序号会转换为对应选项的答案文本再做比对,同时做了序号范围校验,避免输入超出选项数量导致索引报错
  • 优化比对逻辑:统一对答案和用户输入做去空格、转小写处理,避免大小写、首尾空格等格式问题导致的误判
  • 优化答错提示:调用你已经实现的get_correct_answers()函数提取所有正确答案,用逗号拼接后输出,适配多选场景(比如示例API中第三题有两个正确答案)
  • 动态计算总题数:替换原来硬编码的总题数3,适配API返回不同数量题目的情况

内容的提问来源于stack exchange,提问作者Kevin R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:06:05