선미 파이썬 0320 7일차
hiblue
강의노트
''' [5. Dictionary] -사전 : 단어!>단어의 뜨쇼 , 해석 -형태 : {key1:value, key2, value2, ....} -리스트와 튜플같이 여러 개의 요소가 하나의 요소를 이루는 형태, 키와 벨류를 한 쌍으로 한다(하나의 요소) ~는 ~다<<로 읽는다. -순서가 없다. (문자열, 리스트, 튜플은 순서가 있다-인덱싱이 가능-) >>순서가 없기 때문에 인덱싱, 슬라이싱이 불가능하다.(슬라이싱 자체가 인덱싱을 전제로 하는 것이므로 슬라이싱도 안됨) -주의사항 1. 키는 중복되면 안 된다.(벨류를 찾아가는 인덱스와 같은 역할을 해야하기 때문에-sql의 프라이머리 키와 같은 개념으로 보면 될 듯-) 2. 키는 리스트, 딕셔너리 데이터를 사용할 수 없다. ==>키 : 변하지 않는 값 ==>숫자, 문자, 튜플만 사용(리스트는 중간에 항목을 삭제, 변경하는 등 변경이 가능하기 때문에 사용할 수 없음) ==>벨류 : 중복이 가능하고 아무거나 사용할 수 있다. ''' print("=======딕셔너리==========") print("[딕셔너리 만들기]") my_dic = {"축구" : "soccor", 2002 :"한일", (1, 2):("원", "투"), "16강":[2002, 2010]} #이 딕셔너리는 4개의 요소를 가지고 있다. ''' !key !! value |- |"축구 || soccor" ||문자열:문자열 |- |2002 ||"한일" |- |(1, 2) ||("원", "투") |- |"16강" ||[2002, 2010] |} ''' print(my_dic) print(my_dic["축구"]) # 인덱싱하듯 사용하는데 인덱싱이 아닌 키를 넣으면 벨류값이 반환된다. 다른 키를 넣으면 벨류의 값도 변한다. print(my_dic[2002]) print(my_dic[(1, 2)]) # 키가 튜플이고 벨류가 튜플 print(my_dic[(1, 2)][0]) # [key][index] 딕셔너리에서 가져온게 튜플이면 튜플의 인덱싱이 가능하다. print(my_dic["16강"]) print(my_dic["16강"][0]) # 16강 키도 리스트기 때문에 인덱싱이 가능하다. print("[딕셔너리 추가, 삭제]") my_dic={1:"a"} # 1은 a다 my_dic[3]="c" # [키]= 벨류 << 형태로 값을 추가할 수 있음 print(my_dic) # 만약 my_list[3]="c"가 추가됐다면 3번인덱스 위치에 c가 추가됐을 것, 위에서 3은 인덱스가 아닌 정수3인 키를 의미하는 것이다. print() print("[요소 삭제]") del(my_dic[1]) #지우고싶은 키 print(my_dic) #키와 벨류가 한 쌍으로 제거된다. ####만약 하나 남은 딕에서 마지막 하나를 제거한다면?? #딕셔너리도 관련 함수가 있다. >>>.tab키 누르면 목록이 뜬다.(my_dic.~~) #다른 자료형들 끼리도 비슷한 함수가 많다(이름이 같으면 사용법은 동일) ''' [6. 집합(set) 자료형] -순서가 없다 >>인덱싱이 불가능 -중복이 허용되지 않는다 >>요소의 중복 제거 용도로 쓰일 수 있다. ''' print("=======집합==========") print("[집합 만들기]") my_set1={1, 2, 3, 4, 2, 12, 3, 5, 245, 23, 5, 2} print(my_set1) # 중복이 허용되지 않기 때문에 중복이 제거된 채로 출력 print("[집합 만들기2]") my_set2 = set("hello") # 집함을 만드는 함수 ''' list() str() tuple() dict() set() int() float() 등등 무언가의 형태를 받아서 특정 자료형태로 만들어주는 함수가 존재함 비슷한 형질의 자료끼리 변환이 가능하다. >>> 이렇게 변환하는 것을 형변환이라고 한다. 비슷한 형질의 자료 문자열=문자 하나하나가 나열된것>인덱싱 가능, 리스트, 튜플 등 무언가 나열되어 있는 형태끼리 변환이 가능 무조건 되는 것은 아니고 뭐를 뭐로 하고 할 때 되고 안되는 것들이 있다. ''' print(my_set2) # 집어넣은 것을 집합으로 만들고 중복을 제거하여 순서대로 나열함 #집합의 요소를 인덱싱하고 싶다면 리스트로 변환해서 인덱싱하기 my_list=list(my_set1) #{1, 2, 3} print(my_list) print(my_list[2]) #set을 리스트로 변환하는 것도 가능하다 ''' "" 문자열 -->문자열만 안의 요소들을 콤마로 나열하지 않는다. 나머지는 콤마로 나열해야함 [] 리스트 () 튜플 {:} 딕셔너리 {} 집합 ''' #집합도 관련 함수들이 있지만...패스...일반적으로는 두 개의 집합을 두고 교집합, 차집합, 합집합 등을 구하는 함수들을 사용한다. print() ''' [7. bool(boolean) 자료형] -참(true), 거짓(false)을 판별해주는 자료형(>자료의 값을 나열하는 형태가 아니다) >두 개의 값만 있다는 뜻 자료형의 값들이 나타내는 t/f ==================== 값 true/false ==================== 1 true 0 false "121" true "" false [1,2] true [] false () false {} false None false ==================== 참과 거짓을 따졌을 때 거짓인 경우! 1. 요소가 없다(문자열, 리스트 등...) 2. 숫자가 0이다>>>숫자가 0이 아니면 모두 true 3. None 값이 없다는 것을 표현하는 하나의 자료형(null과 같은 것?) ''' print("=======bool==========") #True, False, None >>>>>파이썬에서 사용하는 예약어(keyword), 대소문자 구분해야함!!!!!!! print( bool(1) ) print( bool(0) ) print( bool(-1) ) #0이 아니면 모두 트루, 1은 참을 의미하는 대표적인 숫자 print(bool([])) print(bool([True])) # True 자체가 True이다 05_input #print와 같이 출력만을 하는 것이 아니라 입력을 받는 함수 ''' 사용자 출력 함수(표준출력함수) : print() [사용자 입력 함수 : input] 1. input() >>프로그램이 종료되지 않고 '입력대기상태' >>입력 후 엔터를 누르면 ***입력된 내용이 문자열로 반환*** 2. 입력받기 전 문자열 출력하기 1)INTPT("출력할 내용") 2) input("입력 : ") 위 2개는 동일하다! 2번 처럼 하는 게 편하다. 인풋()함수에서 프린트하뭇의 기능을 사용 ''' print("=======input=====") #인풋은 입력대기상태가 되기 때문에 주석처리하면서 공부할것 #1) print("입력하세요 : ", end="") #input() print("끝") #입력대기상태가 되면 결과창에서 엔터를 누르기 전까지 출력되지 않느다. #인풋 함수가 수행되면 입력할때까지 계속 기다림 >>기다린다는 의미는 코드의 수행이 멈추고 더이상 진행되지 않는다는 것. #2) #내가 입력받기 전에 출력하고 싶은 문자를 출력함 #input("입력하세요 : ") #입력된 내용은 "문자열로 반환" ''' print( input("입력 1 : ")) #반환된 문자열을 프린트함수에서 '사용' input_data = input("입력 2 :") # 반환된 문자열을 변수에 '대입' print(input_data) #대입을 하던, 사용을 하던 이 두가지가 가능한 이유는 값이 '반환'되었기 때문 #다른 프로그램언어에서는 입력받을 언어를 지정할 수 있으나 파이썬은 무조건 문자열로 받아준다. print(input_data*2) print(input_data+2) # 오류! 문자열+숫자 ★★중요 반환된다는 것을 재대로 이해해야 함 ''' ''' #숫자로 형변환 num1=int(input("숫자1 입력 :")) #int()>정수로 형벼환 # input()에 의해 값을 입력하면 문자열이 변환>반환되는 값을 int()로 묶었다 num2=input("숫자 2 입력 :") num2=int(num2) #이렇게 두 번 사용할 일을 위에서 한 번에 한다(편하다) print("두 수의 합 : ", (num1+num2)) #우리가 형변환하고 싶은 문자는 '정수'이기 때문에 정수의 형태로만 입력해야 한다. 정수에 쓰이지 않는 기호가 입력되면 오류!(int에서 발생) ''' # 한 번에 여러 값을 입력받기1 ''' # 문자열의 split()함수 str1="하.하.하" print(str1.split(".")) # 리스트로 반환 #split()안에 아무것도 넣지 않으면 공백, 탭, 개행 등 여백 기준 num1, num2, num3=input("숫자 세개 입력 : ").split() #만약 내가 숫자 1 2 3 하고 스플릿에 ()만 하면 1 2 3 이 출력>>>인풋은 1 2 3을 반환해준다 #"1, 2, 3"은 스플릿을 한 것이다. 이 때는 기준이 공백 #나눠진 문자들은 변수들에 하나씩 대입이 된다. >>>>>개수를 꼭 맞추기 print(num1, num2, num3) num1=int(num1) num2=int(num2) num3=int(num3) print("입력한 숫자들의 값 :", (num1+num2+num3)) ''' #한 번에 여러 값 입력받기 2 #map ()함수 활용>편리 #map(함수, 반복가능한 자료) >>반복 가능한 자료의 요소 하나하나마다 함수를 수행 num1, num2, num3=map(int, input("숫자 세개 입력 : ").split()) #스플릿에 의해 반복된 값이 있으므로 맵을 이용해 입력할 수 있다. 내가 반복수행하고 싶은 함수는 괄호를 쓰지 않고 함수명만 사용한다(맵이 위의 넘1=int(num1)을 반복하는 역할을 대신해주는것) print("입력한 숫자들의 값 :", (num1+num2+num3)) #1)인풋으로 문자를 받음 #2) "1 2 3".스플릿()에 의해 리스트로 변환 ['1', "2", "3"] #3)맵함수에 의해 리스트의 각 요소들이 int에 사용된다. >>int ('1') int('2').... #4)>>num1, num2, num3=1, 2, 3이라는 값이 완성 #문자열 입력 연습 ''' 1. 사각형 면적 구하기 가로, 세로, 입력 받고 면적 계산(가로*세로) [출력 결과] 가로 세로 입력: 3 4 면적은 12입니다. 2. 사칙연산 두 수를 입력받고 사칙연산의 결과 출력(4개) 단 나눗셈의 결과는 소수점 두 번째 자리까지만 출력한다. [출력결과] 두 수 입력 : 11 3 11+3=14 11-3=3 11*3=33 11/3=3.67 3. 주차요금 계싼하기 최초 60분 : 1000원 이후 1분마다 100원 [출력결과] 주차 시간 입력(최초 60) : 75 주차 요금은 2500원입니다 '''
출력창
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} Traceback (most recent call last): File "C:/김선미/04 type03.py", line 34, in <module> pirnt(my_dic["축구"]) # 인덱싱하듯 사용하는데 인덱싱이 아닌 키를 넣는다. 다른 키를 넣으면 벨류의 값도 변경된다. NameError: name 'pirnt' is not defined >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor 한일 >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor 한일 ('원', '투') 원 >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor 한일 ('원', '투') 원 [2002, 2010] >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor 한일 ('원', '투') 원 [2002, 2010] 2002 >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor 한일 ('원', '투') 원 [2002, 2010] 2002 [딕셔너리 추가, 삭제] {1: 'a', 3: 'c'} >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor 한일 ('원', '투') 원 [2002, 2010] 2002 [딕셔너리 추가, 삭제] {1: 'a', 3: 'c'} [요소 삭제] {3: 'c'} >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor 한일 ('원', '투') 원 [2002, 2010] 2002 [딕셔너리 추가, 삭제] {1: 'a', 3: 'c'} [요소 삭제] {3: 'c'} =======집합========== [집합 만들기] Traceback (most recent call last): File "C:/김선미/04 type03.py", line 64, in <module> print(my_set) # 중복이 허용되지 않기 때문에 중복이 제거된 채로 출력 NameError: name 'my_set' is not defined >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor 한일 ('원', '투') 원 [2002, 2010] 2002 [딕셔너리 추가, 삭제] {1: 'a', 3: 'c'} [요소 삭제] {3: 'c'} =======집합========== [집합 만들기] {1, 2, 3, 4, 5, 12, 245, 23} >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor 한일 ('원', '투') 원 [2002, 2010] 2002 [딕셔너리 추가, 삭제] {1: 'a', 3: 'c'} [요소 삭제] {3: 'c'} =======집합========== [집합 만들기] {1, 2, 3, 4, 5, 12, 245, 23} [집합 만들기2] {'o', 'e', 'l', 'h'} >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor 한일 ('원', '투') 원 [2002, 2010] 2002 [딕셔너리 추가, 삭제] {1: 'a', 3: 'c'} [요소 삭제] {3: 'c'} =======집합========== [집합 만들기] {1, 2, 3, 4, 5, 12, 245, 23} [집합 만들기2] {'o', 'e', 'l', 'h'} [1, 2, 3, 4, 5, 12, 245, 23] >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor 한일 ('원', '투') 원 [2002, 2010] 2002 [딕셔너리 추가, 삭제] {1: 'a', 3: 'c'} [요소 삭제] {3: 'c'} =======집합========== [집합 만들기] {1, 2, 3, 4, 5, 12, 245, 23} [집합 만들기2] {'h', 'l', 'e', 'o'} [1, 2, 3, 4, 5, 12, 245, 23] 3 >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor 한일 ('원', '투') 원 [2002, 2010] 2002 [딕셔너리 추가, 삭제] {1: 'a', 3: 'c'} [요소 삭제] {3: 'c'} =======집합========== [집합 만들기] {1, 2, 3, 4, 5, 12, 245, 23} [집합 만들기2] {'e', 'o', 'l', 'h'} [1, 2, 3, 4, 5, 12, 245, 23] 3 =======bool========== True False True >>> ======================== RESTART: C:/김선미/04 type03.py ======================== =======딕셔너리========== [딕셔너리 만들기] {'축구': 'soccor', 2002: '한일', (1, 2): ('원', '투'), '16강': [2002, 2010]} soccor 한일 ('원', '투') 원 [2002, 2010] 2002 [딕셔너리 추가, 삭제] {1: 'a', 3: 'c'} [요소 삭제] {3: 'c'} =======집합========== [집합 만들기] {1, 2, 3, 4, 5, 12, 245, 23} [집합 만들기2] {'o', 'h', 'e', 'l'} [1, 2, 3, 4, 5, 12, 245, 23] 3 =======bool========== True False True False True >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 끝 >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 입력 1 : 입력 2 : >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 입력 1 : 1111 1111 입력 2 :2222 2222 >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 입력 1 : 1111 1111 입력 2 :2222 2222 22222222 Traceback (most recent call last): File "C:/김선미/05_input.py", line 40, in <module> print(input_data+2) TypeError: must be str, not int >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 숫자1 입력 :1 숫자 2 입력 :2 두 수의 합 : 3 >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 ㅇㅇㅋㅋ ㅇㅇㅋㅋ >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 인풋 프린트 >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 인풋 : 아하하 프린트 >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 인풋 : 아하하 >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 ['하', '하', '하'] >>> >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 <built-in method split of str object at 0x02B97220> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 숫자 세개 입력 : 1 2 3 1 2 3 >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 숫자 세개 입력 : 1 2 3 1 2 3 입력한 숫자들의 값 : 6 >>> ======================== RESTART: C:/김선미/05_input.py ======================== =======input===== 입력하세요 : 끝 숫자 세개 입력 : 1 2 3 입력한 숫자들의 값 : 6 >>>