본문 바로가기
Python

파이썬 제어문

by GGoris 2014. 12. 23.
반응형

이 글은 '열혈강의 Python 개정판ver.2'를 참고로 작성하였습니다.


'열혈강의 Python 개정판ver.2' 이강성저  프리렉





RaspberryPI에 Raspbian을 사용하였습니다.





파이썬 제어문


파이썬은 들여쓰기에 민감한 언어입니다.

엄격한 들여쓰기 규칙은 처음엔 적응하기 어렵지만

보기 쉽고 깔끔한 코드가 됩니다.



들여쓰기 규칙

1) 가장 밖에 있는 블록은 1열부터 시작해야한다.

>>> a=1

>>>  a=1

  File "<stdin>", line 1

    a=1

    ^

IndentationError: unexpected indent




2) 내부블록은 같은거리만큼 들여써져야한다.


#file : test2.py

def a():

   a=1

   b=2

def b():

    c=1

     d=2

 >>>import test2

Traceback(most recenet call last):

File "<stdin>", line 1, in <module>

    File "test2.ㅔㅛ", line 7

          d=2    

            ^

IndentationError: unexpected indent

d를 한칸 더 들여쓰니 오류가 납니다.

내부블록은 같은 거리만큼 들여써야합니다.




3) 블록의 끝은 들여쓰기가 끝나는 부분으로 간주된다.


#file : test2.py

def a():

   a=1

   b=2

def b():

    c=1

    d=2

a함수의 들여쓰기가 끝나는

def b()라인 이전까지가 a함수의 끝이됩니다.




4) 탭과 공백을 같이쓰는것은 좋지 않다.


에디터마다 탭의 길이가 차이가 있어혼동이 발생할 수 있습니다.


만약 코드에 문제가 없는데 에러가 난다면

들여쓰기의 문제 일 수 있습니다.





함수


함수는 여러 코드를 하나의 이름으로 묶은 단위입니다.


def 함수명(매개변수):

....


아래와 같이 사용할 수 있습니다.

def add(a, b=10):

        print 'a='+str(a)+', b='+str(b)

        return a+b


def sub(a, b=10):

        print 'a='+str(a)+', b='+str(b)

        return a-b



함수의 매개변수에 초기값을 정해줄수있습니다.

>>> add(1)
a=1, b=10
11
초기값이 정해져있는 경우에는 위처럼 하나의 값만 전달해 줄 수있습니다.

>>> add(11,12)

a=11, b=12

23

>>> add(a=10, b=20)

a=10, b=20

30

>>> add(b=10, a=20)

a=20, b=10

30

키워드인수를 지정하여 값을 전달해주면,

순서와 관계없이 전달 할 수 있습니다.


>>> add(b=10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: add() takes at least 1 argument (1 given)
초기값이 정해지지 않은경우 오류입니다.





if문


if문은 다음과 같은 구조를 이룹니다.


if 조건식1:

...

elif 조건식2:

...

else:

...



아래 처럼 사용 할 수 있습니다.

order=raw_input("order? ")

if order == 'spam':

        price = 500

elif order == 'ham':

        price = 600

elif order == 'spagetti':

        price = 1000

else:

        print 'wrong input'

print order + ' is ' + str(price)



>>> import test3
order? ham
ham is 700


상황에 따라 if문 보다 사전을 이용하는 것이 편할 수 도 있습니다.

order=raw_input("order? ")
menu={'spam':500, 'ham':700, 'spagetti':1000}
print order + ' is ' + str(menu[order])





for문


for문의 구조는 다음과 같습니다.


for 타겟 in 객체:

...

else:

...



else 블럭은 for문의 모든 루프가 정상정으로 다 끝날경우 수행됩니다.

만약 break를 이용해 끝낼경우 else블럭은 수행되지 않습니다.



for x in range(1,5):

        print x

else:

        print 'else block'

print 'done \'for\''



위와 같은 코드가

아래와 같이 출력됩니다.


>>> import test4
1
2
3
4
else block
done 'for'


print 메서드는 자동 줄바꿈을 합니다.

이를 방지하려면 print라인끝에 콤마(,)를 사용해 주시면됩니다.


for x in range(1,5):

        print x,

else:

        print 'else block'

print 'done \'for\''


>>> import test4

1 2 3 4 else block

done 'for'



또한 다른 언어처럼 중첩사용이 가능합니다.


for x in range(2,3):

        for y in range(2,10):

                print x, '*', y, '=', x*y

        print

else:

        print 'Multiplication table:2  end'



>>> import test5

2 * 2 = 4

2 * 3 = 6

2 * 4 = 8

2 * 5 = 10

2 * 6 = 12

2 * 7 = 14

2 * 8 = 16

2 * 9 = 18


Multiplication table:2  end



for 문 안에서 continue와 break를 사용할 수 있습니다.

continue는 이후의 부분을 수행하지않고

시작으로 넘어갑니다.

break는 for문을 중단하는 역할을 합니다.


for x in range(10):

        if x < 6:

                print 'continue'

                continue

        elif x ==8:

                print 'break'

                break

        print x,

print 'done'



>>> import test6

continue

continue

continue

continue

continue

continue

6 7 break






while


while문의 구조는 다음과 같습니다.


while 조건식: 

...

else:

...



while문도 for문처럼

continue와 break를 사용 할 수있습니다.

아래와 같이 사용합니다.


a=0

while a < 10:

        a=a+1

        if a < 3: continue

        if a > 10: break

else:

        print 'else block'

print 'done while'



>>> import test7

else block

done while





반응형

'Python' 카테고리의 다른 글

파이썬 연산자  (0) 2014.12.29
파이썬 수치자료형  (0) 2014.12.25
파이썬 메모리 관리  (0) 2014.12.23
파이썬 기본 자료형  (0) 2014.12.22
파이썬 기본 문법  (0) 2014.12.22

댓글