파이썬 톺아보기 (1)

In [1]:
print("Hello World!")
Hello World!

0. 주석

In [2]:
"""
Hello World
Hello Python
안녕하세요?
"""
print("Hello World!")
Hello World!

변수와 기본 데이터 타입

1. 변수

In [16]:
a = 10    #10이 만들어지고, a가 10을 가리킨다
b = a     #b가 10을 가리킨다
print(a) 
print(b)  #a, b는 모두 10을 가리킨다
10
10
In [17]:
b = 20    #20이 만들어지고, b가 20을 가리킨다
print(b)
print(a)  #a에는 아무 영향이 없으므로, 원래 a가 가리키던 값이 출력된다
20
10

1-1. 변수 이름 규칙

  • 영문자(대, 소문자) / 숫자 / 언더바(_) 사용 가능
  • 첫 자리에 숫자 사용 불가능
  • 파이썬 키워드는 사용 불가능

2. 숫자 (Numbers)

In [23]:
a = 10        #정수 - int
pi = 3.14     #실수 - float
comp = 1+2j   #복소수 - complex number
In [20]:
type(a)
Out[20]:
int
In [21]:
type(pi)
Out[21]:
float
In [24]:
type(comp)
Out[24]:
complex

3. 문자열 (String)

In [27]:
#문자열을 만드는 4가지 방법
a = "Hello World"
b = 'Hello World'
c = """Hello World"""
d = '''Hello World'''

print(a)
print(b)
print(c)
print(d)
Hello World
Hello World
Hello World
Hello World
  • 문자열 안에 변수를 포함하여 출력하기
In [28]:
a = "apples"
"I like %s." % a
Out[28]:
'I like apples.'
In [29]:
a, b = "apples", "bananas"
"I like %s and %s" % (a,b)
Out[29]:
'I like apples and bananas'

4. 불(Bool or Boolean)

  • 참과 거짓을 나타내는 타입
  • 다른 언어와 다르게 첫 글자가 대문자
In [30]:
True
Out[30]:
True
In [31]:
False
Out[31]:
False

5. None

  • 값이 없음을 의미, 다른 언어에서의 null과 같음
In [33]:
a = None
In [35]:
print(a)
None

6. 형변환 (Casting)

  • 데이터 값을 필요에 따라서 다른 형태(타입)으로 변환하는 것
In [36]:
a = 3.0
type(a)
Out[36]:
float
In [37]:
a = int(a)
type(a)
Out[37]:
int

리스트 (List)

1. 리스트란

  • 다른 값 (or 여러 값)들을 덩어리로 묶는데 사용되는 데이터 타입
In [39]:
squares = [1, 4, 9, 16, 25]
squares
Out[39]:
[1, 4, 9, 16, 25]

2. 인덱싱과 슬라이싱

  • index는 0부터 시작
  • squares[0]과 같은 형태로 특정 index의 값에 접근 가능
  • squares[-1]과 같은 형태는 리스트의 맨 마지막 요소에 접근 가능
    • 리스트의 요소로 리스트가 올 수도 있다!
In [42]:
a = [1, 2, 3, [4, 5]]
a[3]       #인덱스 3번 값 출력
Out[42]:
[4, 5]
In [43]:
a[3][0]    #인덱스 3번 값 중 0번째 인덱스 출력
Out[43]:
4
  • squares[2:4]와 같이 슬라이싱(부분 선택) 가능
  • :기준으로 앞의 index는 포함, 뒤의 index는 포함하지 않는다
In [44]:
squares[:3]
Out[44]:
[1, 4, 9]
In [45]:
squares[3:]
Out[45]:
[16, 25]

3. 리스트 합치기, 길이 구하기

  • 리스트끼리는 + 기호(연산자)를 통해 하나의 리스트로 합칠 수 있다.
  • 리스트의 길이는 내장함수인 len()을 사용하여 구할 수 있다.
In [46]:
a = [1, 2, 3]
b = [4, 5, 6]
a+b
Out[46]:
[1, 2, 3, 4, 5, 6]
In [47]:
len(a)
Out[47]:
3
In [48]:
len(a+b)
Out[48]:
6

4. 수정과 삭제

  • 리스트는 변경 가능한 타입(mutable type)이므로 수정이 가능하다.
  • 리스트에서의 삭제 방법
    • 내장함수 del 사용 or 리스트 관련 함수 remove 사용
In [49]:
a = [1, 2, 3, 4, 5]
a[2] = '짝!'
a
Out[49]:
[1, 2, '짝!', 4, 5]
In [50]:
del a[2]
a
Out[50]:
[1, 2, 4, 5]

파이썬 프로그래밍의 기본 구조

1-1. 연산자 - 관계 연산자

  • '==': 두 연산자가 같으면 True
  • '!=': 두 연산자가 다르면 True
  • '<' : 왼쪽 연산자가 작으면 True
  • '>' : 왼쪽 연산자가 크면 True
  • '<=': 왼쪽 연산자가 작거나 같으면 True
  • '>=': 왼쪽 연산자가 크거나 같으면 True
In [51]:
10 == 10
Out[51]:
True
In [52]:
9 != 10
Out[52]:
True
In [53]:
9 < 10
Out[53]:
True
In [54]:
10 > 9
Out[54]:
True
In [55]:
9 <= 9
Out[55]:
True
In [56]:
9 >= 9
Out[56]:
True

1-2. 연산자 - 논리 연산자

  • and : 둘 다 참일 때 True
  • or : 둘 다 참이거나 둘 중 하나가 참일 때 True
  • not : True는 False로, False는 True로 변경
In [57]:
True and True
Out[57]:
True
In [59]:
False or True
Out[59]:
True
In [60]:
not True
Out[60]:
False

2. 조건문

  • if : if 뒤의 조건이 참이면 if문의 영역을 실행 아니면 무시
  • elif : else if, elif보다 위의 if나 elif의 조건에 해당하지 않는 다른 조건이 참이면 해당 영역을 실행 아니면 무시
  • else : else 위의 모든 조건들에 해당하지 않는 상태
In [61]:
a = 10  #a에 10이라는 값을 할당한 후, 
if a == 10:
    print("a는 10이다.")
elif a == 11:
    print("a는 10은 아니지만 11이다.")
else:
    print("a는 10도 11도 아니다.")
a는 10이다.

3-1. 반복문 - for문

  • for 문 : for 문의 조건에 맞게 반복 실행
In [87]:
# for 변수 in 리스트 혹은 튜플, 문자열:
#      실행할 코드
In [63]:
scores = [90, 100, 50, 25, 70, 60, 65]
for score in scores:
    print("%a점에 대한 합격여부 판단" % score)
    if score >= 70:
        print("합격")
    else:
        print("불합격")
90점에 대한 합격여부 판단
합격
100점에 대한 합격여부 판단
합격
50점에 대한 합격여부 판단
불합격
25점에 대한 합격여부 판단
불합격
70점에 대한 합격여부 판단
합격
60점에 대한 합격여부 판단
불합격
65점에 대한 합격여부 판단
불합격
  • for 문과 함께 많이 사용되는 range()함수 : 필요한 범위의 숫자를 만들어내는 함수
In [64]:
for i in range(5):
    print(i)
0
1
2
3
4
In [65]:
for i in range(1, 10):     #1부터 10까지
    print(i)
1
2
3
4
5
6
7
8
9
In [70]:
for i in range(1, 10, 2):  #1부터 10까지 2씩 끊어서
    print(i)
1
3
5
7
9
In [73]:
for i in range(10, 1, -2):  #10부터 1까지 역순으로 2씩 끊어서
    print(i)
10
8
6
4
2

3-2. 반복문 - while문

  • while 문 : while 문의 조건이 참인 동안 반복 실행
In [86]:
# while 조건문:
#       실행할 코드
In [74]:
count = 1
while count < 10:
    print("Count: %d" % count)
    count += 1
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
Count: 6
Count: 7
Count: 8
Count: 9
In [75]:
for i in range(1, 10):
    print(i)
    if i == 3:
        break     #i가 3이 되면 중간에 반복문 빠져나오기
    print(i)
1
1
2
2
3
In [76]:
for i in range(1, 10):
    print(i)
    if i == 3:
        continue   #i가 3이 되면 해당 순차 건너뛰기
    print(i)
1
1
2
2
3
4
4
5
5
6
6
7
7
8
8
9
9

함수

1. 함수란?

  • 특정 동작을 손쉽게 재사용할 수 있도록 구성한 코드 형태
In [77]:
a = 10
if a == 10:
    print("a는 10이다.")
elif a == 11:
    print("a는 10은 아니지만 11이다.")
else:
    print("a는 10도 11도 아니다.")
a는 10이다.
  • 위 코드에 a = 11을 넣어서 실행시키려면?
In [81]:
def detect_10_or_11(number):
    if number == 10:
        print("number는 10이다.")
    elif number == 11:
        print("number는 10은 아니지만 11이다.")
    else:
        print("number는 10도 11도 아니다.")
detect_10_or_11(11)
number는 10은 아니지만 11이다.
  • 함수의 호출은 함수명(매개변수 혹은 전달인자) 형식으로 한다.
In [83]:
detect_10_or_11(100)
number는 10도 11도 아니다.

2. 파이썬 함수의 구조

In [ ]:
# def 함수명(매개변수 혹은 전달인자):
#    실행할 명령어1
#    실행할 명령어2
#    ...
#    return 리턴값
  • def = 파이썬에서 함수임을 나타내는 예약어
  • [return 리턴값] 부분은 있어도 되고 없어도 된다.

3. 매개변수, 전달인자

In [88]:
def hello(name):   #name - 매개변수
    print("Hello, %s" % name)   # name - 매개변수
hello("joy")       #joy - 전달인자
Hello, joy
  • 매개변수 : 입력값을 표현하는 변수로써 함수 내에서 해당 변수명으로 사용한다.
  • 전달인자 : 함수에게 전달해주는 인자

4. 함수의 필요성

  • 같은 기능을 하는 코드는 재사용하는게 훨씬 효율적이다.
  • 함수 형태로 여러 기능을 나누어 놓아 해당 함수들을 조합하여 복잡한 기능을 체계적으로 구현할 수 있다.
  • 여러 기능을 나누어 두었으므로 특정 기능에 문제가 생겼을 시 해당 함수만 수정하면 된다. (=유지보수가 수월하다.)

5. 사용자 정의 함수

  • 프로그램을 작성하는 사람이 마음대로 작성하여 정의한 함수
    (ex. 위에서 정의한 detect_10_or_11()가 사용자 정의 함수)

6. 내장 함수 (built-in functions)

  • Don't reinvent the wheel.
  • 이미 있는 것을 다시 만드는데 시간을 낭비하지 말라!