2017-03-19 1 views
0

파일에서 데이터를 읽고이를 정수로 변환하고 총량을 계산하는 프로그램을 작성해야합니다. 지금까지 내가 가진 것입니다. 데이터 파일 "numdata.txt"의 번호는 78,93,85,100,81,76,94,77입니다. 내가 첫 번째 숫자 (78)이 표시됩니다 프로그램을 실행 한 후 예외 오류 메시지 중 하나가 올 때파이썬에서 예외를 사용하여 파일에서 데이터 읽기

def main(): 
total = 0 

try: 
    NumberFile = open('numdata.txt', 'r') 

    for line in NumberFile: 
     amount = float(line) 
     total += amount 
     print(format(total, ',.2f')) 

except IOError: 
    print('An error occurred trying to read the file.') 

except ValueError: 
    print('Non-numeric data found in the file.') 

except: 
    print('An error has occurred.') 

finally: 
    NumberFile.close() 


main() 

, 이상한 점은 때때로 다른 점이다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 나는 그것을 감사 할 것입니다. 나는 아직도 이것에 아주 새롭다 그래서 나와 함께 견뎌라.

def main(): 
infile = open('numdata.txt', 'r') 
num1 = int(infile.readline()) 
num2 = int(infile.readline()) 
num3 = int(infile.readline()) 
num4 = int(infile.readline()) 
num5 = int(infile.readline()) 
num6 = int(infile.readline()) 
num7 = int(infile.readline()) 
num8 = int(infile.readline()) 
infile.close() 
total = num1+num2+num3+num4+num5+num6+num7+num8 
average = total/8 
print('the total: ', total) 
print('the average: ', average) 

주() 내가 생각

그것은 꽤 아니다

하지만 작동 롤

:

나는 노력과 시도했지만 루프가 제대로 작동 할 수 없었다

그래서 나는이 길을가는 종료
+0

당신이 당신의 코드를 다시 포맷하십시오 할 수없는? – mdegis

+0

미안하지만 나는 당신의 코멘트를 보지 못했습니다. – hppylttletrees

답변

0
total = 0  

try: 
    NumberFile = open('numdata.txt', 'r') 

    for line in NumberFile: 
     amount = float(line) 
     total += amount 
     print(format(total, ',.2f')) 
except IOError: 
    print('An error occurred trying to read the file.') 
except ValueError: 
    print('Non-numeric data found in the file.') 
except: 
    print('An error has occurred.') 
finally: 
    NumberFile.close() 

첫 번째 반복 후 파일을 닫으면 나머지는 반복 할 수 없기 때문에 예외가 발생합니다.

finally 절을 NumberFile.close()으로 이동하면 잘못 된 경우에도 파일이 닫힙니다. 그러나 파이썬에서 파일을 읽고 쓰는 훨씬 더 좋은 방법은 같은 것을 보장하는 내장 된 방법 인 with keyword을 사용하는 것입니다.

total = 0 

with open('numdata.txt', 'r') as f: 
    for line in f: 
     try: 
      total += float(line) 
     except ValueError: 
      print('Non-numeric data found in the file.') 
      continue 
     finally: 
      print('{:.2f}'.format(total, ',.2f')) 
먼저 반복 NumberFile.close()에서 파일을 닫는
+0

의견을 보내 주셔서 감사합니다. 나는 작은 문제가있다. 일단 숫자가 모두 합산된다면, 결국 값 오류 메시지가 나타나고, 결국에는 나타나지 않을 것이다. 다시 도움에 감사드립니다 :) – hppylttletrees

+0

파일에 어떤 종류의 값이 있습니까? for 루프 내부에서''try :/except ValueError :'''를 옮기는 것이 더 나을 것이라고 생각합니다. 예외가 있다면 값을 출력하여 문제의 원인을 파악한 후 다음 반복에서'''continue'''를 수행하십시오. – Roundel

+0

파일은 단지 일반 메모장 파일입니다. 예외 오류를 이동하고 작동하도록 얻을 수 있는지보십시오. 또한 합계를 구하고, 평균을 찾아이를 백분율로 표시하는 방법을 생각하고있었습니다. 평균을 찾고 퍼센트로 변환하기위한 코딩을 추가해야합니까? 또는 format 함수가 백분율 부분을 처리합니까? – hppylttletrees

0

들여 제대로