我是 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
提交
取消