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

Python新手求助:实现指定题量返回及ABCD输入合法性校验

Python 功能问题修复方案

问题说明

我是Python新手,目前有两个功能实现遇到问题:

  • 实现返回用户请求的题目数量(已完成错误提示,但需完善输入合法性校验);
  • 需实现当用户输入非A、B、C、D(含大小写、其他字母、字符、数字)或为空时弹出错误提示,目前已完成非空校验,需完善输入范围限制。

修复后的代码及说明

1. 题目数量请求功能修复

原代码仅处理一次输入错误,且未处理非数字输入的异常,以下是完善后的版本:

def playquiz():
    while True:
        print("你想回答多少道题目?")
        number_input = input()
        # 校验输入是否为数字
        if not number_input.isdigit():
            print("请输入有效的数字!")
            continue
        numberofquests = int(number_input)
        if numberofquests > 15:
            print("没有那么多题目,最多只能回答15道!")
        elif numberofquests <= 0:
            print("再见")
            exit(0)
        else:
            # 返回合法的题目数量
            return numberofquests

# 调用函数并获取用户请求的题目数
requested_count = playquiz()
print(f"你选择回答 {requested_count} 道题目")

修复点:

  • 使用while True循环持续请求输入,直到用户输入合法值;
  • 添加非数字输入的校验逻辑;
  • 最终返回用户请求的合法题目数量,方便后续逻辑调用。

2. 答题输入校验功能修复

原代码的输入校验逻辑存在位置错误和语法问题,以下是完善后的版本:

def new_game():
    guesses = []
    correct_guesses = 0
    question_num = 1

    # 假设questions和options为已定义的题目与选项集合
    for key in questions:
        print("-------------------------")
        print(key)
        for i in options[question_num-1]:
            print(i)
        
        # 循环校验输入合法性
        while True:
            guess = input("请输入选项(A、B、C或D):")
            guess = guess.upper()  # 统一转为大写,兼容大小写输入
            if not guess:
                print("不能留空,请重新输入!")
            elif guess not in {'A', 'B', 'C', 'D'}:
                print("必须输入A、B、C、D中的一个,请重新输入!")
            else:
                break  # 输入合法,跳出循环
        
        guesses.append(guess)
        correct_guesses += check_answer(questions.get(key), guess)
        question_num += 1

    display_score(correct_guesses, guesses)

修复点:

  • 将输入校验逻辑整合到一个while True循环中,一次性处理空输入和非法字符;
  • 先将输入转为大写,确保大小写输入都能被正确识别;
  • 直接判断输入是否在允许的选项集合{'A','B','C','D'}中,逻辑清晰且覆盖所有非法输入情况;
  • 修复原代码中isalpha()调用的语法错误和逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:54:33