파이썬 리스트관련 질문

조회수 1193회

이미지

이 문제에서 4번을 해결해 보려고

for i in range(len(table[0])) :
  print(table[0][i])
  sum=0
  for j in range(1,len(table)) :
    for k in range(1,len(table[j])) :
      sum=sum+table[j][k]
  print("총점은",sum,"평균은",sum/(len(table)-1))

이렇게 했는데

이미지

이런값이 나와버려서 바깥 for문을 먼저 반복시키려고 했는데 안되서 for문을 하나만 써보려고

student=["A","B","C","D","E"]
score1=["Korean",89,90,75,96,75]
score2=["English",92,65,82,65,98]
score3=["Math",78,88,68,92,45]
score4=["Science",66,78,88,95,85]

table=[student,score1,score2,score3,score4]

for i in range(len(table[0])) :
  print(table[0][i],"학생")
  sum=0
  for j in range(1,5) :
    sum=table[1][j]+table[2][j]+table[3][j]+table[4][j]
  print("총점은",sum,"평균은",sum/(len(table)-1))

이렇게 했는데 이제는

이미지

이렇게 총점도 틀리게 나오고 각 학생별 점수도 똑같이 나와버려서 이제는 어떻게 해결해야할지 모르겠습니다. 8시간동안 이문제만 잡고 어떻게든 해보려고 하는데 for문을 뒤집는 방법도 모르겠고 왜 저렇게 똑같은 값만 나오는지도 모르겠습니다. 고수님들 도와주세요.

1 답변

  • student=["A","B","C","D","E"]
    score1=["Korean",89,90,75,96,75]
    score2=["English",92,65,82,65,98]
    score3=["Math",78,88,68,92,45]
    score4=["Science",66,78,88,95,85]
    
    table=[student,score1,score2,score3,score4]
    
    for i in range(len(table[0])) :
        print(table[0][i],"학생")
        sum=0
        sum=table[1][i+1]+table[2][i+1]+table[3][i+1]+table[4][i+1]
        print("총점은",sum,"평균은",sum/(len(table)-1))
    

    이렇게 하면 되고요.

    이렇게 생각하며 문제부분을 찾아간 것 같아요. 참고하세요.

    1. 학생마다 점수가 다른데, 왜 모두 같은 값으로 계산될까?
    2. 학생을 구분하는 인덱스는 첫번째 for 문의 i 이다.
    3. i 인덱스가 각 학생의 점수를 구분하는 것이겠다.
    4. 이전에 틀렸던 코드에서는 sum을 구하는 코드에서 i인덱스는 전혀 생관이 없었다. 아하, 그래서 모두 같은 계산이 나왔구나.
    5. 옳은 계산은 i 인덱스가 식에 포함되어야 한다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)