코테 Python 문법 정리
전역변수
a = 0
def func():
global a
a += 1
Python
복사
자료형
•
실수형
◦
지수 표현 방식 제공
◦
최단경로 문제에서 가능한 최대값이 10억 미만일 때 자주 사용
a = 1e9
# 10^9 표현
Python
복사
산술연산자
•
나누기
# 나머지 구하기
x = 10 % 3
# 몫 구하기
y = 10 // 3
# 나누기 -> 실수로 변환
z = 7 / 3
Python
복사
•
거듭제곱
x = 2**3
# 8
Python
복사
문자열
1.
문자열 반복
hi = '안녕'*5
Python
복사
2.
문자열 formatting
•
% 이용
height = 172.5
a = '키는 %.2f입니다.' % height
print(a)
# 키는 172.5입니다.
Python
복사
•
str.format
→ 자료형 몰라도 가능
test = 'Hello {}'.format('HJ')
print(test)
Python
복사
•
자릿수 맞추기
year = 2023
month = 10
day = 11
a = '%d-%02d-%02d' % (year, month, day)
print(a)
Python
복사
•
역순 출력
# 방법 1
def strReverse1(string):
return string[::-1]
# 방법 2
def strReverse(string):
return reversed(string)
in_string = input('문자열을 입력하세요: ')
result = strReverse(in_string)
print(''.join(result))
Python
복사
•
비교
# 완전 일치
if str1 == str2:
# 부분 일치
if str1 in str2:
# 전방 일치
if str1.startswith(str2):
# 후방 일치
if str1.endswith(str2):
Python
복사
화면 출력
1.
separator
•
각 항목 사이의 문자 정의
year = 2023
month = 3
day = 5
print(year, month, day, sep = '/')
# 2023/3/5
Python
복사
2.
end
•
출력 내용의 마지막에 들어갈 문자열
a = 'Hello'
print(a, end='')
# Hello
Python
복사
입력
•
input()
◦
유저로부터 한줄 읽어들이고 문자열 변환 후 추가 strip
name = input('이름을 입력하세요: ')
print('%s님 반감습니다.' % name)
Python
복사
•
입출력 빠르게 하기
◦
사용자의 입력만을 받는 buffer를 하나 만들어 그 buffer에서 읽어들임
◦
맨 끝의 개행문자까지 같이 입력받음
import sys
input = sys.stdin.readline
Python
복사
조건문
•
조건부 표현식
score = 85
result = "Success" if score >= 80 else "Fail"
Python
복사
a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5}
result = [i for i in a if i not in remove_set]
print(result)
# [1, 2, 4]
Python
복사
반복문
1.
range(end)
•
‘0 ~ end-1’ 의 정수 범위(1씩 증가)의 값을 가진다.
2.
range(start, end)
•
start ~ end-1 의 정수 범위(1씩 증가)의 값을 가진다.
3.
range(start, end, 증가값)
•
start ~ end-1 의 정수 범위를 갖는데, 각 정수 사이의 간격은 증가값에 의해 결정된다.
4.
range(start, end, 감소값)
•
감소값, 즉 음수의 값을 가지는 경우 범위는 start ~ end+1 이 된다.
리스트
•
index(a)
◦
리스트 요소 a의 인덱스 값 return
# 뒤에서 첫 번째
print(a[-1])
# 뒤에서 세 번째
print(a[-3])
Python
복사
•
pop(x)
◦
x 번째 인덱스의 요소를 리스트에서 삭제
•
insert(x, y)
◦
x 번째에 y 추가
•
remove(a)
◦
리스트에서 값 a를 가진 요소 삭제
→ 여러개면 하나만
•
count(a)
◦
리스트에서 값 a를 가지는 원소 개수
a = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
x = a.index(30)
print(x) # 2
a.pop(x)
print(a) # [10, 20, 40, 50, 60, 70, 80, 90, 100]
a.remove(90)
print(a) # [10, 20, 40, 50, 60, 70, 80, 100]
a.clear()
print(a) # []
Python
복사
•
sort()
◦
리스트의 오름차순 정렬
◦
내림차순은 reverse = True 이용
list = [-7, 1, 5, 8, 3, 9, 11, 13]
list.sort()
print(list) # [-7, 1, 3, 5, 8, 9, 11, 13]
list.sort(reverse = True)
print(list) # [13, 11, 9, 8, 5, 3, 1, -7]
Python
복사
•
List comprehension
array = [i for i in range(20) if i % 2 == 1]
array = []
for i in range(20):
if i % 2 == 1:
array.append(i)
Python
복사
→ List comprehension 이용해 2차원 리스트 초기화
n = 3
m = 4
array = [[0] * m for _ in range(n)]
# [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
Python
복사
•
- ?
◦
반복을 수행하되 반복을 위한 변수값을 무시할 때
튜플
•
튜플과 리스트
◦
튜플은 소괄호 () 사용, 요소의 수정/삭제 불가능
→ 리스트에 비해 공간효율적, 각 원소의 성질이 다를 때 주로 사용
# tuple의 존재 자체를 완전히 삭제
del tuple
Python
복사
딕셔너리
•
key와 value로 구성
members = {'name': 'HJ', 'age': 28, 'nickname': 'Teed'}
# 접근
print(members['name']) # HJ
Python
복사
•
추가, 수정, 삭제 가능
•
관련 함수
key_list = data.keys()
value_list = data.values()
Python
복사
•
for문 활용
phones = {'아이폰 15': 2023, '아이폰 14': 2022, '아이폰 13': 2021, '아이폰 12': 2020}
print(phones)
for phone in phones:
print('%s -> %s' % (phone, phones[phone]))
print(len(phones))
Python
복사
•
정렬
fruits = {'apple': 2, 'banana': 1, 'pear': 2, 'melon': 0, 'plum': 1}
# key 기준 정렬
res = sorted(fruits)
print(res)
# ['apple', 'banana', 'melon', 'pear', 'plum']
# value 기준 정렬
res = sorted(fruits, key=lambda k : fruits[k])
print(res)
# ['melon', 'banana', 'plum', 'apple', 'pear']
Python
복사
집합
•
특징
◦
중복 허용X, 순서X
•
초기화
data = set([1, 2, 3, 4, 5])
data = { 1, 2, 3, 4, 5 }
Python
복사
•
연산
◦
합집합, 교집합, 차집합 제공
a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])
print(a|b) # {1, 2, 3, 4, 5, 6, 7}
print(a&b) # {3, 4, 5}
print(a-b) # {1, 2}
Python
복사
•
관련함수
data = set([1, 2, 3])
data.add(4)
print(data)
# {1, 2, 3, 4}
data.update([5, 6])
print(data)
# {1, 2, 3, 4, 5, 6}
data.remove(3)
print(data)
# {1, 2, 4, 5, 6}
Python
복사
함수
•
n개의 매개변수
◦
매개변수의 개수 정하지 않는다.
def average(*scores):
sum = 0
for i in range(len(scores)):
sum += scores[i]
avg = sum / len(scores)
print('%d과목의 평균: %.2f' % (len(scores), avg))
average(80, 90, 100) #3과목의 평균: 90.00
average(75, 80, 94, 78) # 4과목의 평균: 81.75
average(80, 73, 76, 86, 82) # 5과목의 평균: 79.40
Python
복사
•
할당에 의한 호출 (Call by Assignment)
◦
함수 호출 시 전달되는 값이나 변수의 데이터 형에 따라 자동으로 call by value나 call by reference 선택
# call by value
def func(X):
x = 100
print('func(): x = ', x, ', id = ', id(x))
x = 10
print('메인: x = ', x, ', id = ', id(x))
# 메인: x = 10 , id = 140596947851856
func(x)
# func(): x = 100 , id = 140596948043216
print('메인: x = ', x, ', id = ', id(x))
# 메인: x = 10 , id = 140596947851856
Python
복사
•
id()
# call by reference
def func(x):
x[0] = 100
print('func(): x = ', x, ', id = ', id(x))
x = [1, 2, 3]
print('메인: x = ', x, ', id = ', id(x))
# 메인: x = 10 , id = 140207078906448
func(x)
# func(): x = 100 , id = 140207079097808
print('메인: x = ', x, ', id = ', id(x))
# 메인: x = 10 , id = 140207078906448
Python
복사
•
람다 함수
lambda 매개변수 1, 매개변수 2, ... : 수식
Python
복사
f = lambda x, y, z: x + y + z
print(f(10, 20, 30))
# 60
def mul(n):
return lambda x: x * n
g = mul(3)
h = mul(5)
print(g(10))
# 30
print(h(10))
# 50
Python
복사
•
전역변수
◦
global 이용해 선언
•
파일 쓰기
file = open('sample.txt', 'w', encoding='utf-8')
Python
복사
•
파일 모드
◦
r : 읽기 모드 - 파일을 읽을 때 사용
◦
w: 쓰기 모드 - 파일에 내용을 쓸 때 사용
▪
해당 파일이 존재하지 않으면, 새로운 파일을 열고, 해당 파일이 존재하면 파일을 쓸 때 기존 파일의 내용에 덮어씀
◦
a: 추가 모드 - 기존의 파일에 새로운 내용을 추가할 때 사용
파이썬의 객체지향
class Member:
def __init__(self, name, age):
self.name = name
self.age = age
def showMember(self):
print('이름: %s' % self.name)
print('나이: %d' % self.age)
mem1 = Member('HJ', 28)
mem1.showMember()
# 이름: HJ
# 나이: 28
mem2 = Member('NM', 20)
mem2.showMember()
# 이름: NM
# 나이: 20
Python
복사
•
상속
class Animal:
def __init__(self, name):
self.name = name
def printName(self):
print(self.name)
class Dog(Animal):
def __init__(self, name, sound):
super().__init__(name)
self.sound = sound
def printSound(self):
print(self.sound)
dog1 = Dog('행복이', '멍멍!')
dog1.printName() # 행복이
dog1.printSound() # 멍멍!
Python
복사