2016-09-29 2 views
-1

파이썬에서 파일의 최고, 평균 및 최저 점수를 인쇄하려고합니다. 그러나 나는 오류 파일은 다음과 같습니다인쇄 파일의 최고, 평균, 최저 점수

ValueError: invalid literal for int() with base 10. 

RESULTS.TXT 점점 계속 :

Johnny-8.65 
Juan-9.12 
Joseph-8.45 
Stacey-7.81 
Aideen-8.05 
Zack-7.21 
Aaron-8.31 

그리고 내 코드는 파일에 제공이

func1={} 
with open('results.txt','r') as f: 
    for line in f: 
     name,value=line.split('-') 
     value=float(value) 
     if name in func1.keys(): 
      func1[name].append(value) 
     else: 
      func1[name]=[value] 

#compute average: 
for name in func1: 

    average=sum(func1[name])/len(func1[name]) 
    print("{} : {}".format(name,average)) 
+1

네는'8.65'이 int로하지 않습니다. 그것은 부유물입니다. –

+1

'8.65'이 (가) int가 아닙니다 –

+0

5 행을 값 대신 float로 변경했습니다.이 오류가 발생합니다. 가장 최근에 마지막으로 호출 한 전화 번호 : 파일 "C : /Users/Trent/Desktop/CreativeProgrammingChapter4.py" , 5 행, 값 = int (float) 또는 float TypeError : int() 인수는 'type'이 아닌 문자열이거나 바이트와 비슷한 객체 또는 숫자 여야합니다 >>> –

답변

0

값처럼 보이는 아니 int 유형입니다. 당신의 접근을 위해 당신은 float() 사용할 수 있습니다

value = float(value) 

당신이 추출해야하는 경우 정수 :

s = "123" 
num = int(s) 

num = 123

당신이 부동 번호 추출해야하는 경우 :

s = "123.12" 
num = float(s) 

num = 123.12

당신은 할 수 있습니다. 문서에 efer :

Parse String to Float or Int 방법 사전에서 최대 키/값을 참조 얻을 : get max value 또한 get max key

,이 문서를 읽을 Datatypes #1

또한 파이썬에서 숫자 데이터 형식을 변환하는 방법에 대한 좋은 게시물이 있습니다. 보다 명확한 질문을하는 데 도움이 될 것입니다. 이 스레드에있는 모든 사람으로 How do I ask and answer homework questions?

+0

그래서 값을 float()로 변경하고 이름을 인쇄하지만 0.00 대신에 0.00을 인쇄합니다. 실제로 정확한 내용을 인쇄하고 있습니까? –

+0

@TrentonHallmark 내 게시물에서처럼 변경하십시오. –

+0

@TrentonHallmark에서 귀하의 발급이 완료 되었습니까? –

0

플로트INT을 변경해야합니다 제안했다. 위의 귀하의 의견에 대하여. 사용하시는 분

value=int(float) ! 

플로트는 괄호 안의 숫자 여야합니다. 이처럼

value=float(value). 

나는 코드를 실행하고 나를 위해 일했다.

+0

고맙습니다.이 작업을 완료했습니다. 이제 값을 인쇄하고 있습니다.이 값을 인쇄하면 최고, 최저 및 최저로 인쇄 할 수 있습니다. –

0

이 시도 :

scores={} 
highest_score=0.0 
highest='' 
lowest_score=100.0 
lowest='' 
average=0.0 
sums=0.0 

files=open("results.txt","r").readlines() 
for lines in files[0:]: 
    line=lines.split("-") 
    scores[line[0]]=line[1].strip() 

for key,value in scores.items(): 
    if float(value)<lowest_score: 
     lowest_score=float(value) 
     lowest=key 

    if float(value)>highest_score: 
     highest_score=float(value) 
     highest=key 

    sums=sums+float(value) 

print "highest score:",highest_score," of ",highest 
print "lowest score:",lowest_score," of ",lowest 
print "average: ",sums/len(scores)