코딩테스트 준비를 위한 기본 문법 후루룩
- 파이썬은 인터프리터 방식의 언어이다.
- 한 문장 입력시 바로 실행 가능
- 오류 발생 전까지의 코드를 실행 가능
# 출력
print('5')
# 변수 & 입력
age = input('당신의 나이는? : ')
print(age)
# 리스트
my_list = [1, 2, 3]
students = ['일', '이']
print(students)
import random
print(random.choice(students))
students[0] = '강'
print(students)
# 튜플은 값을 바꿀 수 없다.
my_tuple = ('튜', '플')
print(my_tuple)
# Dictionary {key, val}
my_dict = {'나': '여', '강동원': '남'}
print('dictonary = ' + my_dict['나'])
# type 확
my_str = "김씨가족"
print(my_str)
print(type(my_str))
# 출력의 끝 지정
print('집단지성 ')
print('집단지성 ', end='')
print('enter가 안들어감')
# 집단지성
# 집단지성 enter가 안들어감
# Escape code
print('미운 코딩 새끼의\n 집단지성들')
end
를 지정해주면 된다.# 문자열 줄바꿈 표시
my_str = """제스퍼
토미
메타
"""
# 문자열 -> 문자열 리스트
my_str = "coding"
# 포맷 메소드 사용 ('{}' .format() )
my_str = 'My name is {}'.format('커피')
my_str = 'aaa {}'.format('1, 2, 3.14')
my_str = '{} x {} = {}'.format(2, 3, 2*3)
# 2 x 3 = 6
my_str = '{1} x {0} = {2}'.format(2, 3, 2*3)
# 3 x 2 = 6
# 인덱싱
str = '배고프네요'
print(str[1])
# Slicing
myname = '김왼손의 왼손코딩'
print(myname[5:7])
print(myname[:3])
# string.split()
myname = '김왼손의 왼손코딩'
print(myname.split())
# ['김왼손의', '왼손코딩']
fruits_str = '거봉 수박 포도 복숭아'
fruits = fruits_str.split()
print(fruits)
# ['거봉', '수박', '포도', '복숭아']
a = 'a:b:c:d'
b = a.split(':')
print(b)
# ['a', 'b', 'c', 'd']
# Docstring
"""이것도 주석입니다
"""
# count
a = "hobby"
a.count('b') # 2
# index
a = "Life is too short"
a.index('t') # 8
# join
",".join('abcd')
'a,b,c,d'
# upper, lower
a = "HI"
a.lower() # hi
a.upper() # HI
# lstript (왼쪽 공백 지우기)
a = " ji"
a.lstrip()
"ji"
# rstrip (오른쪽) / strip(양쪽)
a.strip()
# replace
a = "Life is too short"
a.replace("Life", "HI")
print(a) # "HI is too short"
"""
또는 '''
로 문자열 줄바꿈이 가능하다.[시작위치:끝위치]
"""
를 이용하면 주석 사용 가능%d
: int%f
: double{}
.format()
파이썬의 리스트는 클래스로 구현되어 있으므로 다양한 연산(멤버 함수 또는 메소드)를 지원한다.
# List 선언
my_list = []
# List 추가
my_list.append('찹쌀떡')
my_list.append('배고파')
my_list.append('하나')
my_list.append('둘')
my_list.append('셋')
my_list3 = [1, 2, 3]
print(my_list)
print(my_list3)
# List 인덱싱 (주소를 이용해 값을 가져옴)
print(my_list[1])
print(my_list[2:5])
# List 삭제
del my_list[3]
print(my_list)
# List.sort() 정렬
my_list.sort()
my_list.append('하나')
print(my_list)
# List.count() 리스트의 요소의 개수
print(my_list.count('하나'))
print(len(my_list))
append('하나')
: 추가del my_list[3]
: 인덱스 3의 값을 삭제list[2:5]
: 2~5번 인덱스의 값list.sort()
list.count('하나')
: 하나의 개수List 와 비슷하다. Tuple도 List처럼 여러 값을 모아서 저장한다.
다른 점은 값을 변경할 수 없다는 점이다. (Immutable / List 는 Mutable)
# Tuple
my_tuple = ()
my_tuple = 1, 2, 3
print(my_tuple)
Packing
Unpacking
in연산자는 리스트, 튜플과 딕셔너리에서 서로 다른 알고리즘을 사용한다.
리스트와 튜플에서는 순차탐색을, 딕셔너리에서는 고급 탐색구조인 해싱을 사용한다.
>>> a = {1: 'a', 2: 'b'}
>>> a
{1: 'a', 2: 'b'}
# 추가
>>> a[3] = 'c'
>>> a
{1: 'a', 2: 'b', 3: 'c'}
>>> a['name'] = 'pey'
>>> a
{1: 'a', 2: 'b', 3: 'c', 'name': 'pey'}
>>> a[4] = [1,2,3]
>>> a
{1: 'a', 2: 'b', 3: 'c', 'name': 'pey', 4: [1, 2, 3]}
>>> del a[1]
>>> a
{2: 'b', 3: 'c', 'name': 'pey', 4: [1, 2, 3]}
>>> grade['science'] = 45
>>> grade
{'math': 90, 'eng': 100, 'science': 45}
>>> grade.values()
dict_values([90, 100, 45])
>>> grade.keys()
dict_keys(['math', 'eng', 'science'])
>>> grade.items()
dict_items([('math', 90), ('eng', 100), ('science', 45)])
>>> grade.get('math')
90
>>> grade.get('math', 'foo')
90
>>> grade.get('foo')
>>> grade.get('foo', 'foo')
'foo'
>>> grade
{'math': 90, 'eng': 100, 'science': 45}
>>> 'eng' in grade
True
>>> 'none' in grade
False
>>> s1 = set([1,2,3])
>>> s1
{1, 2, 3}
# Set -> List
>>> l1 = list(s1)
>>> l1
[1, 2, 3]
>>> s1 = set([1, 2, 3, 4, 5, 6])
>>> s2 = set([4, 5, 6, 7, 8, 9])
>>> s1 & s2
{4, 5, 6}
>>> s1.intersection(s2)
{4, 5, 6}
>>> s1 | s2
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s1 - s2
{1, 2, 3}
>>> s1.difference(s2)
{1, 2, 3}
>>> s2 - s1
{8, 9, 7}
>>> s2.difference(s1)
{8, 9, 7}
&
또는 .intersection
|
또는 .union
-
또는 .difference
>>> s1 = set([1,2,3])
>>> s1
{1, 2, 3}
# add
>>> s1.add(4)
>>> s1
{1, 2, 3, 4}
# update
>>> s1.update([4,5])
>>> s1
{1, 2, 3, 4, 5}
# remove
>>> s1.remove(3)
>>> s1
{1, 2, 4, 5}
>>> if []:
... print('참')
... else:
... print('거짓')
...
거짓
# bool
>>> bool('')
False
>>> bool('ad')
True
자료형의 참, 거짓을 반환
변수란 객체를 가리키는 것
a = [1, 2, 3] 일 때
>>> a = [1, 2, 3]
>>> b = a # 동일한 주소값
>>> c = a[:] # 다른 주소값
>>> from copy import copy
>>> d = copy(a)
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 4, 3]
>>> c
[1, 2, 3]
# id
>>> id(a)
1932009722056
>>> id(b)
1932009722056
>>> id(c)
1932008801736
>>> id(d)
1932009722504
[:]
copy 모듈
>>> a = 3
>>> b = 5
>>> print(a, b)
3 5
>>> a, b = b, a
>>> print(a, b)
5 3
>>> if(money):
... print(money)
...
True
>>> test = [1, 2, 3]
>>> if 1 in test:
... pass
... else:
... print('일이다')
...
>>> pocket = ['paper', 'cellphone']
>>> card = True
>>> if 'money' in pocket:
... print('걍')
... elif card:
... print('cardddd')
... else:
... print('ggg')
...
cardddd
>>>
:
콜론을 붙여야한다.>>> prompt = """
... 1. Add
... 2. Del
... 3. List
... 4. Qukt
...
... Enter number: """
>>> number = 0
>>> while number != 4:
... print(prompt)
... number = int(input())
...
1. Add
2. Del
3. List
4. Qukt
Enter number:
5
1. Add
2. Del
3. List
4. Qukt
Enter number:
1
1. Add
2. Del
3. List
4. Qukt
Enter number:
4
>>>
# continue
>>> a = 0
>>> while a < 10:
... a = a + 1
... if a % 2 == 0: continue
... print(a)
...
1
3
5
7
9
>>>
for 변수 in 리스트(문자열,튜플 등):
문장1
문장2
>>> fruits = ['apple', 'orange', 'kiwi', 'banana']
>>> for i in fruits:
... print(i)
...
apple
orange
kiwi
banana
>>> a = [(1,2), (3,4), (7,8)]
>>> for (left, right) in a:
... print(left+right)
...
3
7
15
>>> grades = [90, 25, 67, 45, 80]
>>>
>>> for i in grades:
... if i > 60:
... print('합격')
... else:
... print('불합격')
...
합격
불합격
합격
불합격
합격
range함수는 숫자 리스트를 자동적으로 만들어준다.
>>> for i in range(2,10):
... for j in range(1, 10):
... print(i*j, end=" ")
... print('')
...
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
>>> for i in range(len(marks)):
... if marks[i] < 60:
... continue
... print("%d번 학생 합격!" % (i+1))
...
1번 학생 합격!
3번 학생 합격!
5번 학생 합격!
>>> a
[1, 2, 3, 4]
>>> result = [i*2 for i in a if i % 2 == 0]
>>> print(result)
[4, 8]
def
는 함수를 만들 때 사용하는 예약어이다.
>>> def add(a, b):
... return a+b
...
>>> add
<function add at 0x000001C1D4C04AF8>
>>> add(1, 2)
3
# *args 사용
>>> def add_many(*args):
... result = 0
... for i in args:
... result = result + i
... return result
...
>>> add_many(1, 2, 3, 4, 5)
15
>>> add_many(3, 4, 5)
12
# **kwargs
>>> def print_kwargs(**kwargs):
... print(kwargs)
...
>>> print_kwargs(a=1)
{'a': 1}
*args
사용**kwargs
**
을 붙이면 매개변수는 딕셔너리가 된다!간단할 때 사용
>>> add = lambda a, b: a+b
>>> result = add(3, 4)
>>> print(result)
7