2017-04-18 18 views
-2

以下の表には、フィート単位の長さが含まれています。ヘルプ:Python 2.7.13ユニット変換

1インチ= .083333フィート; 1ロッド= 16.5フィート; 1ヤード= 3.28155フィート; 1フールロン= 660フィート; 1メートル= 3.28155フィート; 1キロメートル= 3281.5フィート; 1つの仮説= 6フィート; 1マイル= 5280フィート。

9つの異なる単位を表示するプログラムを作成します。ユニットの変換元、変換先ユニット、変換対象数量を要求します。変換した数量を表示します。

Units.txtファイルを使用して、指定された単位長さのフィート数を提供する辞書を作成します。

conversions.txtファイルの読み取り:

インチ、0.083333を。ファーロング、660;ヤード、3;疑い、6;フィート、1;キロメートル、3281.5;メートル、3.2815;マイル、5280;ロッド、16.5

print 'UNITS OF LENGTH' 
print 'Inches',  'furlongs',  'yards' 
print 'rods',  'miles',  'fathoms' 
print 'meters',  'kilometers', 'feet' 

conversions = {} 
with open('Units.txt') as fname: 
    for line in fname: 
     (keys, values) = line.split(',') 
     conversions[keys] = float(values) 
def convert(from_unit, to_unit, values): 
    from__unit1 = conversions[from_unit1] 
    to__unit2 = conversions[to_unit2] 

new_values = values * (from__unit1/to__unit2) 

return str(new_value) + to__unit2 

unit1 = raw_input('Units to convert from: ') 
unit2 = raw_input('Units to convert to: ') 
num1 = raw_input('Enter your value: ') 

print(convert(unit1, unit2, (num1))) 
+1

どうしたの? – thesonyman101

+0

Iveは複数の問題を抱えていましたが、私はコーディングに新しいですが、今の時点でNameError:グローバル名 'from_unit1'が定義されていません – john

+1

私はあなたを手伝ってくれます。 – thesonyman101

答えて

1

上記のあなたのコメントを見てください。 "NameError:global name from_unit1 '"という理由は、from_unit1変数がまだ定義されていないためです。

あなたはfrom_unitとto_unitのconvert()メソッドのパラメータにアクセスすることを前提としていますか?だから、それは次のようになります。

def convert(from_unit, to_unit, values): 
    from__unit1 = conversions[from_unit] 
    from__unit2 = conversions[to_unit] 

を関数の内部で使用される変数はarguementに渡されたか、どこかのファイルで宣言されなければならない一致している必要があります。

私はどうしたら次のことは、これら2本のラインを入れている:機能外のファイルで宣言された場合は、Pythonの2倍のためにあなたは

編集して、関数の開始時に引用符なしで「グローバル変数名」を配置する必要があります変換内側():ビーイングはfrom_unit1とto__unit2 2つの変数が関数の外部からアクセスできないことである

new_values = values * (from__unit1/to__unit2) 
return str(new_value) + to__unit2 

理由。それらは関数内で作成され、関数がすべてのステップを完了すると、変数は消えます。

ので、関数は次のようなものになります。私はそれが望ましい結果を印刷する必要があります信じて

def convert(from_unit, to_unit, values): 
    from__unit1 = conversions[from_unit] 
    from__unit2 = conversions[to_unit] 
    new_values = values * (from__unit1/to__unit2) 
    return str(new_value) + to__unit2 

を。私たちに教えてください:)

+1

うん、それは私が言うつもりだった。 – thesonyman101

+0

ありがとうございました、私は2番目の部分を追加するときに働いています。しかし、それは2番目の部分を追加すると、 print(convert1(unit1、unit2、float(num1))行16、変換中 return str(new_value)+ to_unit2 TypeError: 'str'オブジェクトと 'float'オブジェクトを連結できません – john

+0

どのような連結であるか分かりませんが、+演算子を使用して2つの文字列を追加するだけです。結局のところ、あなたが連結している2つのものが両方の文字列ではないので、エラーを受け取ったばかりです。 戻り値の行では、str()関数を使用して1つの変数のみが変換されています。あなたは他の変数と同じことをするだけです。覚えておいてください、印刷結果の間にスペースはありません – shearos