2 이차원 리스트 ranking의 한 행은 한 참가자의 순위와 득표수를 의미합니다. 열은 각각 순위, 참가자 이름, 이번 주 득표수, 지난주 득표수를 각각 의미하고요. 반복문에 ranking 리스트를 넣으면 각 참가자의 데이터를 사용할 수 있습니다.
1) 참가자의 순위와 이름은 열 인덱스 [0]과 [1]에 있습니다. 슬라이싱하면 row[:2]가 됩니다. 따라서 다음과 같이 코드를 작성하면 됩니다.
for row in ranking:
print(row[:2])
실행결과
[1, '라이언']
[2, '니니즈']
[3, '어피치']
[4, '프로도']
[5, '네오']
2) 이번 주 득표수는 열 인덱스 [2]에 있습니다. ‘이번 주 득표수가 50만 표가 넘는(초과한) 참가자의 이름과 이번 주 득표수를 출력하라’를 코드로 옮기면 다음과 같습니다.
for row in ranking:
if row[2] > 500000:
print(row[1:3])
실행결과
['라이언', 956412]
['니니즈', 861832]
['어피치', 796354]
['프로도', 534840]
3) 이 문제는 음수 인덱스를 사용해 작성해 봅시다. 이번 주 득표수 [-2]가 지난주 득표수 [-1]보다 적다면 그 차이를 출력하면 됩니다. 득표수 차이를 양수로 보려면 row[-1] - row[-2]로 계산하고, 음수로 ‘하락’의 의미를 나타내려면 row[-2] - row[-1]로 계산하면 됩니다.
for row in ranking:
if row[-2] < row[-1]:
print(row[1], row[-1] - row[-2], '표 하락') # 또는 print(row[1], row[-2] - row[-1])
실행결과
니니즈 65343 표 하락
프로도 329486 표 하락
네오 260471 표 하락
4) 이번 주 득표수 또는 지난주 득표수가 80만 표를 넘었을 경우이므로 조건문으로 작성합니다. 이때 조건이 두 가지이고 둘 중 하나만 충족해도 되므로 or로 연결합니다.
for row in ranking:
if 800000 < row[-2] or 800000 < row[-1]:
print(row[1], '80만 표 돌파!')
실행결과
라이언 80만 표 돌파!
니니즈 80만 표 돌파!
프로도 80만 표 돌파!