0. 목차

1. 기본(변수, 자료형, 입출력)
2. 조건문
3. 반복문
4. 함수

1. 기본(변수, 자료형, 입출력)

00 주피터노트북 명령어

  • 커맨드 모드 기능
    - 선택 셀 위에 셀 생성 - a
    - 선택 셀 아래에 셀 생성 - b
    - 선택 셀 삭제 - dd
    - 선택 셀 복사 - c
    - 선택 셀 잘라내기 - x
    - 선택 셀 붙여넣기 - v
    - 선택 셀 병합 -shift+m
    - 에디트 편집 - y
    - 마크다운 편집 - m

01 변수

01-1) 정의

  • '변할 수 있는 것'으로 어떤 값을 담는 상자

2) 변수 선언

  • 3을 b라는 변수에 담기 >>> b=3
  • 7을 C라는 변수에 담기 >>> C=7

01-2) 자료형

1) 자료형(data type)

  • 프로그램에서 표현하고 저장하는 데이터 유형
    - 순서자료형(숫자, 문자열, 리스트, 튜플)
    - 비순서자료형(딕셔너리, 집합, 부울)

2) 숫자형

  • 숫자형태로 이루어진 자료형
    - 정수(int, 소수점X)
    - 실수(float, 소수점O)
    * 데이터 타입 출력 ⇒ type() 함수
  • 연산자
    - 사칙연산(+, -, *, /)
    - 나누기 : 나머지 %
    - 나머지 : 몫 //
    - 제곱 : **
  • 관련함수
    - int() : 숫자나 문자열을 정수형으로 변환
    - float() : 숫자나 문자열을 실수형으로 변환
    - abs() : 절대값
    - pow() : 제곱

02 문자열 자료형

02-1) 이스케이프 문자

1) 이스케이프 문자

  • 출력물을 보기 좋게 만듦
    - \n : 줄바꿈
    - \t : 탭
    - \' 또는 \" : 작은 따옴표 또는 큰따옴표

02-2) 연산자

  • 문자열도 숫자형처럼 연산 가능
    - 연결 연산자 +
    - 반복 연산자 *

02-3) 인덱싱과 슬라이싱

  • 인덱싱
    - 문자열 내부 문자 하나를 선택할 때 사용
    - 순방향 인덱스 0부터 시작
    - 역방향 인덱스 -1부터 시작

  • 슬라이싱
    - 특정 범위를 선택할 때 사용
    - 문자열[인덱스1:인덱스2] ⇒ 인덱스 1이상부터 인덱스 2미만으로 적용
    - 마지막 숫자를 포함하지 않음

02-4) 포맷팅

  • 문자열 안에 어떤 값을 삽입 (%연산자)
    - 숫자(정수)대입 : %d
    - 숫자(실수)대입 : %f
    - 문자열 대입: %s
# 두 개 이상의 %연산자 포맷팅
# 숫자 나타내는 변수와 문자를 나타내는 변수 대입
a=2
b="옷"
sen="나는 하루에 %d번 샤워를 하고, %s을 두 번 갈아 입는다." %(2,"옷")
print(sen)
  • format()함수 포맷팅
    - 중괄호 {}를 포함한 문자열 뒤에 .을 찍고 format()함수 사용
    - 중괄호 개수와 format()함수의 매개변수는 동일
    - 문자열의 {}기호가 format() 함수 괄호 안에 있는 매개변수로 차례로 대치
1) str.format함수 사용
           
print("나는 {}호선과 {}호선을 타고 다녀.".format(6,4)
print("나는 {0}호선을 타고 다녀.".format(6)
            
2) f-string(**)
apple="사과", count=4
print(f"{apple}{count}개 있다."

관련 함수

  • len(x) : 문자열 길이 출력
  • split() : 문자열 나누기
    - e.g. print(sentence1.split())
    ⇒ ['a','b','c']
    s="Life is too short."
    s.split("too")
    -> ['Life is','short.']
  • replace('a','b') : 문자열 바꾸기
    - e.g. sentence2=sentence1.replace('a','b')
    s = "Life is too short."
    		# Life를 This pencil로 바꿔봅시다.
    		s.replace("Life","This pencil")
    -> 'This pencil is too short.'
  • join(x) : 문자열 삽입
    - e.g. sentence = ','.join('abc')
    ⇒ a, b, c
    "*".join("abdcdd")
    -> 'a*b*d*c*d*d'
  • upper() : 대문자 변환
  • lower() : 소문자 변환
  • capitalize() : 문장 첫단어 대문자 변환
  • startswith() : ~로 시작하는 단어찾기
  • endswith() : ~로 끝나는 단어찾기

03 리스트 자료형

03-1) 리스트 선언

: 대괄호[]에 자료를 쉼표로 구분하여 입력

L3 = [1, "Hi", 3.14, [1, 2, 3]] # 리스트에는 다양한 타입의 원소를 다 포함할 수 있다. 심지어 리스트도.
L3
-> [1, 'Hi', 3.14, [1, 2, 3]]

03-2) 인덱싱과 슬라이싱

  • 변경과 삭제 ⇒ 가능 (튜플은 불가능)

관련 함수

  • sort() : 리스트 정렬
  • reverse()
  • append(x) : 리스트 요소 추가
  • extend(x) : 리스트 확장
  • insert(a,b) : 리스트 요소 삽입, 리스트 a번쨰 위치에 b를 삽입
  • remove(x) : 리스트 요소 제거
  • pop() : 리스트 요소 끄집어 내기
1) sort()
	# sort()를 이용해 L을 정렬합니다.
	L = [4, 3, 16]
	L.sort(reverse=True) #reverse=True를 쓰면, "내림차순" 정렬이 됩니다.
	L

03-4) 튜플 자료형

1) 튜플 생성
: 괄호()에 자료를 쉼표로 구분하여 입력

2) 인덱싱과 슬라이싱
- 리스트와 동일

3) 연산자 사용 가능

4) 변경 삭제 불가능

03-5) 딕셔너리 자료형

1) 딕셔너리 정의
: key와 value를 한 쌍으로 갖는 자료형

2) 딕셔너리 선언

  • 중괄호{}로 선언하며, '키:값' 형태를 쉼표로 연결하여 생성
    - 일반적으로 키는 문자열 사용
    {key1:value1,key2:value2... }

3) 변경과 삭제
myDict['추가 또는 수정하고 싶은 key값'] = [추가 또는 수정하고 싶은 value값]

4) 관련 함수

  • keys() : key 리스트 만들기
  • values() : value 리스트 만들기
  • items() : key, value 쌍 얻기
  • get() : key로 value 얻기
  • in() : 해당 key가 딕셔너리 안에 있는지 조사
  • clear() : key:value 쌍 모두 지우기
1) items()
D = {'name': 'kim', 'phone': '01012345679', 'birth': '1234'}
D.items()
-> dict_items([('name', 'kim'), ('phone', '01012345679'), ('birth', '1234')])

03-6) 집합 자료형

1) 집합 생성

  • set 키워드 안에 리스트 또는 문자열 입력
  • 비순서 자료형, 중복허용X
  • 순서대로 사용하고 싶다면 리스트나 튜플로 변환하여 사용

1) 공집합 생성

#s1={}
s1=set() #공집합 생성
s1,type(s1)
-> (set(), set)

2) 교,합,차집합
- 교 : &
- 합 : |
- 차 : -

3) 관련 함수

  • add() : 한 개의 값 추가
  • update() : 여러 개의 값 추가
  • remove() : 특정 값 제거

03-7) 부울 자료형

1) 정의
: 참과 거짓을 나타내는 자료형 ⇒ 조건문의 반환 값으로 사용

04 파일 입출력

04-1) 파일 열기

  • open() 함수 사용
  • 파일 객체=open(파일 경로 파일열기모드⇒매개변수)
    - 첫번쨰 매개변수에는 파일경로, 두번째 매개변수에는 파일열기모드 지정
  • 열기모드
    - w : write모드(쓰기모드)
    - a : append(추가모드, 마지막에 새로운 내용 추가)
    - r : read(읽기모드, 파일을 읽기만 할 때)

04-2) 파일 쓰기

  • 파일객체.write("문자열")
    - write()함수 안에 작성하고 싶은 문자열 입력

04-3) 파일 닫기

  • close() 함수 사용

04-4) 파일 읽기

  • 읽기모드(r)로 열기
  • readline() : 텍스트 한 줄씩 읽어서 반환
  • readlines() : 파일의 모든 줄을 읽어서 각 줄을 리스트로 반환
  • strip() : \n 문자 제거

2. 조건문

01 if 조건문

01-1) if 문

  • 참일 경우 실행, 거짓일 경우 패스
  • 들여쓰기, 콜론(:) 주의

01-2) else 문

  • if 문 뒤에 사용, if문 조건이 거짓일 때 실행됨

01-3) elif 문

  • 세 개 이상 조건 연결할 때 사용

01-4) 관계 연산자

  • 두 개의 값을 비교하여 값을 참 또는 거짓으로 판별
    - ==, !=, <, >, <=, >=
# 같다, 다르다, 크다, 작다, 크거나 같다, 작거나 같다
a=5
b=4
a == b
a!= b
a > b
a < b
a>=b
a<=b

01-5) 논리 연산자

  • 논리값 판단
    - not : 한개의 값이 False면 결과값 True 반환/True이면 결과값 False 반환
    - and : 두개의 값이 모두 True인 경우 True 반환, 나머지 모두 False
    - or : 두개의 값 모두 False인 경우 False 반환, 나머니 모두 True 반환
# A and B
# A=a>5
# B=b<6

# A or B
A or B
# not A
not A

3. 반복문

01 for 반복문

01-1) 기본 구조

for 변수 in 리스트(또는 튜플, 문자열) :
반복적으로 수행할 문장

⇒ for 반복자 in 반복할 수 있는 것 :
반복적으로 수행할 문장

# 원소가 1, 2, 3인 리스트의 원소를 하나하나 출력하는 반복문을 만든다.
L = [1, 2, 3]
for i in L:
  print(i)
->  1
	2
	3

01-2) 문자열 반복

  • 문자열을 이용한 for문은 문자 하나하나가 변수이며, 차례로 반복

01-3) 리스트 반복

  • 요소는 리스트 안에 있는 각 내용
  • 인덱스는 리스트 안에 있는 값의 위치
coffees = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루']
prices = [4100, 4600, 4600, 5100, 6000, 5000]

for i in range(0,6): #0부터 시작
  if prices[i] <=5000:
    print(coffees[i])
-> 아메리카노
   카페라떼
   카페모카
   콜드브루

01-4) 딕셔너리 반복

  • 키는 딕셔너리 안에서 값을 접근할 때 사용
  • 값은 각각의 내용을 의미
  • 딕셔너리를 이용한 for문은 딕셔너리 안에 있는 키가 변수에 들어감

01-5) 범위반복

  • range() 함수
    - range(A,B) : 매개변수로 숫자 두 개 입력 ⇒ A부터 B-1까지 정수로 범위 생성
    - range(A,B,C) : 매개변수로 숫자 세 개 입력 ⇒ A부터 B-1까지 정수로 범위 생성하는데 앞 뒤 숫자가 C만큼 차이를 가짐
# range 함수를 이용해 1부터 4까지 출력하는 프로그램을 작성해보자. for문을 이용해서!

for i in range(0,8):
  print(i)
->  0
	1
	2
	3
	4
	5
	6
	7
e.g.
coffees = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루']
prices = [4100, 4600, 4600, 5100, 6000, 5000]

# 1. index를 사용하는 방법
for i in range(len(coffees)):
  if prices[i]-500<=5000:
    print(coffees[i])

# 2. enumerate를 사용하는 방법

for idx, price in enumerate(prices):
  if price -500 <=5000:
    print(coffees[idx])

# 3.

for coffee, price in zip(coffees, prices):
  if price -500 <=5000:
    print(coffee)

01-6) for문의 활용

  • 횟수뿐만 아니라 구간이 정해져 있는 데이터를 순환하면서 작업가능
* 예제1)
test_list = [10, 20, 30, 40, 50, 60, 70, 80, 90]
# test_list 내부를 순환하면서 i를 정의
for item in test_list:
    print(item/10*5) #전체데이터에 대해서 연산 등을 작업할 때 많이 사용하는 구조
   
* 예제2)
test_list = ['서울', '용산구', '해방촌', '르카페', '재즈', '치즈', '요리']
# enumerate() 함수안의 자료구조의 인덱스와 함께 루프

for index, item in enumerate(test_list):
    if item == '해방촌':
        test_list[index]='경리단길'
        
    print(index, item)

0 서울
1 용산구
2 해방촌
3 르카페
4 재즈
5 치즈
6 요리

수정된 결과값
test_list
['서울', '용산구', '경리단길', '르카페', '재즈', '치즈', '요리']

* 예제3)
# 횟수뿐 아니라 구간이 정해져 있는 데이터를 순환하면서도 작업가능
# 여러 개의 데이터를 동시에 순환

test_list1 = ['이름', '사는곳', '사는동네', '좋아하는 카페', '음악', '취미']
test_list2 = ['Amy', '서울', '당산', '라이커스', '인디', '운동']

for index, (item1, item2) in enumerate(zip(test_list1, test_list2)):
    print(index, item1, item2)
    
* 예제4)
# 폴더구조를 순환하는 for문의 활용
import os # 운영체제의 명령어를 파이썬으로 제어할 수 있는 패키지
for file_nm in os.listdir():
    # 시작문자열 혹은 끝나는 문자열 기준으로 True, False
    if file_nm.endswith('ipynb'):
    # if file_nm[-5:] == 'ipynb':
        print(file_nm)
        
* 예제5)
# 그렇다면 미리 정해진 숫자 혹은 데이터로만 사용이 가능할까?
# 생성할 때도 용이함
test_list=[]
for i in range(21):
    test_list.append(i)
test_list

* 예제6)
# 숫자를 5번 입력받고 입력받은 숫자의 합을 계산해주는 코드를 작성해 봅시다.
# 변수, 리스트, 증강연산자
total = 0
for i in range(5):
    num=int(input("더할 숫자를 입력하세요 : "))
    total += num # 증강연산자 
print(f"총 합은 {total}입니다.")

* 예제7)
total = [0]
for i in range(5):
    num=int(input("더할 숫자를 입력하세요 : "))
    total.append(num) # 리스트
print(f"총 합은 {sum(total)}입니다.")

01-7) list comprhension

  • controlflow를 활용해 간단히 리스트 생성 가능
  • 데이터의 특정 부분만 따로 변수로 사용하고자 할 때 많이 사용함
1) 심플한 리스트 컴프리헨션 구문
# test_list=[]
# for i in range(21):
#    test_list.append(i)

[i for i in range(21)]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

2) if문이 추가된 리스트 컴프리헨션 구문
[i for i in range(21) if i % 2 == 0]

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

3) if, else문이 추가된 리스트 컴프리헨션 구문(elif 불가)
[i if i % 2 ==0 else 0 for i in range(21) ]

[0, 0, 2, 0, 4, 0, 6, 0, 8, 0, 10, 0, 12, 0, 14, 0, 16, 0, 18, 0, 20]

02 while 반복문

02-1) 기본구조

  • 조건을 만족하는 한, 문장 반복실행
  • 문장이 참인 동안 문장을 계속 반복되며 거짓이 되면 반복문 종료
# 2단을 while문으로 구현해봅시다.
number = 0
while number < 10 :
  print("2 X %d = %d" %(number, 2*number))
  number = number+1
  
-> 2 X 0 = 0
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18

02-2) break 키워드

  • 반복문 벗어날 때 사용
  • 일반적으로 무한 반복문을 만들고, 내부의 반복을 벗어날 때 사용

3) continue 키워드

  • 반복문의 현재 반복을 생략할 때 사용

4. 함수

01 함수

01-1) 기본 구조

  • [입력>>함수>>출력] 구조
  • 함수는 def 키워드 사용하여 생성함

    def 함수이름(매개변수1, 매개변수2) :
    수행할 문장1
    ...
    return 결과

def add(a, b):
  return a + b

    # 입력받은 a, b를 더한 값을 돌려주는 함수.

# Function Call
add(3, 5)

02 매개변수

  • 함수 입력으로 전달된 값을 받는 변수

02-1) 디폴트 매개변수

- 매개변수 값이 입력되지 않으면 값으로 자동 입력 
- 매개변수가 여러 개인 경우 뒤의 매개변수부터 디폴트 값 가질 수 있음 

def 함수이름(매개변수=디폴트 값) :
수행할 문장1
return 결과

2) 가변 매개변수
- 원하는 만큼의 인자를 받을 수 있는 함수
- 매개변수 : 가변 매개변수는 매개변수 앞에 *를 붙임
※ 제약 : 뒤에 일반 매개변수 X, 하나만 사용 가능

def 함수이름(*매개변수) :
수행할 문장1
return 결과

def add_many(*args): # *(asterisk)를 앞에 붙이는 것으로 여러개의 parameter를 받아서 tuple로 변환하여 준다.
total =0
for arg in args:
  total += arg
return total

print(add_many(1,2,3))
print(add_many(1,2,3,4,5))
print(add_many(1,2,3,4,5,6,7))

def feed)forward(**kwargs): #kwargs -> dict
pass

02-2) 키워드 매개변수

def 함수(매개변수A, 매개변수B, 매개변수C):
수행할 문장1
return 결과

  • 매개변수 이름 지정해서 입력하여 함수 호출

  • 매개변수 순서와 상관없이 나열 가능

    03 인수

  • 함수를 호출할 때 전달하는 입력 값

    함수(인수1, 인수2)

    04 리턴

  • 함수를 호출한 곳으로 결과 값 반환

profile
공부하는 데이터 분석가 👩‍💻

0개의 댓글

Powered by GraphCDN, the GraphQL CDN