프로그램의 3가지 구성요소: 순차, 선택, 반복
순차: 위에서부터 순차적으로 명령 수행
선택: 분기점에서 선택을 하는 구조
반복: 같은 명령을 반복
print(1)
// 1
print(1, 2, 3)
//1 2 3
print(1,2,3)
// 1 2 3
-> 띄어쓰기는 영향이 없고 쉼표가 띄어쓰기의 역할을 한다
print(123)
// 123
print ('Hello my name is', 'left')
// Hello my name is left
-> 쉼표를 통해서 문자를 결합할 수 있고 띄어쓰기도 가능
input()
aaaaa
// 'aaaaa'
input('이름을 입력하세요')
이름을 입력하세요 오승하
// '오승하'
input('당신의 나이는: ')
당신의 나이는: 26
// '26'
age = input('당신의 나이는?')
당신의 나이는? 26
age
// '26'
my_int = 1
my_int + 2
//3
-> 객체 1에 my_int 라는 이름표를 붙여주는 것
숫자형, 문자형, 불리언
type() 을 이용해 데이터 타입을 확인할 수 있다
my_float = 3.14
type(my_float)
<class 'float'>
my_int = 1
type(my_int)
<class 'int'>
type(1)
<class 'int'>
대소문자 구분 가능
*리스트, 튜플, 딕셔너리는 '컨테이너'. 여러 값을 모아 저장하는 곳
val = [1, 2, 3]
students = ['오승하', '오현재', '오현경', '오현하']
students
// ['오승하', '오현재', '오현경', '오현하']
list 안의 값은 아래와 같이 바꿀 수 있음
students = ['오승하', '오현재', '오현경', '오현하']
students[0] = '오인석'
students
// ['오인석', '오현재', '오현경', '오현하']
BUT 튜플의 값은 수정 불가
my_tuple = ('딸기', '사과', '수박')
튜플은 소괄호로 만든다
{key1: val1, ...}
my_dict = {'사과': '과일', '메론': '과일', '가지': '채소'}
my_dict['사과']
//'과일'
수정가능
my_dic['사과'] = '채소'
my_dict
//{'사과': '채소', '메론': '과일', '가지': '채소'}
자료형 변환을 이용해 정수를 실수로 변환 가능
my_int = 1
type(my_int)
<class 'int'>
float(my_int)
//1.0
정수를 문자열로도 변환 가능
str(my_int)
//'1'
type(str(my_int))
<class 'str'>
문자열을 리스트로 변환
my_str = 'coding'
list(my_str)
//['c', 'o', 'd', 'i', 'n', 'g']
주석 앞에 #을 붙인다
print('Hello World!') #안녕
Hello World!
문자열은 '' 혹은 "" 로 표현
값과 순서 변경 불가
my_str = '오승하'
print(my_str)
//오승하
type(my_str)
<class 'str'>
''' 혹은 """ 이렇게 3개씩 쓰면 줄바꿈 가능
my_str = """ 오승하
오현재
오현경
"""
my_str
//'오승하|n오현재|n오현경|n'
백슬래쉬 n 은 줄바꿈을 의미
문자열을 더 잘 표현하기 위함
%d %f %s
s 는 문자열 대입
my_str = 'my name is %s' % 'lily'
my_str
//'my name is lily'
d 는 정수형 숫자를 대입
%d %d % (1, 2)
//'1 2'
f 는 실수형 숫자를 대입
%f % 3.14
//'3.140000'
이런 방식을 c 방식이라고 함
유연하게 데이터를 입력하기 위함이라고 한다
'{}'.format() <- 파이썬스러운 대입 방식, 현대적 방식
'my name is %s' % 'lily'
'my name is lily'
위의 식을 아래처럼 파이썬스럽게(?) 작성 가능
'my name is {}'.format('lily')
//'my name is lily'
{} * {} = {}.format(2, 3, 2 * 3)
//'2 * 3 = 6'
{1} * {0} = {2}.format(2, 3, 2*3)
//'3 * 2 = 6'
my_name = '김왼손의 왼손코딩'
my_name[6]
//'왼'
my_name[-1]
//'딩'
1줄부터 4줄 전까지
my_name = '김왼손의 왼손코딩'
my_name[5:7]
//'왼손'
앞 숫자와 뒷 숫자 생략 가능 (모두 생략하면 전체가 된다)
잘라서 복사해서 쓰게 되는 것! 기존 문자열은 그대로 존재한다
.method()
메소드는 이미 만들어져 있는 함수
함수는 어떤 기능을 수행하는 코드를 모아놓은 것
재사용 가능하다는 장점이 있다
split 은 문자열을 공백 단위로 잘라줌
my_name = '김왼손의 왼손코딩'
my_name.split()
//['김왼손의', '왼손코딩']
fruit_str = '참외, 복숭아, 딸기, 수박, 거봉, 메론, 망고, 자두'
fruit_str
//'참외, 복숭아, 딸기, 수박, 거봉, 메론, 망고, 자두'
fruits = fruit_str.split()
fruits
//['참외', '복숭아', '딸기', '수박', '거봉', '메론', '망고', '자두']
공백을 기준으로 나누는 것은 기본설정이며
어떤 문자를 기준으로 나눠라 등의 옵션 설정 가능(괄호 안에 기입)
원래는 #를 이용해서 주석 다는데, """ 이용해서 주석 달 수도 있음
1번과 2번은 동일 (# 앞의 '은 삭제)
print() 의 옵션값
print('', end='') 출력되는 값의 끝을 지정
print('김왼손')
//김왼손
print('김왼손', end='')
//김왼손
print('김왼손', end='~')
//김왼손~
print('김왼손', end='미운코딩새끼')
//김왼손미운코딩새끼
print('김왼손', end=' 미운코딩새끼')
//김왼손 미운코딩새끼
print('오승하바보아니라천재')
//오승하바보아니라천재
print('오승하\n바보아니라천재')
//오승하
바보아니라천재
list 는 mutable type
list 에서 append 메소드를 이용해 값을 추가할 수 있다
-> append 는 값 하나씩만 추가 가능
-> 같은 list 의 값만 해당 list 에 추가할 수 있다
list 의 여러 메소드
-> .extend() 를 이용해서 여러 개의 값을 list 에 추가
tuple 은 immutable data type
소괄호를 사용하지만 (사용하지 않아도 됨)
*명령 구분을 위한 띄어쓰기나 탭은 하나를 정하면 끝까지 동일하게 작성해야 한다 (아니면 에러남)
: 수의 범위를 설정해서 수를 출력 가능
(홀수만 출력하기)
위의 코드를 간결하게 작성한 것이 아래 코드
** 제곱
// 몫
% 나머지
==
!=
<
and or not
not ture = false
not false = true
list 안에 어떤 값이 있는지 확인할 때
in / not in 연산자 사용
함수의 종류: 내장함수, 모듈의 함수, 사용자 정의 함수
1. 내장되어 있는 함수
2. import 해서 사용할 수 있는 함수
3. 직접 만들 수 있는 함수
위 식에서 인자와 결과값은 없어도 됨
함수를 사용하는 이유는 '재사용성' 때문
코드 관리 용이
조립해서 사용할 수 있다 (모듈형)
결과값에 괄호가 있다
이건 튜플!
인자를 두개 받는게 아니라 결과값만 두개 출력
결과값을 튜플을 만들어서 반환
함수는 한 개의 튜플을 던져준다
def add_mul(num1, num2):
return num1 + num2, num1 * num2
>>> add_mul(1, 2)
(3, 2)
>>>
>>> # 반환값은 소괄호를 사용하는 '튜플'
>>> # unpacking 해보자면
>>>
>>> my_add, my_mul = add_mul(1, 2)
>>> my_add
3
>>> my_mul
2
>>>
: 비슷한 함수들을 모아둔 것
다른 사람들이 만든 모듈을 가져와서 사용하려면 import 라는 키워드를 사용해야 한다
마침표를 이용해서 모듈 안의 함수를 사용 가능
(번외: 파이썬의 장점 - 쉽고, 빠르고, 자료가 많다)
random 이라는 모듈
난수를 만들거나 무작위 관련 작업 할 때
1. random.choice() - 하나의 랜덤값 출력
random.sample - 여러 개의 랜덤값 출력
random.randint - 랜덤하게 범위 안의 정수 하나를 뽑을 수 있음
파이썬에서는 거의 모든 것이 객체
현실에 있는 것을 재현해서 컴퓨터 상에 마련해 둔 것
함수와 데이터를 묶어서 만들어 놓은 것을 객체라고 생각하면 됨
기타의 이름은 --- 색은 --- 종류는 --- 에서 --- 이 데이터
기타를 이용해서 핑거스타일, 스트러밍 등 연주를 할 수 있는데 그게 함수
함수와 데이터를 모아서 기타(=객체)를 만들 수 있다
1이라는 객체에 my_int 라는 이름을 붙여주는 것
my_list = [1, 2, 3]
my_list 도 객체
my_list.append(1) <- 이게 가능한 이유는 my_list 가 객체이고 append 라는 함수를 가지고 있기 때문이다
pep8 은 코딩 스타일 가이드, 코딩 컨벤션이라고도 하며 파이썬으로 코딩할 때 적절하다고 생각되는 코딩 스타일
>>> from datetime import date
>>>
>>> today = date.today()
>>> print("Today's date:", today)
Today's date: 2020-06-17
>>>
>>> # datetime 모듈에서 date 클래스를 import 한 것
>>> # 그 후에 date.today() 메소드를 이용해 현재 날짜를 가져옴
>>> # date.today() 는 date 객체를 반환한다 date 객체는 today 변수에 할당되었음
>>> # strftime() 메소드를 이용해서 다른 형태로 날짜 출력 가능!
>>>
>>> from datetime import datetime
>>>
>>> now = datetime.now()
>>> print("now =", now)
now = 2020-06-17 17:08:31.014644
>>> # 현재 시간을 출력하기 위해서 datetime 클래스 사용
>>> dt_string = now.strftime("%d/%m/%Y %H: %M: %S")
>>> print("date and time =", dt_string)
date and time = 17/06/2020 17: 08: 31
>>>