0423 자료구조 1일차(~08)

박영선·2023년 4월 23일
0

리스트와 for 문

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

for i in range(len(cars)):
    print(cars[i])

for car in cars:
    print(car)

두 코드의 결과값은 똑같음

for문 이용한 내부리스트 조회

studentCnts = [[1,19],[2,20],[3,22],[4,18],[5,21]]  #반번호, 인원수 리스트

for i in range(len(studentCnts)):
    print('{}학급 학생수 : {}'.format(studentCnts[i][0],studentCnts[i][1])) 
    #변수를 두개를 줌으로써 리스트 안에 리스트를 참조
#이렇게도 가능
for classNo,cnt in studentCnts:
    print('{}학급 학생수 : {}'.format(classNo,cnt))

반별 평균 학생수 구하기

studentCnts = [[1,18],[2,19],[3,23],[4,21],[5,20],[6,22],[7,17]]  #반번호, 인원수 리스트
sum = 0
avg = 0

for classNo, cnt in studentCnts:
    print('{}학급 학생수 : {}명'.format(classNo,cnt))
    sum += cnt

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

과락 과목 구하기

minScore = 60
scores = [['국어',58],['영어',77],['수학',89],['과학',99],['국사',50]]

for item in scores:
    if item[1] < minScore:  #아이템0이 과목명 / 1이 점수
        print('과락과목 : {}, 점수 : {}'.format(item[0],item[1]))

for subject, score in scores:
    if score < minScore:
        print('과락과목 : {}, 점수 : {}'.format(subject,score))

for subject, score in scores:
    if score >= minScore: continue
    print('과락과목 : {}, 점수 : {}'.format(subject,score))
minScore = 60

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

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

for subject, score in scores:
    if score < minScore:
        print('과락 과목 : {}, 점수 : {}'.format(subject,score))
studentCnt = [[1,18],[2,19],[3,23],[4,21],[5,20],[6,22],[7,17]]

max_cnt = studentCnt[0][1]
min_cnt = studentCnt[0][1]
max_class = studentCnt[0][0]
min_class = studentCnt[0][0]

#최댓값, 최솟값 설정 후 크기 비교를 통해 설정 
print(max_cnt)
print(min_cnt)
print(max_class)
print(min_class)
# 최대 학생 수와 반 번호, 최소 학생 수와 반 번호 탐색
for i in range(len(studentCnt)):
    if studentCnt[i][1] > max_cnt:
        max_cnt = studentCnt[i][1]
        max_class = studentCnt[i][0]
    if studentCnt[i][1] < min_cnt:
        min_cnt = studentCnt[i][1]
        min_class = studentCnt[i][0]

# 결과 출력
print('학생 수가 가장 적은 반: {}반 ({}명)'.format(min_class, min_cnt))
print('학생 수가 가장 많은 반: {}반 ({}명)'.format(max_class, max_cnt))

리스트와 while문

studentCnts = [[1,18],[2,19],[3,23],[4,21],[5,20],[6,22],[7,17]]

sum = 0
avg = 0
n = 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(int(sum/len(studentCnts))))

과락구하기

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

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

학생 수 비교하기

studentCnt = [[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(studentCnt):
    if minCnt ==0 or minCnt> studentCnt[n][1]:
        minclassNo = studentCnt[n][0]
        minCnt = studentCnt[n][1]

    if maxCnt < studentCnt[n][1]:
        maxclassNo = studentCnt[n][0]
        maxCnt = studentCnt[n][1]

    n+=1

print('학생 수가 가장 적은 학급(학생수) : {}학급({}명)'.format(minclassNo,minCnt))
print('학생 수가 가장 많은 학급(학생수) : {}학급({}명)'.format(maxclassNo,maxCnt))
profile
데이터분석 공부 시작했습니다

0개의 댓글