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

为何我的Python GPA转换代码会重复弹出输入提示?

GPA转换代码重复输入问题的解决

问题根源

  1. 重复的输入语句:代码开头的GPA = round(float(input('Enter Term GPA (0-4.3):')), 1)是多余的,它会先触发一次输入请求;之后while循环内又有相同的输入语句,导致即便是有效输入,也会被要求再输入一次。
  2. 最大值定义错误:MaximumGrade = int(4.3)会将4.3强制转换为整数4,导致用户输入4.1-4.3之间的GPA时被判定为无效值,应该直接设为4.3。

修正后的代码

MinimumGrade = 0
MaximumGrade = 4.3  # 修正:保留浮点数值,不转整数

F = 0
D = 0.85
D_Plus = 1.15
C_Minus = 1.5
C = 1.85
C_Plus = 2.15
B_Minus = 2.5
B = 2.85
B_Plus = 3.15
A_Minus = 3.5
A = 3.85
A_Plus = 4.06

def LetterGrade(gpa):  # 优化:将GPA作为参数传入,避免依赖全局变量
    if gpa <= D:
        print("\t %s %s" % ("Letter Grade:", "F"))
    elif gpa < D_Plus:
        print("\t %s %s" % ("Letter Grade:", "D"))
    elif gpa < C_Minus:
        print("\t %s %s" % ("Letter Grade:", "D+"))
    elif gpa < C:
        print("\t %s %s" % ("Letter Grade:", "C-"))
    elif gpa < C_Plus:
        print("\t %s %s" % ("Letter Grade:", "C"))
    elif gpa < B_Minus:
        print("\t %s %s" % ("Letter Grade:", "C+"))
    elif gpa < B:
        print("\t %s %s" % ("Letter Grade:", "B-"))
    elif gpa < B_Plus:
        print("\t %s %s" % ("Letter Grade:", "B"))
    elif gpa < A_Minus:
        print("\t %s %s" % ("Letter Grade:", "B+"))
    elif gpa < A:
        print("\t %s %s" % ("Letter Grade:", "A-"))
    elif gpa < A_Plus:
        print("\t %s %s" % ("Letter Grade:", "A"))
    elif gpa >= A_Plus:
        print("\t %s %s" % ("Letter Grade:", "A+"))

done = False
while done == False:
    GPA = round(float(input('Enter Term GPA (0-4.3):')), 1)
    if GPA < MinimumGrade or GPA > MaximumGrade:
        continue
    else:
        print("%s %0.1f" %("Term GPA:", GPA))
        LetterGrade(GPA)  # 优化:传入当前GPA参数
        done = True

额外优化说明

  • 将LetterGrade函数改为接收GPA参数的形式,避免依赖全局变量,让代码逻辑更清晰、模块化。

内容的提问来源于stack exchange,提问作者Fikayo Akande

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:25:20