728x90
반응형
파이썬 실습창을 열 수 있습니다.실습창 열기
아무 생각없이,
그냥 하자!
계속 가는 거다.
1. 매핑(mapping) 범주
매핑 범주에는 dict type(사전 형, 딕셔너리 타입)이 있습니다.
- dict type의 모습은 {key1:value1, key2:value2, key3:value3, ...}와 같습니다.
- key와 value 쌍들이 {}(brace)로 둘러싸이고, 각각의 요소는 key:value 형태이며, 코머(,)로 구분되어 있습니다.
- 값의 대응 관계를 표시하여 임의의 key 값으로 value를 찾습니다.
- sequence와 다르게 순서가 없습니다.
- 변경 가능합니다(mutable).
번호 | 예 | 설명 |
1 | ascii={65:'A',66:'B',67:'C'} print(ascii[66]) |
key는 65, 66, 67이며 대응되는 value는 'A','B','C' 이다. ==> 'B' 출력 |
2 | person={ 'name':'Hong', 'age' :27, 'cell':'01088889999' } print(person['age']) person['age']=19 print(person) |
key는 ‘name', 'age', 'cell'이다. key는 숫자, tuple등도 사용할 수 있다. 그러나 list, dict 등과 같이 내용이 바뀔 수 있는 object는 사용할 수 없다. ==> 27 출력 'age'의 값이 19로 바뀜 |
3 | v={} v=dict() |
빈 dict를 만든다. 둘 다 같다. (blank dict) |
2. set(셑) 범주
set 범주에는 set 타입과 frozenset 타입이 있습니다.
- set은 고유한 항목들(중복 없음)의 순서 없는 모임입니다.
- set은 변경이 가능한 집합이고, frozenset은 변경이 불가능한 집합입니다.
- set type은 {} (brace)으로 둘러쌉니다. {}로 둘러 싼 것은 dict와 같지만 item에 :(colon)이 없습니다.
- 집합의 모습입니다. s = {1, 3, 5, 7, 9}, f = frozenset({2, 'a', 'b', 4, 6})
- v = set() 또는 v = set({})은 공집합입니다.
다음 표는 set형 오브젝트의 연산(집합연산)입니다.
분석, 이해, 실습하세요.
번호 | 연산 | 예 | 출력 | 설명 |
1 | 형변환 | a='hello' b=set(a) print(b) |
{'h', 'e', 'l', 'o'} | set형은 중복이 제거된다. 출력의 순서가 바뀔 수 있다(순서 없음). |
2 | a=s | t b=s & t c=s - t d=s ^ t |
s={1, 3, 5, 7} t={2, 3, 7} a=s | t b=s & t c=s - t d=s ^ t print(a,b,c,d) |
{1, 2, 3, 5, 7} {3, 7} {1, 5} {1, 2, 5} |
∙합집합 ∙교집합 ∙차집합 ∙대칭 차집합(한쪽에만 있는 항목) |(수직선 기호)는 보통 엔터키 위에 있다. |
3 | len(s) max(s) min(s) |
s={1, 3, 5, 7} a=len(s) b=max(s) c=min(s) print(a) print(b) print(c) |
4 7 1 |
∙s의 항목 개수를 반환한다. ∙s의 최대값 항목을 반환한다. ∙s의 최소값 항목을 반환한다. |
- 합집합(union): 모든 item을 한 군데 합쳐놓은 집합
- 교집합(intersection): 공통으로 포함하는 item 으로 이루어진 집합
- 차집합(set difference): A는, B의 원소 중 A의 원소가 아닌 것들의 집합
- 대칭 차집합(symmetric difference): 둘 중 한 집합에는 속하지만 둘 모두에는 속하지는 않는 원소들의 집합
3. 문제 해결
3-1. 비밀번호 찾기
다음 표는 아이디와 비빌번호를 정리한 것입니다.
아이디를 입력하면 비밀번호를 출력하는 프로그램을 작성하려고 합니다.
?부분을 완성하여 주세요.
아이디(ID) | 비밀번호(PW) |
kim135 | 77@2 |
park777 | 888#3 |
jung987 | a&b*55 |
table={
'kim135':'77@2',
'park777':'888#3',
'jung987':'a&b*55'
}
id=input('ID?')
pw=???????
print(pw)
더보기
table={
'kim135':'77@2',
'park777':'888#3',
'jung987':'a&b*55'
}
id=input('ID?')
pw=table[id]
print(pw)
'''
dict의 item을 간단히 입력하는 방법도 있습니다.
table=dict(kim135='77@2',park777='888#3',jung987='a&b*55')
id=input('ID?')
pw=table[id]
print(pw)
'''
3-2. 공통으로 있는 문자
우연히 알게 된 문장 하나가 마음에 울림을 주기도 하고,
얽매여 있던 문제를 새롭게 바라볼 수 있게도 합니다.
The die is cast. 주사위는 던져졌다. (줄리어스 시저)
This too shall pass. 이또한 지나가리라. (에트 혹 트란시비트)
위의 두 문장에서 공통으로 있는 문자는 무엇일까요?
대문자와 소문자는 다른 것으로 생각합니다.
다음 프로그램을 완성하세요.
a='The die is cast'
b='This too shall pass'
더보기
a='The die is cast'
b='This too shall pass'
r=set(a) & set(b)
print(r)
'''
{'a', 'h', 't', 'i', 's', ' ', 'T', '.'}
공백과 마침표까지 8문자가 공통으로 있습니다.
'''
수고하셨습니다.
오늘 끝.
728x90
반응형
'알고리듬' 카테고리의 다른 글
[알고리듬] #28 스트링 포맷 (0) | 2024.03.30 |
---|---|
[알고리듬] #27 스트링 메소드 (6) | 2024.03.30 |
[알고리듬] #25 자료형<순서열 정리> (0) | 2024.03.28 |
[알고리듬] #24 자료형<순서열 연산> (0) | 2024.03.28 |
[알고리듬] #23 자료형<순서열 범주> (0) | 2024.03.28 |