2016-04-08 9 views
-1

華氏をケルビンから摂氏に変換できる簡単なプログラムを開発しています。再割り当てPython 3で引数を使用する関数で変数を再割り当てする方法

それは3ウェイコンバータです(これは私には意味:それは、FC、CK、FKを変換することができますなど。)

問題:関係なく、私は関数に渡すものを、入力私は常に0.0を取得していません。

私は変数の再割り当てと関係があると信じていますが、それは何でもかまいません。助けてください。

def temp_con(x, y, z): 

    con_product = 0.0 

    if x == 'f' or x == 'fahrenheit': 
     if y == 'c' or y == 'celsius': 
      con_product += (z - 32.0)/1.8 
     elif y == 'k' or y == 'kelvin': 
      con_product += (z + 459.67)/1.8 
    elif x == 'c' or x == 'celsius': 
     if y == 'f' or y == 'fahrenheit': 
      con_product += z * 1.8 + 32.0 
     elif y == 'k' or y == 'kelvin': 
      con_product += z + 273.15 
    elif x == 'k' or x == 'kelvin': 
     if y == 'c' or y == 'celsius': 
      con_product += z - 273.15 
     elif y == 'f' or y == 'fahrenheit': 
      con_product += z * 1.8 - 459.67 
    print(con_product) 

print(temp_con(input('from'), input('to'), input('val'))) 
+0

x引数は次のとおりです。 のy引数は次のとおりです。 に変換してください。z引数は次のとおりです。変換値 – michael2103

+0

"from"や "to"のように見えません。あなたのプログラムが計算を開始するなら、あなたは 'TypeError: - 'str'と 'float'のためのサポートされていないオペランドの型を取得します。 – Matthias

答えて

1

あなたのコードは、呼び出し元には何も返しません。

return con_product 

...と、この関数を呼び出すコード内に

print(con_product) 

から最後の行を変更します。

print(temp_con(input('from'), input('to'), input('val'))) 

、あなたはその最後のz引数を変換する必要がありますtemp_con()を呼び出す前に文字列(input()関数が返す文字列)からfloatに変換します。

私はおそらく、そのコードがより明確にするようなものだろう:

from = input('from') 
to = input('to') 
inputVal = float(input('value')) 

converted = temp_con(from, to, inputVal) 
print(converted) 

...とあなたが賢明エラーを処理するようなものを行うことができます持ったら - 誰かが1, z, baloneyなどに入ったらどう3つのパラメータ?

+0

どこで変換しますか?私はパラメータでそれを変換しないだろう、私はコードを入力し、ちょうどzの代わりにfloat(z)を入力するか? – michael2103

+0

@ michael2103: 'z = float(z)'を関数の最初の行として使うことができるので、他の場所に変換する必要はありません。もちろん、はるかに良い方法は、正しいパラメータで関数を呼び出すことです。 – Matthias

+0

も、from、to、valueはx、y、zよりはるかに優れているので、より良い名前の変数を使用することを強く推奨します。 –

関連する問題