선미 파이썬 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
>>>