Day29. 자료구조 (1~2)

Junghwan Park·2023년 5월 17일
0

스터디노트

목록 보기
30/54

자료구조란?


리스트(List)


리스트 아이템 조회


리스트 길이


리스트와 for문 (01)


리스트와 for문 (02)


리스트와 while문 (01)

  • 리스트와 while문(1)

while문을 이용하면 다양한 방법으로 아이템 조회가 가능하다.

cars = ['그랜저', '소나타', '말리부', '카니발', '쏘렌토']

n = 0
while n < len(cars):
    print(cars[n])
    n += 1


n = 0
flag = True
while flag:
    print(cars[n])
    n += 1

    if n == len(cars):
        flag = False

n = 0
while True:
    print(cars[n])
    n += 1

    if n == len(cars):
        break

while문을 이용하면 다양한 방법으로 아이템 조회가 가능하다.

studentCnts = [[1, 19], [2, 20], [3, 22], [4, 18], [5, 21]]

n = 0
while n < len(studentCnts):
    print('{}학급 학생수 : {}'.format(studentCnts[n][0], studentCnts[n],[1]))
    n += 1
  • 아래 표와 리스트를 이용해서 학급별 학생 수와 전체 학생 수 그리고 평균 학생수를 출력해보자.


    학급 1학급 2학급 3학급 4학급 5학급 6학급 7학급
    18 19 23 21 20 22 17
n = 0
sum = 0
avg = 0

while n < len(studentCnts):
    classNo = studentCnts[n][0]
    cnt = studentCnts[n][1]
    print('{}학급 학생수 : {}명'.format(classNo, cnt))

    sum += cnt
    n += 1

print('전체 학생 수 : {}명'.format(sum))
print('평균 학생 수 : {}명'.format(len(studentCnts)))

리스트와 while문 (02)

  • while문과 if문을 이용해서 과락 과목 출력하기
minScore = 60
scores = [
    ['국어', 58],
    ['영어', 77],
    ['수학', 89],
    ['과학', 99],
    ['국사', 50]]

n = 0
while n < len(scores):
    if scores[n][1] < minScore:
        print('과락 과목 : {}, 점수 : {}'.format(scores[n][0], scores[n][1]))
    n += 1

continue를 이용한 방법

n = 0
while n < len(scores):
    if scores[n][1] >= minScore:
        n += 1  # 여기에 n + 1 해줘야 하는 것 잘 기억하기!
        continue

    print('과락 과목 : {}, 점수 : {}'.format(scores[n][0], scores[n][1]))
    n += 1
  • while문을 이용해서 사용자가 국어, 영어, 수학, 과학, 국사 점수를 입력하면 과락 과목과 점수를 출력하는 프로그램을 만들어보자.
minScore = 60

korScore = int(input('국어 점수 입력 : '))
engScore = int(input('영어 점수 입력 : '))
matScore = int(input('수학 점수 입력 : '))
sciScore = int(input('과학 점수 입력 : '))
hisScore = int(input('국사 점수 입력 : '))

listScore = [['국어', korScore], ['영어', engScore], ['수학', matScore], ['과학', sciScore], ['국사', hisScore]]

for n in range(len(listScore)):
    if listScore[n][1] < minScore:
        print('과락 과목 : {} , 과목 점수 : {}'.format(listScore[n][0], listScore[n][1]))
  • while문을 이용해서 학급 학생 수가 가장 작은 학급과 가장 많은 학급을 출력해보자.
    학급 1학급 2학급 3학급 4학급 5학급 6학급 7학급
    학생수 18 19 23 21 20 22 17
studentCnts = [[1, 18],
               [2, 19],
               [3, 23],
               [4, 21],
               [5, 20],
               [6, 22],
               [7, 17]]

minClassNo = 0  # 학급수
maxClassNo = 0  # 학급수
minCnt = 0  # 학생수
maxCnt = 0  # 학생수

n = 0
while n < len(studentCnts):

    if minCnt == 0 or minCnt > studentCnts[n][1]:
        minClassNo = studentCnts[n][0]  # 가장 작은 학급 과 학생수를 구하는 부분
        minCnt = studentCnts[n][1]

    if maxCnt < studentCnts[n][1]:
        maxClassNo = studentCnts[n][0]  # 가장 작은 학급 과 학생수를 구하는 부분
        maxCnt = studentCnts[n][1]

    n += 1

print('학생 수가 가장 적은 학급(학생수) : {}학급 ({}명)'.format(minClassNo, minCnt))
print('학생 수가 가장 많은 학급(학생수) : {}학급 ({}명)'.format(maxClassNo, maxCnt))

# 다시 한번 복습 하기!


enumerate()함수

  • enumerate()함수

인덱스와 아이템을 한번에 조회하자!


enumerate()함수를 이용하면 아이템을 열거할 수 있다.


sports = ['농구', '수구', '축구', '마라톤', '테니스']


for i in range(len(sports)):
print('{} : {}'.format(i, sports[i]))


for idx, value in enumerate(sports):
print('{} : {}'.format(idx, value))

  • enumerate()는 문자열에도 적용할 수 있다.
str = 'Hello python.'
for idx, value in enumerate(str):
    print('{} : {}'.format(idx, value))

for a, b in enumerate(str):
    print('{} : {}'.format(a, b))
  • 실습1
    가장 좋아하는 스포츠가 몇 번째에 있는지 출력하는 프로그램을 만들어보자.
sports = ['농구', '수구', '축구', '마라톤', '테니스']
favoriteSport = input('가장 좋아하는 스포츠 입력 : ')

bestSportIdx = 0

for idx, value in enumerate(sports):
    if value == favoriteSport:
        bestSportIdx = idx + 1  # idx가 0부터 시작하므로 1을 더해준다!

print('{}(은)는 {}번째에 있습니다.'.format(favoriteSport, bestSportIdx))
  • 실습2
    사용자가 입력한 문자열에서 공백의 개수를 출력해보자.

message = input('메시지 입력 : ')
cnt = 0
for idx, value in enumerate(message):
if value == ' ': # 공백
cnt += 1

print('공백 개수 : {}'.format(cnt))


이 글은 제로베이스 데이터 취업 스쿨의 강의자료 일부를 발췌하여 작성되었습니다.

profile
안녕하세요 반갑습니다^^

0개의 댓글