2013-09-30 5 views
0
grades_list=open('student_grades.txt','r') 
for x in grades_list.readlines(): 
ft=1 
hf=0 
hm1=0 
hm2=0 
hm3=0 
hm4=0 
z=x.split() 

for w in z: 

    if ft==1: 
     ft=0 
     hm=0 
     name=w 
    else: 
     if hf==1: 
      hf=0 
      if hm==1: 
       hm1=int(w) 
      else: 
       if hm==2: 
        hm2=int(w) 
       else: 
        if hm==3: 
         hm3=int(w) 
        else: 
         if hm==4: 
          hm4=int(w) 
     else: 
      if w=='HM1': 
       hm=1 
       hf=1 
      else: 
       if w=='HM2': 
        hm=2 
        hf=1 
       else: 
        if w=='HM3': 
         hm=3 
         hf=1 
        else: 
         if w=='HM4': 
          hm=4 
          hf=1 

     list_values = [hm1, hm2, hm3, hm4] 
     average = float(sum(list_values))/len(list_values) 
     print hm1, hm2, hm3, hm4, average 

파일 I 수신 :파이썬 목록 정렬

로버트 0 90 80 92 65.5 에게 브리타니 98 92 0 0 47.5 돈 86 93 100 94 93.25 찰스 86 0 0 96 45.5을 샘 90 0 70 0 40.0

내가 데이터를 알파벳 순서로 표시하려고 노력하고 있어요 : 98 92 0 0 47.5 찰스 86 0 0 96 45.5에게

브리타니3210 돈 86 93 100 94 93.25 로버트 0 90 80 92 65.5 샘 90 0 70 0 40.0

I가 .sort하여 정렬 시도() 또는 정렬 (SET (X))하지만지고 오류를 유지한다. 파일 자체를 정렬하고 싶지는 않지만 파일을 읽은 후에는 숫자와 평균을 인쇄하기 전에 정렬해야합니다. 고맙습니다! 어떤 도움을 많이 주시면 감사하겠습니다!

+0

무한 중첩 대신'elif'를 사용할 수 있습니다. – zch

답변

0

다음을 시도 할 수는

lines = grades_list.readlines() 
lines.sort() 

다음은 split를 계속하고 각 행을 처리합니다.

+0

또는 동등하고 간결하게 :'lines = sorted (grades_list)'. 줄을 모두 훑어내어 한 번에 정렬합니다. – ShadowRanger