实现字符串尾字符前置校验的Python代码运行异常排查
代码无法通过自动评测的具体问题
- 触发直接崩溃的边界场景缺陷
当测试用例传入空字符串时,代码直接执行check_str[-1]提取末尾字符,空字符串没有有效索引位,会立刻抛出IndexError中断程序,评测系统捕捉到运行异常就会直接判失败。哪怕测试用例只传长度为1的字符串,只要覆盖空值输入,就必触发崩溃。 - 不匹配评测规则的输入输出问题
代码中写的input("enter str: ")自带自定义输入提示,学校自动评测系统是通过管道直接灌入测试输入的,既不需要代码主动打印提示,也会因为输出中混了这行提示文字,和评测要求的纯结果输出格式不匹配,触发格式判错。 - 逻辑校验的小疏漏
当前用count(末尾字符) > 1的判定思路是能匹配题目要求的,毕竟计数大于1就说明除了末尾位置本身,前面至少出现过一次该字符,但因为前面两个崩溃点的存在,这段正确逻辑根本没机会在评测环境里跑到。
适配评测要求的修正参考代码
def last_early(check_str): # 提前处理长度不足的边界场景,避免索引报错 if len(check_str) < 1: return False last_char = check_str[-1] # 直接检查除末尾外的字符串部分是否包含末尾字符,逻辑更严谨 return last_char in check_str[:-1] # 移除多余的输入提示,直接读取评测传入的内容 my_str = input().lower() print(last_early(my_str))
内容的提问来源于stack exchange,提问作者FlyFox6767
相关产品推荐
相关产品推荐

