-1

検索していますが、これを修正するのに役立つ情報が見つかりません。

Pythonでプログラミングを練習するために、私はホームオートメーションの制御コードに取り組んでいます。私は温度変換計算機から始めました、そしてそれはうまくいきます。次に、それを別の「if」内に配置して、温度を変更し、現在の温度を読み取る機能を提供します。これにより、コンバーター「if」が私のコントロール「if」のサブとして配置されます。プログラムはうまく開きますが、コンバーターのラインにのみ行きます。一般的な制御の一部である「elif」ステートメントには適用されません。下:

while True:

    task = (raw_input("What would you like to do? "))

    if task == 'Convert' or 'convert':
        ask = raw_input("C to get Celsius, F to get Fahrenheit: ")

        if ask == 'F':
            Cconvert = float(raw_input("Temp in C: "))
            F = Cconvert * 9 / 5 + 32
            print F, 'F'

        elif ask == 'C':
            Fconvert = float(raw_input("Temp in F: "))
            C = ((Fconvert - 32) * 5) / 9
            print C, 'C'

        else:
            print "That is not a temperature measurement I understand."

    elif task == "ChangeTemp":
        temptype = raw_input("Celsius or Fahrenheit? ")
        if temptype == "Celcius" or "celsius":
            temp = float(raw_input("New Temp: ")), str(temptype)
        elif temptype == "Fahrenheit" or "fahrenheit":
            temp = float(raw_input("New Temp: ")), str(temptype)
        else:
            print "That is not a temperature measurement I understand."

    elif task == "SetTemp":
        print temp

    else:
        print "I do not know what you are asking."

これが他の場所で答えられて、私が単にそれを見つけることができなかったならば、リンクしてください。

4

3 に答える 3

3
if task == 'Convert' or 'convert':

その行は、と同等であるため、常に成功します

if (task == 'Convert') or ('convert'):

'convert'それ自体がブール式と見なされると、結果はになりTrueます。それを書く正しい方法は次のようになります:

if task == 'Convert' or task == 'convert':

次のいずれかを実行することもできます。

if task in ('Convert', 'convert'):

if task.lower() == 'convert':
于 2013-03-24T18:41:51.757 に答える
0

これはあなたが望むものではありません:

if task == 'Convert' or 'convert':

taskでない場合でも、Convert常にconvert真の値です。だからあなたはそのelif部分に到達することは決してないだろう。

あなたはこれをしなければなりません:

if task == 'Convert' or task == 'convert':

(コンテキストを考慮して、同じことを行うためのより良い方法を無視します)

于 2013-03-24T18:42:07.190 に答える
0

バグは次のコード行にあります。

if task == 'Convert' or 'convert':

次のコード行に置き換えます。

if task == 'Convert' or task == 'convert':

または、strのlower()メソッドを使用することをお勧めします。

if task.lower() == 'convert'
于 2013-03-24T18:43:19.077 に答える