2017-04-18 1 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; furlongs, 660; 야드, 3; 의혹, 6; 피트, 1; 킬로미터, 3281.5; 미터, 3.2815; miles, 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 변수가 정의되지 않았기 때문입니다.

convert() 메소드 매개 변수 인 from_unit 및 to_unit에 액세스하려는 경우를 가정합니다. 그것은 다음과 같을 수 있도록 : 함수 내에서 사용

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

변수는이 아규먼트 전달 또는 어딘가에 파일에 선언해야합니다 일치해야합니다.

내가 할 것이다 다음 것은이 두 줄을 넣어 : 함수 외부 파일에 선언 된 경우, 파이썬 2 배에 대해 당신은

편집 함수의 시작 부분에 따옴표없이 "글로벌 VARIABLE_NAME"을 넣어해야합니다 변환() 내부의

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

고마워요, 전나무 부분이 작동했지만 두 번째 부분을 추가하면 .. 22 행을 읽습니다. 줄 16을 변환시로 변환합니다. return str (new_value) + to__unit2 TypeError : 'str'및 'float'객체를 연결할 수 없습니다. – john

+0

연결이 무엇인지 알기는 모르지만 간단히 설명하면 + 연산자를 사용하여 두 문자열을 더하는 것입니다.따라서 연결된 두 가지가 두 문자열이 아니기 때문에 오류가 발생했습니다. 리턴 라인에서 하나의 변수 만 str() 함수를 사용하여 변환되었습니다. 다른 변수와 동일하게 처리하면됩니다. 명심하십시오, 인쇄 된 결과 사이에 공간이 없습니다 – shearos