2014-03-07 3 views
1

파일에서 통화 환율을 계산하는 프로그램을 작성했지만 출력 행을 출력합니다. 논리 오류가 있지만 찾을 수 없습니다.CSV 파일 파이썬 검색

import csv 
exRtFile = open ('exchangeRate.csv') 
exchReader = csv.reader(exRtFile) 
newCurrency = raw_input("Please enter the currency you would like to convert to: ") 
for row in exchReader: 
     currency = row[0] 
     if currency == newCurrency: 
      newRt = row[1] 
      print(newRt) 
      break 

print("Sorry, that is not a valid currency") 

파일 :

내가 제대로 질문을 이해한다면
Pound Sterling,1 
Euro,1.22 
US Dollar,1.67 
Japanese Yen,169.948 
+0

:하지만 더 좋은 솔루션은 for 루프에 대한 else 절은 무엇입니까? 기본값은 쉼표이지만 파일에는 쉼표가 표시되지 않습니다. –

+0

예상되는 결과물과 실제로 얻는 것과 같이 더 자세히 설명해 주실 수 있습니까? –

+0

CSV (쉼표로 구분) in excel – user3165683

답변

2

, 문제는이 파일에 통화를 발견하면 그것도 "Sorry..." 행을 인쇄 점이다. 이를 방지하기 위해 add an else to the for loop을 사용할 수 있습니다. 루프 break없이 즉 정상적으로 종료되면

for row in exchReader: 
    currency = row[0] 
    if currency == newCurrency: 
     newRt = row[1] 
     print(newRt) 
     break 
else: 
    print("Sorry, that is not a valid currency") 

이 방법은 else 블록만을 실행한다.

+0

12 초 만에 나를 때려! >; -] – Alfe

2

구분 기호 또는 사용자의 csv 파일을 지정해야합니다. 나에게 그렇게, 탭으로 구분 된 다음과 같습니다

exchReader = csv.reader(exRtFile, delimiter='\t') 

은 그럼 당신은 break이뿐만 아니라 전체 프로그램에서, 루프의 돌발 것을 이해해야한다. 이를 위해서는 sys.exit()을 사용해야합니다. 당신이 사용하는 어떤 구분

for row in exchReader: 
    currency = row[0] 
    if currency == newCurrency: 
     newRt = row[1] 
     print(newRt) 
     break 
else: 
    print("Sorry, that is not a valid currency") 
+0

오, 질문에서 쉼표로 탭을 변경했습니다. 그런 다음'delimiter = ',' '를 사용하십시오 (그러나 기본값 일 수도 있습니다). – Alfe