Python中等级出现次数统计代码失效问题求助
问题排查与修正方案
嘿,我一眼就揪出你代码里的问题啦!
错误根源
你在第二个循环的判断逻辑里犯了个典型的小疏忽:你把用户输入的等级字符串(比如"A")和**变量A/B/C/D**做比较,但这些变量一开始被你赋值成了整数0。字符串和整数属于完全不同的数据类型,永远不可能相等,所以所有条件判断都不成立,最终所有输入都被归到了else分支的F计数里。
修正后的代码
我给你调整好了代码,顺便优化了几个细节(更贴合Python编码规范):
# 初始化计数变量,用更清晰的命名避免混淆 a_count = 0 b_count = 0 c_count = 0 d_count = 0 f_count = 0 # 直接循环20次输入,无需提前初始化列表 for _ in range(20): # 处理输入:去除空格+统一大写,避免用户输入空格/小写导致判断失效 grade = input("Input A, B, C, D or F: ").strip().upper() # 输入后直接判断计数,省去二次循环的麻烦 if grade == "A": a_count += 1 elif grade == "B": b_count += 1 elif grade == "C": c_count += 1 elif grade == "D": d_count += 1 elif grade == "F": f_count += 1 else: print("Invalid input! Please enter A/B/C/D/F.") # 用格式化字符串输出,结果更易读 print(f"A: {a_count}, B: {b_count}, C: {c_count}, D: {d_count}, F: {f_count}")
额外优化说明
- 把计数变量改成
a_count这类命名,彻底避免和字符串字面量"A"混淆 - 去掉了不必要的
Grade列表,直接在输入时完成计数,节省内存也更高效 - 加入
.strip().upper()处理输入,兼容用户不小心输入空格或小写字母的情况 - 增加了无效输入提示,让程序交互更友好
内容的提问来源于stack exchange,提问作者Dylan Jack
相关产品推荐
相关产品推荐

