0

だから私は温度変換器を作っています、そして私は華氏から摂氏への計算にそれを得ることができません。摂氏から華氏に移動するように機能しますが、逆に変換することはありません。どの問題がこれを引き起こしているのかわかりませんが、intvarsとstringvarsを試しましたが、この問題を修正するものはないようです。また、diff ifステートメントも試しましたが、fahからcelに変換できません。誰かが私を助けて、何が悪いのか教えてもらえますか?これが私が持っているものです:

from Tkinter import*


def convert():
    celTemp = celTempVar.get()
    fahTemp = fahTempVar.get()



    if celTempVar.get() != 0.0:
        celToFah = (celTemp *  9/5 + 32)
        print celToFah
        fahTempVar.set(celToFah)

    elif fahTempVar.get() != 0.0:
        fahToCel = ((fahTemp - 32) * (5/9))
        print fahToCel
        celTempVar.set(fahToCel)



def reset():
    top = Toplevel(padx=50, pady=50)
    top.grid()
    message = Label(top, text = "Reset Complete")
    button = Button(top, text="OK", command=top.destroy)

    message.grid(row = 0, padx = 5, pady = 5)
    button.grid(row = 1, ipadx = 10, ipady = 10, padx = 5, pady = 5)

    fahTempVar.set(int(0))
    celTempVar.set(int(0))





###MAIN###
root = Tk()
root.title("Temperature Converter")
mainframe = Frame(root)
mainframe.grid()

celTempVar = IntVar()
celTempVar.set(int(0))
fahTempVar = IntVar()
fahTempVar.set(int(0))


titleLabel = Label (mainframe, text = "Celcius/Fahrenheit Temperature", font = ("Arial", 20, "bold"), justify = CENTER)
titleLabel.grid(row = 1, column = 1, columnspan = 3, pady = 10, padx = 20)

celLabel = Label (mainframe, text = "Celcius: ", font = ("Arial", 16), fg = "red")
celLabel.grid(row = 2, column = 1, pady = 10, sticky = NW)

fahLabel = Label (mainframe, text = "Fahrenheit: ", font = ("Arial", 16), fg = "blue")
fahLabel.grid(row = 3, column = 1, pady = 10, sticky = NW)

celEntry = Entry (mainframe, width = 10, bd = 5, textvariable = celTempVar)
celEntry.grid(row = 2, column = 1, pady = 10, sticky = NW, padx = 125 )


fahEntry = Entry (mainframe, width = 10, bd = 5, textvariable = fahTempVar)
fahEntry.grid(row = 3, column = 1, pady = 10, sticky = NW, padx = 125 )

convertButton =Button (mainframe, text = "Convert", font = ("Arial", 8, "bold"), relief = RAISED, bd=5, justify = CENTER, highlightbackground = "red", overrelief = GROOVE, activebackground = "green", activeforeground="blue", command = convert)
convertButton.grid(row = 4, column = 1, ipady = 8, ipadx = 12, pady = 5, sticky = NW, padx = 55)

resetButton = Button (mainframe, text = "Reset", font = ("Arial", 8, "bold"), relief = RAISED, bd=5, justify = CENTER, highlightbackground = "red", overrelief = GROOVE, activebackground = "green", activeforeground="blue", command = reset)
resetButton.grid(row = 5, column = 1,ipady = 8, ipadx = 12, pady = 5, sticky = NW)

root.mainloop()
4

1 に答える 1

3

問題はこの行です:

fahToCel = ((fahTemp - 32) * (5/9))

問題は、5/9が整数除算を使用して計算されることです(これへの両方の入力が整数であるため)。それはたまたまに等しい0です、それはあなたがここで望むものではありません!考えられる修正はたくさんありますが、最も簡単なのは5.0/9.0、浮動小数点除算を明確に処理する方法を使用することです。(わかりやすくするために、反対方向も変更することをお勧めします。はい、現在は機能していますが、これは、float入力を持つ乗算celTempがそこで除算の前に処理されるためです。)

于 2012-06-14T22:52:38.953 に答える