디지털미디어랩 머신러닝 여름캠프

1주차(2) : Python 개발환경 구축, 기초 문법

참고 자료

1. 파이썬 조건문 기초

if ~ else 명령

  • if ~ else 명령을 사용하면 조건에 따라 다른 명령을 수행할 수 있다.

    if 참 또는 거짓을 가지는 값:
      조건이 참일 때 실행되는 명령들
    else:
      조건이 거짓일 때 실행되는 명령들
  • 주의해야할 점은 참 또는 거짓일 때 실행되는 명령들은 들여쓰기(탭)를 해야한다.

In [ ]:
a = True
if a == True:
    print("a는 참이다.")
else:
    print("a는 거짓이다.")
In [ ]:
a = True
if a:
    print("a는 참이다.")
else:
    print("a는 거짓이다.")
In [ ]:
b = 1

if b % 2 == 0:
    print("짝수")
else:
    print("홀수")
In [ ]:
b = 55

if (b >= 10) & (b < 100) & (b % 2 == 0):
    print("2자리 수의 짝수이다.")
else:
    print("2자리 수의 짝수가 아니다.")

if ~ elif ~ else 명령

  • 조건이 2가지로 나뉘는 게 아니라 여러가지인 경우는 if ~ elif ~ else명령을 사용할 수 있다.
if 조건1:
    조건1이 참일 때 실행되는 명령
elif 조건2:
    조건1이 거짓이고 조건2가 참일 때 실행되는 명령
elif 조건3:
    조건1과 조건2가 거짓이고 조건3가 참일 때 실행되는 명령

...(생략)...


else:
    지금까지의 어떤 조건도 참이 아니면 실행되는 명령

만약 10문제를 보는 시험에서 8개 이상을 맞으면 성적이 "A", 8개 미만이고 5개 이상을 맞으면 "B", " 5개 미만을 맞으면 "C"가 된다면 점수는 다음과 같이 계산할 수 있다.

In [ ]:
c = 6

if c >= 8:
    print("A")
elif c >=5:   
    print("B")
else:
    print("C")

중첩 조건문

  • 경우에 따라서는 조건문 안에 조건문이 또 있는 경우도 있다. 이러한 경우을 중첩, 영어로 nesting 이라고 한다.
  • 조건문 내부에 다시 조건문을 쓰게 되면 4칸을 더 들여써야 한다.
if 조건1:
    조건1이 참일 때 실행되는 명령
    if 조건2:
        조건1과 조건2가 모두 참일 때 실행되는 명령
    else:
        조건1은 참이고 조건2는 거짓일 때 실행되는 명령
else:
    조건1이 거짓일 때 실행되는 명령

예를 들어 중학교에서 팔굽혀펴기 시험을 보는데 남자는 10번 이상을 해야 합격(Pass)이고 아니면 불합격(Fail)이다. 여자는 5번 이상을 해야 합격이라면 다음과 같이 프로그램을 만들 수 있다.

In [ ]:
gender = "boy"
pushup = 8

if gender == "boy":
    if pushup >= 10:
        grade = "Pass"
    else:
        grade = "Fail"
else:        
    if pushup >= 5:
        grade = "Pass"
    else:
        grade = "Fail"

print(grade)

2. 파이썬 함수 기초

  • 함수(function)은 입력(input)을 넣으면 그 입력에 해당하는 출력(output)을 반환(return)하는 기계와 같다.
  • 파이썬에는 def 키워드를 사용하여 다음과 같이 함수를 만들 수 있다.

    def 함수이름(입력변수이름):
     출력변수를 만드는 명령
     return 출력변수이름
  • def는 "정의하다"라는 뜻을 가진 define에서 만들어 졌다.

예를 들어, 숫자 x를 입력하면 두 배가 되도록하는 함수는 다음과 같다.

In [ ]:
def twotimes(x):
    y = 2 * x
    return y


twotimes(2)
In [ ]:
"""
연습문제1
1. 짝수가 입력되면 "짝수"라는 문자열을, 홀수가 입력되면 "홀수"라는 문자열을 반환하는 함수를 만든다.
2. 윤년을 나타나는 수가 입력되면 "윤년"이라는 문자열을, 그렇지 않은 수가 입력되면 "평년"이라는 문자열을 반환하는 함수를 만든다.
"""
def f(number):
    if number%2 == 0:
        return "짝수"
    else:
        return "홀수"
    
print(f(5))
print(f(250))

여러개의 입력을 가지는 함수

  • 함수의 입력은 한 개가 아니라 여러 개가 되어도 상관없다.
  • 입력 변수가 여러개이면 쉼표, 영어로 comma 를 사용하여 함수를 정의한다.
  • 입력 변수는 원하는 만큼 얼마든지 만들 수 있다.
def 함수이름(입력변수1, 입력변수2, 입력변수3):
   출력변수를 만드는 명령
   return 출력변수이름
In [ ]:
def add(x, y):
    return x+y

print(add(5, 12))

def sum(a, b, c):
    return a+b+c

print(sum(3, 12, 7))

함수 유의사항

  • 함수는 자주 사용하는 기능(코드 or 스크립트)을 쉽게 사용할 수 있도록 묶어 놓은 레시피와 같다.
  • 하나의 함수는 하나의 기능을 하는 것이 좋다.
  • Python의 함수는 다른 프로그래밍 언어와는 다르게 여러개의 변수를 반환(return)할 수 있다.
In [ ]:
def g(a, b, c):
    return a*2, b*3, c*4

print(g(3, 5, 7))

x, y, z = g(4, 6, 8)
print(x, y, z)

파이썬 for 반복문 기초

  • 다음과 같이 문자열을 반복해서 인쇄해야 하는 경우를 생각해보자.
    print("=1=")
    print("=2=")
    print("=3=")
    print("=4=")
    print("=5=")
    print("=6=")
    print("=7=")
    print("=8=")
    print("=9=")

for 반복문

  • 파이썬에서는 이렇게 명령이 반복될 수 있게 하는 for 반복문을 사용할 수 있다.
  • 반복문은 영어로 loop라고 한다.
  • for 반복문은 다음과 같이 사용한다.

    for 카운터변수 in range(반복횟수):
      반복해서 실행할 명령
  • 이 때 반복횟수는 10, 100과 같은 양의 정수이어야 하고 카운터 변수의 이름은 아무거나 쓸 수 있다.

  • 하지만 전문 프로그래머들은 보통 i 또는 j 라는 변수 이름을 자주 사용한다.
In [ ]:
for i in range(10):
    print("=")
In [ ]:
for i in range(10):
    print(i)
In [ ]:
for i in range(10):
    print("=" + str(i) + "=")
In [ ]:
for i in range(9):
    print("=" + str(i+1) + "=")
In [ ]:
for i in range(1, 10):
    print("=" + str(i) + "=")

연습문제 1

  • 반복문과 문자열 연산을 사용하여 다음과 같이 인쇄한다.
    @
    @@
    @@@
    @@@@
    @@@@@
    @@@@@@
    @@@@@@@
    @@@@@@@@
    @@@@@@@@@
    @@@@@@@@@@

연습문제 2

  • 반복문과 문자열 연산을 사용하여 다음과 같이 인쇄한다.
    @@@@@@@@@@
    @@@@@@@@@
    @@@@@@@@
    @@@@@@@
    @@@@@@
    @@@@@
    @@@@
    @@@
    @@
    @

중첩 반복문

  • 어떤 경우에는 반복문 안에서 다시 반복문을 실행해야 하는 경우가 있을 수 있다. 예를 들어 다음과 같이 인쇄해야 하는 경우를 생각해 보자.

    0 1 2 3 
    1 2 3 4 
    2 3 4 5 
    3 4 5 6
  • 여러가지 방법이 있을 수 있지만 다음과 같이 for 반복문 안에 다시 for 반복문을 사용하는 중첩 반복문(nested loop)를 사용할 수도 있다.

In [ ]:
for i in range(4):
    for j in range(4):
        print(i + j, end=" ")
    print()
In [ ]:
def gugudan(x):
    for i in range(1, 10):
        print(str(x) + " * " + str(i) + " = " + str(x*i))

gugudan(4)
In [ ]:
for i in range(2, 10):
    gugudan(i)
    print()