2013-06-07 1 views
1

내 프로그램에 포함시키고 자하는 파일은 숫자 목록으로 채워져 있습니다. 평균을 표시하려면 해당 파일을 정수로 변환해야합니다.파일의 정수 목록을 평균하는 방법은 무엇입니까?

import os.path 

def main(): 
    try: 
     filename = input("name of the file: ") 
     print(os.path.abspath(filename)) 
    except IOError: 
     print("File not found") 
    except ValueError: 
     print("Cannot convert into an integer") 

main() 
+0

파일 목록 * 숫자 목록 –

+1

한 줄에 하나의 번호가 표시됩니까? 숫자가 많은 한 줄? 여러 개의 숫자가있는 줄이 많이 있습니까? –

답변

0

일부의 생각 :

open 당신에게 iterable있는 file object을 얻을 것이다. 파일을 반복 할 때 각 행을 순서대로 출력합니다. int은 유형뿐만 아니라 생성자입니다. 문자열을 전달할 수 있으며 문자열을 int으로 변환 할 수있는 경우 정수 값을 반환합니다.

마지막으로, 반복 가능한 숫자를 취할 수있는 내장 함수 sum을보고 해당 숫자의 합계를 구할 수 있습니다.

예제 구현 :

from os.path import abspath 

def get_file_sums(): 
    name = input("Please provide a file name:") 
    with open(abspath(name), "r", encoding="utf-8") as fo: 
     result = sum(int(line, base=10) for line in fo) 
     print("The result is:", result) 

if __name__ == "__main__": 
    get_file_sums() 
0

이 작동합니다 다음 nums.extend은 한 줄에 여러 개의 번호를 (조금 복잡 그 이유는)이 파일을 지원

nums = [] 
with open('nums.txt', 'r') as f: 
    for line in f: 
     nums.extend([int(x) for x in line.split()]) 
print sum(nums)/len(nums) 

.

0
def compute_average(path): 
    with open(path) as fp: 
     values = map(int, fp.read().split()) 
    return sum(values)/len(values) 
관련 문제