python

파이썬(Python)은 1990년 암스테르담의 귀도 반 로섬(Guido Van Rossum)이 개발한 인터프리터 언어이다. 귀도는 파이썬이라는 이름을 자신이 좋아하는 코미디 쇼인 "몬티 파이썬의 날아다니는 서커스(Monty Python’s Flying Circus)"에서 따왔다고 한다. 파이썬의 사전적인 의미는 고대 신화에 나오는 파르나소스 산의 동굴에 살던 큰 뱀을 뜻하며, 아폴로 신이 델파이에서 파이썬을 퇴치했다는 이야기가 전해지고 있다. 대부분의 파이썬 책 표지와 아이콘이 뱀 모양으로 그려져 있는 이유가 여기에 있다.

왜 파이썬일까요?

쉽다

  • 문법이 쉽고 간결해서 배우고 사용하기쉽다.
  • 다른 언어들보다 코딩이 비교적 쉽다.
  • 외국의 경우 파이썬을 입문 영어로 많이 사용한다.
  • 범용 프로그래밍 언어이기 때문에 데이터 분석, 게임 개발, 보안 등 다방면에 사용이 가능하다.

많다

  • 참고할 자료가 많아.
  • 파이썬의 모토 : "어떤 문제를 해결하는 가장 아름다운 방법이 있다."

빠르다

  • 실행 속도가 빠르다는 것이 아니라 개발을 빠르게 할 수 있다는 말이다.
  • 배우는 데 걸리는 시간도 다른 언어에 비해 비교적 적게 든다.
  • 파이썬은 제공하는 라이브러리들이 많아서 구현할 필요 없이 바로 가져다 쓸 수 있다.

왜 파이썬일까요?

리스트

[val1, val2,...]
  • 여러 값을 한꺼번에 모을 수 있습니다.
  • 값들은 변경할 수 있고 순서가 있습니다.
  • 가변과 불변
    • 가변(mutable) : 값을 변경할 수 있습니다. 리스트, 딕셔너리 등이 해당됩니다.
    • 불변(immutable) : 값을 변경할 수 없습니다. 문자열, 튜플 등이 해당됩니다. 빈 리스트 만들기
>>> my_list = []
[]
>>> type(my_list)
<class 'list'>

값을 가지고 있는 리스트 만들기

>>> my_list = [1, 2, 3]
>>> print(my_list)
[1, 2, 3]

리스트의 메서드 list.append()를 사용해서 값을 추가할 수 있습니다.

>>> students = ['Tom', 'Alice', 'Sally']
>>> students.append('Betty')
>>> students.append('Angela')
>>> print(students)
['Tom', 'Alice', 'Sally', 'Betty', 'Angela']
>>> animals = ['코알라', '하이에나', '바다소', '땅다람쥐', '바다코끼리', '스컹크', '아나콘다']
>>> print(animals[1])
['하이에나']

list.sort(): 리스트 안의 값을 정렬합니다.

>>> animals =['코알라', '하이에나', '바다소', '땅다람쥐', '바다코끼리', '스컹크', '아나콘다']
>>> animals.sort()
>>> print(animals)
['땅다람쥐', '바다소', '바다코끼리', '스컹크', '아나콘다', '코알라', '하이에나']

list.count(): 해당 값의 개수를 셉니다.

>>> animals =['코알라', '하이에나', '바다소', '땅다람쥐', '바다코끼리', '스컹크', '아나콘다']
>>> print(animals.count('바다소'))
1

튜플

(val1, val2, ...)
  • 튜플은 리스트와 거의 유사합니다.
  • 여러 값을 한꺼번에 모을 수 있습니다.
  • 값을 변경할 수 없다는 점이 리스트와 다릅니다.
  • 튜플은 괄호를 쓰지 않아도 됩니다.
>>> my_tuple = (1, 2, 3)
>>> type(my_tuple)
<class 'tuple'>
>>> my_tuple = 1, 2, 3
>>> type(my_tuple)
<class 'tuple'>
  • 패킹(packing) : 여러 개의 값을 한꺼번에 묶는 것을 말합니다.
  • 언패킹(unpacking) : 묶여 있는 값을 풀어놓는 것을 말합니다.
>>> my_tuple = (1, 2, 3)
>>> num1, num2, num3 = my_tuple
>>> print(num1)
1
>>> print(num2)
2
>>> num1 = 1
>>> num2 = 2
>>> num1, num2 = num2, num1
>>> print(num1)
2
>>> print(num2)
1

딕셔너리

{key1: value1, key2: value2, key3: value3 ...}
  • 키(key)와 값(value)을 쌍으로 갖는 자료형입니다.
  • 리스트와의 차이점은 관련된 정보를 연관시킨다는 것입니다.
  • 리스트는 값을 다루기 위해 인덱스를 사용하지만 딕셔너리는 키를 사용합니다.
>>> my_dict = {}  # {}
>>> my_dict[1] = 'a'  # {1: 'a'}
>>> my_dict['b'] = 2  # {1: 'a', 'b': 2}
>>> my_dict['c'] = 'd'  # {1: 'a', 'b': 2, 'c': 'd'}

dict.values(): 딕셔너리에서 값만 뽑아 돌려줍니다.

students = {'학생1': 'Tom', '학생2': 'Sally', '학생3': 'Betty'}
for student in students.values():
    print(student)

Tom
Sally
Betty

dict.keys(): 딕셔너리에서 키만 뽑아 돌려줍니다.

students = {'학생1': 'Tom', '학생2': 'Sally', '학생3': 'Betty'}
for key in students.keys():
    print(key)

학생1
학생2
학생3

dict.items(): 딕셔너리에서 키와 값 쌍을 뽑아 돌려줍니다.

students = {'학생1': 'Tom', '학생2': 'Sally', '학생3': 'Betty'}
for key, val in students.items():
    print(key, val)

학생1 Tom
학생2 Sally
학생3 Betty

if

name = 'Edwin'
if name == 'Edwin':
    print('당신이 Edwin이군요.')
    print('만나서 반가워요 Edwin.')

당신이 Edwin이군요.
만나서 반가워요 Edwin
name = 'Bob'
if name == 'Alice':
    print('당신이 Ailce이군요.')
elif name == 'Bob':
    print('당신이 Bob이군요.')
else:
    print('아니 당신은!?')

당신이 Bob이군요.
count = 0
while count < 10:
    count += 1
    if count < 4:
        continue
    if count == 8:
        break

for

for 변수 in 컨테이너:
    실행할 명령1
    실행할 명령2
    ...
  • 컨테이너 안의 값을 전부 순회할 때까지 반복합니다.
  • 반복하는 부분을 코드블럭이라고 합니다.
  • 코드블럭을 구분하기 위해 콜론(:)과 들여쓰기를 사용합니다.
  • 파이썬에서는 들여쓰기가 선택이 아닌 필수입니다.
  • 띄어쓰기의 종류는 하나로 통일해야 합니다.
  • 보통 띄어쓰기 4칸을 권장합니다.
animals = [땅다람쥐, 바다코끼리, 스컹크, 아나콘다, 코알라, 하이에나, 바다소]
for animal in animals:
    print(animal)

땅다람쥐
바다코끼리
스컹크
아나콘다
코알라
하이에나
바다소
for num in [1, 2, 3]:
    print(num)

1
2
3
for ch in '김왼손':
    print(ch)

김
왼
손
  • range(stop)은 0부터 stop 전까지의 숫자를 나열합니다.
  • range(start, strop)는 start부터 stop 전까지의 숫자를 나열합니다.
for n in range(3):
    print(n)

0
1
2
for n in range(4, 6):
    print(n)

4
5

아래는 for를 이용해 구구단 2단을 출력하는 예제입니다.

for i in range(1, 10):
    print('{}x{}={}'.format(2, i, 2 * 1))

for를 중첩해서 사용하면 2단부터 9단까지 모두 출력할 수도 있습니다.

for j in range(2, 10):
    for i in range(1, 10):
        print('{}x{}={}'.format(j, i, j * i))

컴프리헨션 Comprehension

주어진 리스트에서 홀수만 뽑아내는 코드를 작성해봅시다.

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
odd_numbers = []

for number in numbers:
    if number % 2 == 1:  # 2로 나눴을 때 1이 남으면 홀수입니다.
        odd_numbers.append(number)

다음은 컴프리헨션을 이용한 방법입니다.

>>> odd_numbers = [number for number in numbers if number % 2 == 1]

함수

def 함수이름(인자1, ...):
    실행할 명령1
    실행할 명령2
    ...
    return 결과
  • 콤마(,)를 사용해서 여러 개의 값을 돌려받을 수 있습니다.
  • 여러 개를 돌려줄 때는 하나의 튜플로 묶어서 전달합니다.
def add_mul(num1, num2):
    return num1 + num2, num1 * num2

my_add, my_mul = add_mul(1, 2)  # 3, 2

모듈

import 모듈이름
  • 비슷한 기능의 함수들을 모아둔 파일입니다.
  • 직접 만들 수도 있고 가져와서 사용할 수도 있습니다.
  • import 키워드로 모듈을 가져옵니다.
  • 마침표(.)를 이용해 함수를 사용합니다.

random

random.choice(): 리스트의 값 중 하나를 랜덤하게 선택합니다.

>>> import random
>>> students = ['Tom', 'Sally', 'Betty', 'Eric', 'Angela', 'Stephany'] 
>>> print(random.choice(students))
Betty
>>> print(random.choice(students))
Eric
>>> print(random.choice(students))
Tom

random.sample(): 리스트의 값 중에서 지정한 개수만큼 랜덤하게 선택합니다.

import random
fruits = ['apple', 'banana', 'lemon']
my_fruit = random.sample(fruits, 2)
print(my_fruit) # ['apple', 'banana'] or ['banana', 'lemon'] or ...

random.randint(): 특정 범위의 정수 중 하나를 랜덤하게 선택합니다.

import random
my_int = random.randint(0, 10)
print(my_int)  # 0~10

http://pythontutor.com/ 미운코딩새끼 4시간만에 끝내는 파이썬 기초

코딩 스타일

PEP8