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

陪伴而非守候
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)
添加回答
举报
0/150
提交
取消