- 튜플 아이템 정렬
- 튜플은 수정이 불가하기 때문에 리스트로 변환 후 정렬하자!
('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은'] list() 자료형 변환
['강호동', '김지은', '박승철', '박찬호', '이용규', '홍길동'] sort() 오름차순 정렬
('강호동', '김지은', '박승철', '박찬호', '이용규', '홍길동') tuple() 자료형 변환
- sorted() 함수를 이용하면 튜플도 정렬할 수 있다.
('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
↓
오름차순 정렬 ← sorted()
↓
['홍길동', '이용규', '박찬호', '박승철', '김지은', '강호동']
↓
sorted() 리스트 자료형을 반환한다!
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) # 리스트형으로 정렬했으니 다시 튜플로 변환!
숫자도 가능!
숫자도 가능!
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))
- 튜플을 리스트로 변환하지 않고 바로 변환하기!
sorted() 함수 사용!
students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
sortedStudents = sorted(students)
print('sortedStudents type : {}'.format(type(sortedStudents)))
print('sortedStudents : {}'.format(sortedStudents))
- 실습
튜플로 정의된 점수표에서 최저 및 최고 점수를 삭제한 후 총점과 평균을 출력해 보자.
점수1 9.5
점수2 8.9
점수3 9.2
점수4 9.8
점수5 8.8
점수6 9.0
playerScore = (9.5, 8.9, 9.2, 9.8, 8.8, 9.0)
print('playerScore : {}'.format(playerScore))
sortedplayerScore = sorted(playerScore)
playerScore = list(playerScore)
playerScore.sort()
print('playerScore : {}'.format(playerScore))
print('sortedplayerScore : {}'.format(sortedplayerScore))
playerScore.pop(0)
playerScore.pop(len(playerScore) - 1)
playerScore = tuple(playerScore)
print('playerScore : {}'.format(playerScore))
- 튜플과 for문(1)
- for문을 이용해서 튜플 아이템을 참조(조회)하자!
for문을 이용하면 튜플의 아이템을 자동으로 참조할 수 있다.
cars = '그랜저', '소나타', '말리부', '카니발', '쏘렌토' # 괄호를 생략해도 튜플로 생성된다!
for i in range(len(cars)):
print(cars[i])
for car in cars:
print(car)
cars = '그랜저', '소나타', '말리부', '카니발', '쏘렌토' # 괄호를 생략해도 튜플로 생성된다!
for i in range(len(cars)):
print(cars[i])
for car in cars:
print(car)
- for문을 이용하면 튜플의 아이템을 자동으로 참조할 수 있다.
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학급 18
2학급 19
3학급 23
4학급 21
5학급 20
6학급 22
7학급 17
studentCnts = ((1, 18), (2, 19), (3, 23), (4, 21), (5, 20), (6, 22), (7, 17))
sum = 0
avg = 0
# for i in range(len(studentCnts)):
# print('{}학급 학생수 : {}'.format(studentCnts[i][0], studentCnts[i][1]))
for classNo, cnt in studentCnts:
sum += cnt
print('{}학급 학생수 : {}'.format(classNo, cnt))
avg = sum / len(studentCnts)
print('전체 학생수 : {}'.format(sum))
print('평균 학생수 : {}'.format(avg))
- for문을 이용한 조회
- for문과 if문을 이용해서 과락 과목 출력하기
minScore = 60
scores = (
('국어', 58),
('영어', 77),
('수학', 89),
('과학', 99),
('국사', 50))
for item in scores:
if item[1] < minScore:
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))
- 실습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))
- 실습2
아래의 표와 튜플을 이용해서 학급 학생 수가 가장 작은 학급과 가장 많은 학급을 출력해보자.
학급 학생수
1 18
2 19
3 23
4 21
5 20
6 22
7 17
studentsCnt = ((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 studentsCnt:
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))
- 튜플과 while문(1)
- while문을 이용한 튜플 아이템 참조!
while문을 이용하면 다양한 방법으로 아이템 조회가 가능하다.
cars = ('그랜저', '소나타', '말리부', '카니발', '쏘렌토')
# 방법1
n = 0
while n < len(cars):
print(cars[n])
n += 1
# 방법2
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
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 18
2 19
3 23
4 21
5 20
6 22
7 17
studentsCnt = ((1, 18),
(2, 19),
(3, 23),
(4, 21),
(5, 20),
(6, 22),
(7, 17))
sum = 0
n = 0
while n < len(studentsCnt):
classNo = studentsCnt[n][0]
cnt = studentsCnt[n][1]
print('{}학급 학생수 : {}명'.format(classNo, cnt))
sum += cnt
n += 1
print('전체 학생 수 : {}명'.format(sum))
print('평균 학생 수: {}명'.format(sum / len(studentsCnt)))
- 튜플과 while문(2)
- 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
# continue를 사용한 방법
n = 0
while n < len(scores):
if scores[n][1] >= minScore:
n += 1
continue
print('과락 과목 : {}, 점수 : {}'.format(scores[n][0], scores[n][1]))
n += 1
- 실습1
while문을 이용해서 사용자가 국어, 영어, 수학, 과학, 국사 점수를 입력하면 과락 과목과 점수를 출력하는 프로그램을 만들어보자.
minScore = 60
korScore = int(input('국어 점수 : '))
engScore = int(input('영어 점수 : '))
matScore = int(input('수학 점수 : '))
sciScore = int(input('과학 점수 : '))
hisScore = int(input('국사 점수 : '))
scores = (('국어', korScore),
('영어', engScore),
('수학', matScore),
('과학', sciScore),
('국사', hisScore))
n = 0
while n < len(scores):
if scores[n][1] < minScore:
print('과락 과목 : {}, 점수 : {}'.format(scores[n][0], scores[n][1]))
n += 1
- 실습2
학급별 학생 수가 다음과 같이 정의되어 있을 때, while문을 이용해서
학급 학생수
1 18
2 19
3 23
4 21
5 20
6 22
7 17
studentsCnt = ((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(studentsCnt):
if minCnt == 0 or minCnt > studentsCnt[n][1]: # 이 부분 다시 이해해 보기!
minClassNo = studentsCnt[n][0]
minCnt = studentsCnt[n][1]
if maxCnt < studentsCnt[n][1]:
maxClassNo = studentsCnt[n][0]
maxCnt = studentsCnt[n][1]
n += 1
print('학생 수가 가장 적은 학급(학생수) : {}학급 ({}명)'.format(minClassNo, minCnt))
print('학생 수가 가장 많은 학급(학생수) : {}학급 ({}명)'.format(maxClassNo, maxCnt))