[파이썬 톺아보기 1]

파이썬 프로그래밍의 시작

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

변수와 기본 데이터타입

1. 변수란

In [3]:
a = 10
a = a + 1
a
Out[3]:
11
In [4]:
a = 10 #10이 만들어지고, a가 10을 가리킨다
b = a #b는 a의 값인 10을 가리킨다
b = 20 #20이 만들어지고, b는 20을 가리킨다
print(a) #a에는 아무 영향이 없으므로, 원래 a가 가리키던 값을 가리킨다
10

2. 변수 이름 규칙

  • 영문자/ 숫자/ 언더바 사용가능
  • 첫 자리에 숫자 사용 불가능
  • 파이썬 키워드 사용 불가능
In [5]:
a = 1
A = 2
print(a)
print(A)
1
2
In [6]:
a1 = 1
a2 = 2
print(a1)
print(a2)
1
2
In [7]:
_a = 1
b__ = 2
c_1 = 3
print(_a)
print(b__)
print(c_1)
1
2
3
In [8]:
12a = 1
  File "<ipython-input-8-8b61d9586b4d>", line 1
    12a = 1
      ^
SyntaxError: invalid syntax
In [9]:
class = "A"
  File "<ipython-input-9-903281ad1f34>", line 1
    class = "A"
          ^
SyntaxError: invalid syntax

3. 숫자(Numbers)

In [10]:
a = 10 #정수 int
pi = 3.14 #실수 float
comp = 1+2j #복소수 complex number
In [11]:
type(a)
Out[11]:
int
In [12]:
type(pi)
Out[12]:
float
In [13]:
type(comp)
Out[13]:
complex

4. 문자열(string)

In [14]:
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 [15]:
a = "It's python"
b = 'python is "programming language"'
c = """Life is too short, 
you need python"""
print(a)
print(b)
print(c)
It's python
python is "programming language"
Life is too short, 
you need python
  • 문자열 안에 변수를 포함하여 출력하기
In [16]:
a = "apples"
"I like %s." % a
Out[16]:
'I like apples.'

5. 불(Bool or Boolean)

  • 참(True)과 거짓(False)를 나타내는 타입
  • 다른 언어와 다르게 첫 글자가 대문자
In [17]:
True
Out[17]:
True
In [18]:
False
Out[18]:
False

6. None

  • 값이 없음을 의미
  • 다른 언어에서의 null과 같음
In [19]:
a = None
In [20]:
a

7. 형변환(Casting)

  • 데이터 값을 필요에 따라서 다른 형태(타입)으로 변환하는 것
  • 일부 데이터타입끼리는 변환이 안 될 수 있다
In [21]:
a = 3.0
type(a)
Out[21]:
float
In [22]:
a = int(a)
type(a)
Out[22]:
int
In [23]:
a = "10"
a = int(a)
print(a)
10
In [24]:
a = "3.0"
a = float(a)
print(a)
3.0
In [25]:
a = "HelloWorld"
a = int(a)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-25-570eaac3bb07> in <module>
      1 a = "HelloWorld"
----> 2 a = int(a)

ValueError: invalid literal for int() with base 10: 'HelloWorld'

리스트(List)

1. 리스트란

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

2. 인덱싱과 슬라이싱

  • 인덱스: squares = [0, 1, 2, 3, 4]
  • squares[0]과 같은 형태로 특정 index의 값에 접근 가능
  • squares[-1]과 같은 형태는 리스트의 맨 마지막 요소에 접근 가능
  • 리스트의 요소로 리스트가 올 수도 있고, 리스트 안의 리스트를 인덱싱하여 값에 접근할 수도 있다
In [27]:
a = [1, 2, 3, [4, 5]]
a[3]
Out[27]:
[4, 5]
In [28]:
a[3][0]
Out[28]:
4
  • squares[2:4]와 같이 슬라이싱(부분 선택) 가능
  • : 기준으로 앞의 index는 포함, 뒤의 index는 포함하지 않는다
In [29]:
squares[:3]
Out[29]:
[1, 4, 9]
In [30]:
squares[3:]
Out[30]:
[16, 25]

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

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

4. 수정과 삭제

  • 리스트는 변경 가능한 타입(mutable type)이므로 수정이 가능하다
  • 리스트에서의 삭제 방법
    1. 내장함수 del 사용
    2. 리스트 관련 함수 remove 사용
In [34]:
a = [1, 2, 3, 4, 5]
a[2] = '짝!'
a
Out[34]:
[1, 2, '짝!', 4, 5]
In [35]:
del a[2]
a
Out[35]:
[1, 2, 4, 5]
In [36]:
a = [1, 2, 3]
b = a
print(a, b)
[1, 2, 3] [1, 2, 3]
In [37]:
b.append(4) #4를 가리키라는 = 이 아니라 b가 가리키는 자리에 4를 넣는것
print(a, b)
[1, 2, 3, 4] [1, 2, 3, 4]

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

1-1. 연산자 - 비교연산자

  • '==' : 두 연산자가 같으면 True
  • '!=' : 두 연산자가 다르면 True
  • '<' : 왼쪽 연산자가 작으면 True
  • '>' : 왼쪽 연산자가 크면 True
  • '<=' : 왼쪽 연산자가 작거나 같으면 True
  • '>=' : 왼쪽 연산자가 크거나 같으면 True
In [38]:
10 == 10
Out[38]:
True
In [39]:
9 != 10
Out[39]:
True
In [40]:
9 < 10
Out[40]:
True
In [41]:
10 > 9
Out[41]:
True
In [42]:
9 <= 9
Out[42]:
True
In [43]:
9 >= 9
Out[43]:
True

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

  • and : 둘 다 True 일 때 True
  • or : 둘 다 True이거나 둘 중 하나가 True일 때 True
  • not : True는 False로 False는 True로 변경
In [44]:
True and True
Out[44]:
True
In [45]:
False or True
Out[45]:
True
In [46]:
not True
Out[46]:
False

1-3. 연산자 - 산술 연산자

  • '+' : 더하기
  • '-' : 빼기
  • '*' : 곱하기
  • '/' : 나누기
  • '%' : 나머지
  • '**' : 제곱
  • '//' : 몫

1-4. 연산자 - 할당 연산자

In [47]:
a = 1
a += 1
print(a)
2
In [48]:
a = 1
a -= 1
print(a)
0
In [49]:
a = 2
a *= 2
print(a)
4
In [50]:
a = 4
a /= 2
print(a)
2.0
In [51]:
a = 8
a %= 6
print(a)
2
In [52]:
a = 2
a **= 3
print(a)
8
In [53]:
a = 10
a //= 3
print(a)
3
In [54]:
a = "Hello"
b = a
b += "World"
print(a, b)
Hello HelloWorld

1-5. 연산자 - 멤버쉽 연산자

In [55]:
1 in [1,2,3]
Out[55]:
True
In [56]:
"a" not in "hello"
Out[56]:
True

1-6. 연산자 - 식별 연산자

In [57]:
a, b = 20, 20
a is b
Out[57]:
True
In [58]:
a, b = 20, 30
a is not b
Out[58]:
True

1-7. 연산자 - 비트 연산자

  • &, |, ^, ~, >>, <<

2. 조건문

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

3-1. 반복문-for문

  • for문과 함께 많이 사용되는 range()함수: 필요한 범위의 숫자를 만들어내는 함수
In [60]:
for i in range(5):
    print(i)
0
1
2
3
4
In [61]:
for i in range(1, 10):
    print(i)
1
2
3
4
5
6
7
8
9
In [62]:
for i in range(1, 10, 2): #1부터 10까지 2 등간격으로
    print(i)
1
3
5
7
9
In [63]:
for i in range(10, 1, -2):
    print(i)
10
8
6
4
2

3-2. 반복문 - while문

  • while 문: while 문의 조건이 참(True)인 동안 반복 실행
In [64]:
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 [65]:
for i in range(1, 10):
    print(i)
    if i == 3:
        break #중간에 반복문 빠져나오기
    print(i)
1
1
2
2
3
In [66]:
for i in range(1, 10):
    print(i)
    if i == 3:
        continue ##해당 순차 건너뛰기
    print(i)
1
1
2
2
3
4
4
5
5
6
6
7
7
8
8
9
9

4. 플로우차트

  • 프로그래밍은 연산자/ 조건문/ 반복문 등으로 알고리즘 혹은 프로세스를 구현하는 것

함수

1. 함수란?

  • 특정 동작을 손쉽게 재사용할 수 있도록 구성한 코드 형태
In [67]:
a = 10
if a == 10:
    print("a는 10이다.")
elif a == 11:
    print("a는 10은 아니지만 11이다.")
else:
    print("a는 10도 11도 아니다.")
#이 코드에 a = 11을 넣어 실행시키려면?
a는 10이다.
In [68]:
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 [69]:
detect_10_or_11(20)
number는 10도 11도 아니다.

2. 파이썬 함수의 구조

In [70]:
#def 함수명(매개변수 혹은 전달인자):
#    실행할 명령어1
#    실행할 명령어2
#    ...
#    return 리턴값
  • 인풋을 넣으면안에서 어떤 작업을 한 뒤 결과값을 아웃풋(리턴값)으로 나오게 하는 것!
  • 인풋이 있을 수도 있고 없을 수도 있으며 아웃풋도 있을 수도 있고 없을 수도 있다
  • 인풋이나 아웃풋이 없더라도 함수내에서 어떤 작업을 하게 할 수 있다
In [71]:
#함수의 인풋과 아웃풋(리턴값)이 모두 있는 예시
def add(a, b):
    return(a+b)
add(1, 2)
Out[71]:
3
In [72]:
#함수의 인풋과 아웃풋(리턴값)이 모두 없는 예시
def hello_10_times():
    for i in range(10):
        print("Hello!! ({})".format(i))
hello_10_times()
Hello!! (0)
Hello!! (1)
Hello!! (2)
Hello!! (3)
Hello!! (4)
Hello!! (5)
Hello!! (6)
Hello!! (7)
Hello!! (8)
Hello!! (9)

3. 매개변수, 전달인자

  • 매개변수: 입력값을 표현하는 변수로서 함수 내에서 해당 변수명으로 사용된다
  • 전달인자: 함수에게 전달해주는 인자

4. 함수의 필요성

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

5. 사용자 정의 함수

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

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

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