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

Python读题判分程序问题:为何"B"与"B"判断不相等?

解决Python答题程序中“相同字符串不相等”的问题

嘿,这种看起来完全一样的字符串却判定不相等的坑我踩过好多次!大概率是隐藏的空白字符在搞鬼——比如换行符\n、回车符\r或者多余的空格,肉眼根本看不出来,但程序会把它们当成不同的字符。

快速排查方法

先在代码里加一行调试代码,把正确答案和用户输入的字符串用repr()打印出来,比如:

# 假设你是这样获取正确答案和用户输入的
correct_answer = 从文件读取的答案
user_input = input("请输入你的答案:")

# 打印带格式的字符串,看隐藏字符
print(f"正确答案: {repr(correct_answer)}, 用户输入: {repr(user_input)}")

如果输出是正确答案: 'B\n', 用户输入: 'B',那问题就找到了——文件里的答案带了换行符!

代码修复方案

读取文件内容时,给每个读取到的字符串加上.strip()方法,它会自动去除字符串前后的所有空白字符(换行、空格、制表符都包含在内):

# 示例:读取题目文件的正确写法
with open("questions.txt", "r", encoding="utf-8") as f:
    for line in f:
        # 先去除整行的前后空白,再处理内容
        clean_line = line.strip()
        if not clean_line:  # 跳过空行
            continue
        # 假设你的题目行格式是类似 "1. 题目内容?A.xxx B.xxx C.xxx D.xxx 正确答案:B"
        # 分割正确答案部分
        if "正确答案:" in clean_line:
            correct_answer = clean_line.split("正确答案:")[-1].strip()
            # 后续逻辑...

文本文件格式建议

为了避免这类问题,建议你的题目文本文件尽量保持格式统一:

  • 每道题的答案单独一行或者和题目行末尾用固定格式标记(比如正确答案: B,注意冒号后加空格,方便分割)
  • 不要在答案前后加多余的空格或换行
  • 保存文件时选择UTF-8编码,避免乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:26:18