0

ユーザー入力(温度)を取得するプログラムを作成する割り当てが与えられました。温度が摂氏の場合は華氏に、またはその逆に変換します。

問題は、35:Cのようなものを入力すると、myscaleがC my codeであっても、プログラムがelif myscale=="C"ではなくifmyscale=="F"を使用することです。

mytemp = 0.0
while mytemp != "quit":
    info = raw_input("Please enter a temperature and a scale. For example - 75:F " \
                       "for 75 degrees farenheit or 63:C for 63 degrees celcius "\
                       "celcious. ").split(":")
    mytemp = info[0]
    myscale = str(info[1])

    if mytemp == "quit":
        "You have entered quit: "
    else:
        mytemp = float(mytemp)
        scale = myscale
        if myscale == "f" or "F":
            newtemp = round((5.0/9.0*(mytemp-32)),3)
            print "\n",mytemp,"degrees in farenheit is equal to",newtemp,"degrees in 
            celcius. \n" 
        elif: myscale == "c" or "C":
            newtemp = 9.0/5.0*mytemp+32
            print "\n",mytemp,"degrees in celcius is equal to",newtemp,"degrees in 
            farenheit. \n"
        else:
            print "There seems to have been an error; remember to place a colon (:) 
                  between "\
                  "The degrees and the letter representing the scale enter code here. "
raw_input("Press enter to exit")
4

2 に答える 2

2

以下:

    if myscale == "f" or "F":

読む必要があります:

    if myscale == "f" or myscale == "F":

また

    if myscale in ("f", "F"):

または(Pythonがsetリテラルをサポートするのに十分最近のものである場合):

    if myscale in {"f", "F"}:

同じことが言えます

    elif: myscale == "c" or "C":

また、の後に余分なコロンがありelifます。

あなたが今持っているものは構文的に有効ですが、意図されたものとは異なる何かをします。

于 2013-03-11T21:22:08.800 に答える
0

ここにあなたの問題があります:

elif: myscale == "c" or "C":

:後のことに注意してくださいelif

inまた、他の回答で指摘されているように使用する必要があります。

于 2013-03-11T21:23:59.870 に答える