2017-04-18 102 views
-2

下表包含一些以英尺爲單位的長度。需要幫助:Python 2.7.13單元轉換

1英寸= .083333英尺; 1杆= 16.5英尺; 1碼= 3.28155英尺; 1 furlong = 660英尺; 1米= 3.28155英尺; 1公里= 3281.5英尺; 1 fathom = 6英尺; 1英里= 5280英尺。

編寫一個程序,顯示九種不同的度量單位;要求單位轉換,要轉換的單位以及要轉換的數量;然後顯示轉換的數量。

使用文件Units.txt創建一個字典,該字典提供給定單位長度的英尺數。

該conversions.txt文件讀取:

英寸,.083333;弗朗朗,660;碼數3; fathoms,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

我有多個問題,我是新來編碼,但是當我現在運行它說NameError:全球名'from_unit1'沒有定義 – john

+1

我會幫你。 – thesonyman101

回答

1

只看你的評論上面。它說「NameError:全球名稱from_unit1'」的原因是因爲還沒有定義from_unit1變量。

我假設你打算訪問convert()方法的參數from_unit和to_unit?因此,它可能是這樣的:

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

函數內部使用的變量必須匹配arguement傳遞,或者必須在某個文件中聲明。如果函數外部文件中聲明,對Python的2倍,你將需要把「全球變量名」不帶引號在你的函數開始

編輯:

接下來的事情我會做的就是把這兩行內轉換():

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

原因是在於,兩個變量from_unit1和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

謝謝,第一部分工作,但當我添加第二部分..它readline 22, print(convert(unit1,unit2,float(num1)))line 16,in convert return str(new_value)+ to__unit2 TypeError:不能連接'str'和'float'對象 – john

+0

不知道你是否知道連接是什麼,但不適用於簡單解釋,它只是使用+運算符將兩個字符串相加。所以你只是收到一個錯誤,因爲你連接的兩件事情不是兩個字符串。 在你的返回行中,只有一個變量使用str()函數進行了轉換。你只需要對其他變量做同樣的事情。請記住,在打印結果 – shearos