为了账号安全,请及时绑定邮箱和手机立即绑定

使用 python 未成功显示成绩

使用 python 未成功显示成绩

喵喔喔 2023-05-23 10:46:39
我是 python 编程的初学者。我编写了一个系统来计算学生的分数。一切都按预期工作,但我只fail显示一次。此外,如果平均值超过 50,我也会收到一条fail消息。我不明白为什么。这是我的代码 from tkinter import *        def Ok():        result = int(e1.get()) + int(e2.get()) + int(e3.get())            totText.set(result)            average = result/3        avgText.set(average)            if (average > 50) :                grade = "pass"        else :            grade = "fail"                gradeText.set(grade)        root = Tk()    root.title("Calculator")    root.geometry("300x400")        global e1    global e2    global e3    global totText    global avgText    global gradeText                totText = StringVar()    avgText = StringVar()    gradeText = StringVar()            Label(root, text="Marks1").place(x=10, y=10)    Label(root, text="Marks2").place(x=10, y=40)    Label(root, text="Marks3").place(x=10, y=80)    Label(root, text="Total:").place(x=10, y=110)    Label(root, text="Avg:").place(x=10, y=140)    Label(root, text="Grade:").place(x=10, y=180)    e1 = Entry(root)    e1.place(x=100, y=10)        e2 = Entry(root)    e2.place(x=100, y=40)        e3 = Entry(root)    e3.place(x=100, y=80)    result = Label(root, text="", textvariable=totText).place(x=100, y=110)    avg = Label(root, text="", textvariable=avgText).place(x=100, y=140)    grade = Label(root, text="", textvariable=gradeText).place(x=100, y=180)    Button(root, text="Cal", command=Ok ,height = 1, width = 3).place(x=10, y=220)    marks1 = Entry(root)    marks2 = Entry(root)    marks3 = Entry(root)                root.mainloop()
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

格式化您的代码:

    if (average > 50):
        grade = "pass"
    else:
        grade = "fail"

    gradeText.set(grade)

代替:

    if (average > 50):
        grade = "pass"
    else:
        grade = "fail"

        gradeText.set(grade)

正如您现在看到的,您在 else 条件之外设置了 de gradeText。

编辑:在 python 中格式化代码非常重要(就像在所有其他语言中一样)要小心。


查看完整回答
反对 回复 2023-05-23
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

Python 强制执行一个强大的缩进系统。看一下这个:

    if (average > 50) :
            grade = "pass"
    else :
        grade = "fail"

        gradeText.set(grade)

这里grade = "pass"缩进太多了。这也会导致该else语句也被跳过,可能带有一些警告。下一条要执行的指令是 thengrade = "fail"gradeText.set(grade)。请使用正确的缩进检查您的代码

    if (average > 50) :
        grade = "pass"
    else :
        grade = "fail"

    gradeText.set(grade)


查看完整回答
反对 回复 2023-05-23
  • 2 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信