튜플: 리스트와 비슷하지만 아이템 추가/변경/삭제 불가
import random
randNumber = random.sample(range(1,11),5)
userNumber = int(input('숫자 입력: '))
if userNumber in randNumber:
print('빙고! ')
else: print('다음 기회에~')
튜플 결합: + 💥extend(): 튜플에서는 사용할 수 없음
myNumbers = (1,3,5,6,7)
friendNumbers = (2,3,5,8,10)
for number in friendNumbers:
if number not in myNumbers:
myNumbers += (number, )
print(myNumbers)
(number, )
: 튜플로 변환
튜플슬라이싱: [n:m]/slice()함수
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철']
students[1:4] = ('park chanho', 'lee yonggyu', 'gang hodong')
print(type(students)) #-> list
리스트와 튜플 비교
자료형 변환: tuple(), list()
튜플 정렬
students = '홍길동', '박찬호', '이용규', '강호동', '박승철'
sortedStudents = sorted(students)
print(sortedStudents)
출력값: ['강호동', '박승철', '박찬호', '이용규', '홍길동'] (리스트형으로 변환)
for문을 이용한 참조(조회)
for i in range(len(cars)):
print(cars[i])
for car in cars:
print(car)
내부튜플 조회
studentCnts = (1,19), (2,20), (3,22), (4,18), (5,21)
for classNo, cnt in studentCnts:
print('{}학급 학생수: {}'.format(classNo, cnt))
🔔 연습문제
Q. 학급별 학생수 가장 작은/많은 학급 출력
students = ((1,18),(2,19),(3,23),(4,21),(5,20))
minCnt = 0; maxCnt = 0
minClass = 0; maxClass = 0
for classNo, cnt in students:
if minCnt == 0 or cnt < minCnt:
minClass = classNo
minCnt = cnt
if cnt > maxCnt:
maxClass = classNo
maxCnt = cnt
print('학생 수가 가장 적은 학급(학생수): {}학급({}명)'.format(minClass, minCnt))
print('학생 수가 가장 많은 학급(학생수): {}학급({}명)'.format(maxClass, maxCnt))
students = ((1,18),(2,19),(3,23),(4,21),(5,20))
minCnt = 0; maxCnt = 0
minClass = 0; maxClass = 0
n=0
while n < len(students):
if minCnt == 0 or students[n][1] < minCnt:
minClass = students[n][0]
minCnt = students[n][1]
if students[n][1] > maxCnt:
maxClass = students[n][0]
maxCnt = students[n][1]
n+=1
print('학생 수가 가장 적은 학급(학생수): {}학급({}명)'.format(minClass, minCnt))
print('학생 수가 가장 많은 학급(학생수): {}학급({}명)'.format(maxClass, maxCnt))
딕셔너리: 키(key)와 값(value)이용해서 자료 관리, 인덱스 존재x
딕셔너리 조회
students = {'s1':'홍길동','s2':'박찬호','s3':'이용규','s4':'박승철'}
print(students['s1'])
-> 없는 key 조회: 에러
students = {'s1':'홍길동','s2':'박찬호','s3':'이용규','s4':'박승철'}
print(students.get('s1'))
-> 없는 key 조회: 에러 발생x(출력값: None)
딕셔너리 추가/수정
딕셔너리이름[key]=value 형태로 아이템 추가/수정
students = {'s1':'홍길동','s2':'박찬호','s3':'이용규','s4':'박승철'}
students['s5']='박지호'
myInfo = {'이름':'홍길동','성별':'남','이메일':'gildong@naver.com'}
myInfo['이메일'] = 'gildong@gmail.com'
🔔연습문제
Q. 0부터 10까지의 각각의 정수에 대한 팩토리얼을 딕셔너리에 추가
factorialDic = {}
for i in range(11):
if i == 0:
factorialDic[i] = 1
else:
for j in range(1, i+1):
factorialDic[i] = factorialDic[i-1]*j
🔔 연습문제
키는 하루에 0.01씩 커지고 몸무게는 0.3씩 줄어든다. 30일 후 BMI 구하기
myBodyInfo = {'이름':'gildong', '몸무게': 83, '신장':1.8}
myBMI = myBodyInfo['몸무게'] / (myBodyInfo['신장']**2)
date = 0
while True:
date +=1
myBodyInfo['몸무게'] -= 0.3
print('몸무게: {}'.format(round(myBodyInfo['몸무게'], 2)))
myBodyInfo['신장'] += 0.001
print('신장: {}'.format(round(myBodyInfo['신장'], 2)))
if date >=30:
break
keys()
: 키 조회/values()
: 값 조회
myInfo = {'이름':'홍길동', '성별':'남', '메일':'gildong@gmail.com'}
ks = myInfo.keys()
print(ks)
print(type(ks))
vs = myInfo.values()
print(vs)
print(type(vs))
출력값:
dict_keys(['이름', '성별', '메일'])
<class 'dict_keys'>
dict_values(['홍길동', '남', 'gildong@gmail.com'])
<class 'dict_values'>
for문을 이용한 조회
myInfo = {'이름':'홍길동', '성별':'남', '메일':'gildong@gmail.com'}
for key in myInfo.keys():
print(f'{key} : {myInfo[key]}')
이름 : 홍길동
성별 : 남
메일 : gildong@gmail.com
🔔연습문제
시험점수가 60점 미만이면 F(재시험)으로 값을 변경하는 코드
scores = {'kor':88, 'eng':55, 'mat':85, 'sci':57, 'his':82}
minScore = 60
fStr = 'F 재시험'
fDic = {} #f학점만 모아둔 딕셔너리
for key in scores.keys():
if scores[key] < minScore:
scores[key] = fStr
fDic[key] = fStr
print(scores)
print(fDic)
삭제: del키워드 / pop()
🔔 연습문제
딕셔너리에 저장된 점수 중 최저, 최고점수 삭제하는 프로그램
scores = {'score1':8.9, 'score2':8.1, 'score3':8.5, 'score4':9.8, 'score5':8.8}
minScore = 0 ; minScoreKey = '' ; maxScore= 0 ; maxScoreKey = ''
for key in scores.keys():
if minScore == 0 or scores[key] < minScore:
minScore = scores[key]
minScoreKey = key
if scores[key] > maxScore:
maxScore = scores[key]
maxScoreKey = key
del scores[minScoreKey]
del scores[maxScoreKey]
기타 유용한 기능들
myInfo = {'이름':'홍길동', '성별':'남', '메일':'gildong@gmail.com'}
print('이름' in myInfo) # -> True
🔔연습문제
개인정보에 연락처, 주민등록번호가 있다면 삭제하는 코드
myInfo = {'이름':'홍길동', '성별':'남', '메일':'gildong@gmail.com', '연락처':'010-1234-5678', '주민등록번호':'000101-1234567'}
deleteItems = ['연락처','주민등록번호']
for item in deleteItems:
if item in myInfo:
del myInfo[item]