猿问

使用 python 未成功显示成绩

我是 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()


喵喔喔
浏览 115回答 2
2回答

芜湖不芜

格式化您的代码:    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 中格式化代码非常重要(就像在所有其他语言中一样)要小心。

陪伴而非守候

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)
随时随地看视频慕课网APP

相关分类

Python
我要回答