[3주차4일차] Chapter 04_자료구조/알고리즘 자료구조7

HA_·2023년 10월 24일
0

튜플 아이템 정렬

튜플 정렬

튜플은 수정이 불가하기 때문에 리스트로 변환 후 정렬하자.
sort() 함수를 이용하면 아이템을 정렬할 수 있다.

# 문자일 때
students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
print('students type: {}' .format(type(students)))
print('students: {}' .format(students))

students = list(students)
students.sort()
print('students type: {}' .format(type(students)))
print('students: {}' .format(students))

students = tuple(students)
print('students type: {}' .format(type(students)))
print('students: {}' .format(students))


# 숫자일 때
numbers = (2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3,14)
print('numbers type: {}' .format(type(numbers)))
print('numbers: {}' .format(numbers))

numbers = list(numbers)
numbers.sort(reverse=True)
print('numbers type: {}' .format(type(numbers)))
print('numbers: {}' .format(numbers))

numbers = tuple(numbers)
print('numbers type: {}' .format(type(numbers)))
print('numbers: {}' .format(numbers))
# 결괏값:
students type: <class 'tuple'>
students: ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
students type: <class 'list'>
students: ['강호동', '김지은', '박승철', '박찬호', '이용규', '홍길동']
students type: <class 'tuple'>
students: ('강호동', '김지은', '박승철', '박찬호', '이용규', '홍길동')
numbers type: <class 'tuple'>
numbers: (2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3, 14)
numbers type: <class 'list'>
numbers: [100, 50, 35, 17, 14, 9, 7, 3, 2, 1, 0.12]
numbers type: <class 'tuple'>
numbers: (100, 50, 35, 17, 14, 9, 7, 3, 2, 1, 0.12)

sorted()

sorted() 함수를 이용하면 튜플도 정렬할 수 있다.
sorted()sms 리스트 자료형을 반환한다.

students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')

sortedStudents = sorted(students)
print('students type: {}' .format(type(sortedStudents)))
print('students: {}' .format(sortedStudents))
# 결괏값:
students type: <class 'list'>
students: ['강호동', '김지은', '박승철', '박찬호', '이용규', '홍길동']

튜플과 for문(1)

for문을 이용한 조회

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))
# 결괏값:
1학급 학생수: 19
2학급 학생수: 20
3학급 학생수: 22
4학급 학생수: 18
5학급 학생수: 21
1학급 학생수: 19
2학급 학생수: 20
3학급 학생수: 22
4학급 학생수: 18
5학급 학생수: 21

튜플과 for문(2)

for문을 이용한 조회

for문과 if문을 이용해서 과락 과목 출력하기

실습1

사용자가 국어, 영어, 수학, 과학, 국사 점수를 입력하면 과락 과목과 점수를 출력하는 프로그램을 만들어보자.

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))
# 결괏값:
국어 점수 입력: 80
영어 점수 입력: 59
수학 점수 입력: 66
과학 점수 입력: 70
국사 점수 입력: 50
과락 과목: 영어, 점수: 59
과락 과목: 국사, 점수: 50

실습2

아래의 표와 튜플을 이용해서 학급 학생 수가 가장 작은 학갑과 가장 많은 학급을 출력해보자.

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

minClassNo = 0; maxClassNo = 0
minCnt = 0; maxCnt = 0

for classNo, cnt in studentCnts:
    if minCnt == 0 or minCnt > cnt:
        minClassNo = classNo
        minCnt = cnt

    if maxCnt < cnt:
        maxClassNo = classNo
        maxCnt = cnt

print('학생 수가 가장 적은 학급(학생수): {}학급({}명)' .format(minClassNo, minCnt))
print('학생 수가 가장 많은 학급(학생수): {}학급({}명)' .format(maxClassNo, maxCnt))
# 결괏값:
학생 수가 가장 적은 학급(학생수): 7학급(17명)
학생 수가 가장 많은 학급(학생수): 3학급(23명)

튜플과 while문

while문을 이용한 조회

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

# 방법1
cars = '그랜저', '쏘나타', '말리부', '카니발', '쏘렌토'

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

# 방법2 - flag 변수 사용
n = 0
flag = True
while flag:
    print(cars[n])
    n += 1

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

# 방법3
n = 0
while True:
    print(cars[n])
    n += 1

    if n == len(cars):
        break
# 결괏값:
그랜저
쏘나타
말리부
카니발
쏘렌토
그랜저
쏘나타
말리부
카니발
쏘렌토
그랜저
쏘나타
말리부
카니발
쏘렌토

튜플과 while문

while문을 이용한 조회

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
# 결괏값:
과락 과목: 국어, 점수: 58
과락 과목: 국사, 점수: 50

실습2

아래의 표와 튜플을 이용해서 학급 학생 수가 가장 작은 학갑과 가장 많은 학급을 출력해보자.

# 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



# 실습2
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))
# 결괏값:
학생 수가 가장 적은 학급(학생수): 7학급(17명)
학생 수가 가장 많은 학급(학생수): 3학급(23명)

0개의 댓글