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

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}")

额外优化说明

  1. 把计数变量改成a_count这类命名,彻底避免和字符串字面量"A"混淆
  2. 去掉了不必要的Grade列表,直接在输入时完成计数,节省内存也更高效
  3. 加入.strip().upper()处理输入,兼容用户不小心输入空格或小写字母的情况
  4. 增加了无效输入提示,让程序交互更友好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 08:52:34