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
相关产品推荐
相关产品推荐

