Python 정리 02
07 May 2019
Reading time ~4 minutes
Python 정리 02 - 기본문법, 데이터형, 연산자
기본문법
- 들여쓰기에 주의
- ’;’ 생략가능
- ’:’ 사용
- Python Enhancement Proposal 8이란 스타일 가이드가 존재
- 예약어
and as assert break class continue def del elif else except
is finally for from global if import in lambda nonlocal not
or pass raise return try while with yield
- 주석
# 한줄 주석
'''
여러줄 주석, 큰 따옴표도 사용가능
'''
특수문자
출력
- 한글을 출력전에는 첫번째 출에 UTF-8로 encoding이 필요
# --*-- coding:UTF-8 --*--
print("안녕하세요?");
- 문자열과 다른 형을 연결하여 출력할 순 없다
- 문자열과 다른 형을 연결하여 출력할 땐 str()로 문자열형으로 변경한다
i=7
# print("오늘은"+i+"일") # 에러!
print("오늘은 "+str(i)+"일")
- 여러개의 값을 묶어서 형식을 갖고 출력할 때
- 형식을 가진 문자열은 format함수를 사용하여 출력한다
i=7
print("오늘은 {}일".format(i))
name="김정윤"
addr = "서울시 강남구 역삼동"
print("{}-{}-{}".format(name,i,addr))
# {}안에 인덱스를 명시하여 순서를 바꿔줄 수 있다
print("{1}-{2}-{0}".format(name,i,addr))
- 문자열에 *를 사용하면 해당 문자열이 곱한만큼 출력된다
print("-"*30)
Python 데이터형
- bool : True, False
- 1byte
- 정수형 : 음수, 양수를 포함하는 숫자
- int : 4byte, long - 무제한(Python2)
- 실수형 : 소수점을 포함하는 숫자
- float - 8byte
- /연산은 정수로 나누더라도 결과는 float
- 문자열 : “ 또는 ‘로 묶여있는 글자 들
- 문자열 끼리만 +연산자로 결합가능
- slicing 지원
- 리스트 : 정수, 실수, 문자열등의 값 집합
- [값, … ]
- 튜플 : 정수, 실수, 문자열들의 값 집합
- (값, … )
- 사전 : 키와 값의 쌍
- {키:값, … }
# -*- coding:UTF-8 -*-
# Python은 동적데이터형
# - 변수에 값이 할당될 때 데이터형이 결정됨
flag = True # bool
print(flag)
# type함수를 쓰면 타입확인가능, Python은 다 객체
print(type(flag))
# str()를 안쓰면 error 발생
print(str(type(flag)) + " " + str(flag))
# str()을 매번 쓰는것보다 format()이 편함
print("{}, {} ".format(type(flag), flag))
i = 5 # int
print("{}, {}".format(type(i), i))
j = 3.3 # float
print("{}, {}".format(type(j), j))
# 큰 길이의 숫자도 사용가능
k = 5555555555555555555555555555555555555555555
print("{}, {}".format(type(k), k))
# msg = '한줄 문자열' # 문자열은 큰따옴표 작은 따옴표 둘 다 가능
msg = "한줄 문자열"
print("{}, {}".format(type(msg),msg))
msg = '''
오늘은 화요일 입니다
내일은 수요일 입니다
'''
print("{}, {}".format(type(msg),msg))
list 타입
- 요소로 구성
- 모든 데이터 입력가능
- 순차적으로 입력
- 연산으로 리스트끼리 결합가능
- 인덱스를 사용한 참조연산
tuple 타입
- 요소로 구성
- 모든 데이터를 입력가능
- 순차적으로 입력
- 연산으로 튜플끼리 결합가능
- 값이 변경되지 않음
dict 타입
- 키와 값의 쌍으로 구성
- 모든 데이터 입력가능
- 비 순차적으로 입력
- 연산으로 딕셔너리 결합 불가능
- 키를 사용하여 값 얻기
- 값은 중복이 가능하나 키는 중복될 수 없음
# list
name_list = ["이재찬", "김정윤", "정택성", "김희철"]
print("{}, {}".format(type(name_list), name_list))
# tuple
name_tuple = ("자바", "오라클", "Python")
print("{}, {}".format(type(name_tuple), name_tuple))
# dict
name_dict = {"자바":"객체지향언어", "Oracle":"대용량 데이터베이스",
"Python":"수치연산에 강력한 언어"}
print("{}, {}".format(type(name_dict), name_dict))
연산자
- 산술 연산자
# 산술 연산자 : +, -, *, /, //(몫), %
print("{} + {} = {} ".format(5, 7, 5+7))
print("{} - {} = {} ".format(5, 7, 5-7))
print("{} * {} = {} ".format(5, 7, 5*7))
print("{} / {} = {} ".format(5, 7, 5/7))
print("{} // {} = {} ".format(5, 7, 5//7))
print("{} % {} = {} ".format(5, 7, 5%7))
- 쉬프트 연산자
# 쉬프트 연산자 : 비트밀기 연산
print("{} << {} = {}".format(3,2,3<<2)) # 0011 << 2 = 1100
print("{} >> {} = {}".format(30,3,30>>3)) # 0001 1110 >> 3 = 0000 0011
- 관계 연산자
# 관계 연산자 : >, <, >=, <=, ==, !=
print("{} > {} = {}".format(5, 7, 5 > 7))
print("{} < {} = {}".format(5, 7, 5 < 7))
print("{} >= {} = {}".format(5, 7, 5 >= 7))
print("{} <= {} = {}".format(5, 7, 5 <= 7))
print("{} == {} = {}".format(5, 7, 5 == 7))
print("{} != {} = {}".format(5, 7, 5 != 7))
- 논리 연산자
# 논리연산자 : and, or, not
print("{} and {} = {}".format(5 > 4, 7 < 10, 5 > 4 and 7 < 10))
print("{} or {} = {}".format(5 < 4, 7 > 10, 5 < 4 or 7 > 10))
print("not {} = {}".format(True, not True))
- 비트 논리 연산자
- 2의보수 = 1의보수 + 1
# 비트 연산자 : &, |, ^, ~
print("{} & {} = {}".format(5, 7, 5&7)) # 0101 & 0111 = 0101
print("{} | {} = {}".format(5, 7, 5|7)) # 0101 & 0111 = 0111
print("{} ^ {} = {}".format(5, 7, 5^7)) # 0101 ^ 0111 = 0010
print("~{} = {}".format(5, ~5)) # ~0101 = 1111 ... 1010
- 대입 연산자
# 대입 연산자 : =, +=, -=, *=, /=, //=, %=, <<=, >>=, &=, |=, ^=
i = 5
i += 7 # i = i+7 # 12
i -= 3 # i = i-3 # 9
i *= 2 # i = i*2 # 18
i /= 4 # i = i/4 # 4.5
i //= 3 # i = i//3 # 1.0
i %= 2 # i = i%2 # 1.0
i = 2
i <<= 2 # 0010 << 2 = 1000 # 8
i >>= 1 # 1000 >> 1 = 0100 # 4
i &= 5 # 0100 & 0101 = 0100 # 4
i |= 6 # 0100 | 0110 = 0110 # 6
i ^= 3 # 0110 | 0011 = 0101 # 5