While문

while 조건식 :
           파이썬 문장1
           continue(while문 다시 시작)
           break(반복문 탈출)
else:
           파이썬 문장2

While문의 일반적인 구조는 위와 같다. 조건식이 만족하는 한 계속 반복문 while 내부에서 loop를 돌며 코드를 수행한다. 그리고 조건식이 false가 될 때 반복문을 탈출한다.

else는 옵션이기 때문에 굳이 사용하지 않아도 된다. else문은 반복문의 조건식이 false가 될 때 분기를 하며 break인 경우에는 else로 분기하지 않는다.

 

a = 0

while a < 5:
    print('a= ', a)
    a += 1

print('hello')

예제 코드의 경우 while문을 통해 a의 값을 출력하게 되는데 a 1씩 증가하며 5가 되는 순간 조건식이 false가 되어 반복문을 탈출한다.

 

a = 0

while a < 5:
    print('a= ', a)
    if a == 3:
        break
    a += 1

print('hello')

만약 if 조건문을 쓴다면 a의 값이 3이 되었을 때 break문이 실행되어 while문을 벗어나게 된다.

 

a = 0

while a < 5:
    print('a= ', a)
    a += 1
else:
    print('else..')

print('hello')

위의 예제 코드에서 else는 옵션이며 while문 조건식이 false인 경우만 실행된다. 따라서 실행 결과를 보면 a 5까지 출력한 후 while문 조건식이 false가 되어 else구문이 실행된다.

 

#  1부터 10까지 덧셈
n = 1
sum = 0

while n <= 10:
    print(n)
    sum += n
    n += 1

print('덧셈 결과:', sum)

반복문을 사용하여 간단한 덧셈 연산을 수행하는 예제 코드도 만들 수 있다. 1부터 10까지 덧셈을 수행하는 코드이며 n을 계속 1씩 증가시켜주며 sum 변수에 n을 누적에서 덧셈한다. 그리고 n 10이 넘는 순간(n=11) 반복문을 탈출하고 덧셈 결과 (sum = 55)를 출력한다.

 

for문, break문, pass문

for 변수 in 반복가능데이터 :
    파이썬 문장1
    continue
    break
else :
    파이썬 문장2

파이썬의 for문의 일반적인 구조는 위와 같다. 여기서 반복가능데이터란 sequence type을 의미하며 문자열, 튜플, 리스트, 사전, 세트 타입이 속한다. 그리고 C, Java와는 다르게 파이썬에서의 for문은 문장 구조가 완전히 다르다.

 

s = 'abcdefg'

for n in s:
    print(n)

예제 코드를 실행하면 참조 변수 's'에 넣어준 문자열 길이만큼 반복하여 출력하는 것을 확인할 수 있다. 그리고 변수 n에는 a부터 g까지 개별 문자가 할당된다.

 

s = 'abcdefg'

myList = [10, 20, 30, 40, 50]
myT = (100, 200, 300, 400)
myS = {1, 2, 3, 4}
myD = {10:'aa', 20:'bb', 30:'cc'}

for n in myD:
    print(n)

for n in myS:
    print(n)
    
for n in myT:
    print(n)

for n in myList:
    print(n)

for n in s:
    print(n)

예제 코드를 통해 리스트, 튜플, 세트, 사전 타입에 대한 for문 수행 결과를 확인할 수 있다. 그리고 사전에 대해 for문을 실행하면 값이 아닌 key가 출력되는 것을 확인 가능하다.

 

myD = {10:'aa', 20:'bb', 30:'cc'}

for n in myD.keys():
    print(n)

for n in myD.values():
    print(n)

for n in myD.items():
    print(n)

for k, v in myD.items():
    print(k, v)

사전 타입의 경우 연결된 함수를 통해 key 뿐만 아니라 값도 for문을 통해 출력 가능하다. keys key들의 리스트를 출력해주며 values는 값들의 리스트를 출력해준다. 그리고 items key 및 값에 대한 리스트 튜플형태로 출력해준다. 또한 items를 사용했을 때 변수를 k, v로 받게 되면 자동으로 unpacking이 발생하여 개별 요소를 출력해준다.

 

stdData1 = [{'name':'홍길동', 'age':20}, {'name':'이순신', 'age':30}, {'name':'임꺽정', 'age':40}]
stdData2 = [('홍길동', 20), ('이순신', 30), ('임꺽정', 40)]

for n in stdData1:
    print(n)

for n, m in stdData1:
    print(n, m)

for n in stdData2:
    print(n)

for n, m in stdData2:
    print(n, m)

리스트의 사전 타입, 리스트의 튜플 타입으로 구성된 예제 코드이다. 모두 unpacking을 사용할 수 있으며 출력 결과는 위와 같다.

 

a = 10
b = 3.14
c = 'aa'

print('a = %d b = %f c = %s' % (a, b, c))

d = {'name':'홍길동', 'age':20}
print('이름:%(name)s 나이:%(age)d' % (d))

문자열 타입에 대해 % 연산자를 사용하여 포맷과 포맷을 서로 연결하는 방법이 있다. 이러한 방법을 사전 타입도 동일하게 사용할 수 있으며 예제 코드처럼 name과 age의 key 및 값들을 연결 시켜줘서 출력할 수 있다.

 

Range 함수

range 함수는 파이썬의 내장 함수이며 형식은 range(초기값, 끝값, 증가치)로 구성된다. 초기값과 증가치는 생략 가능하다. 만약 생략한다면 초기 값은 0, 증가치는 1로 설정된다.

 

r = range(0, 10, 1)

print(list(r))

위의 예제 코드를 출력해보면 0부터 9까지 출력하며 마지막 인덱스인 10은 포함되지 않는다. 따라서 range를 사용하였을 때 끝값은 포함되지 않으므로 주의해야 한다.

 

for n in range(1, 10):
    print(n)

range는 for문으로도 이용할 수 있으며 위의 출력 결과처럼 1~9까지 순차적으로 출력 가능하다.

 

# 1부터 10까지 덧셈
sum = 0

for n in range(1, 11):
    sum += n
    
print(sum)

range를 응용한 예제 코드이며 1부터 10까지의 덧셈 예제를 만들었다. range 함수를 사용하면 간편하게 for문을 사용하여 덧셈을 할 수 있다.

 

sum = 0

for n in range(1, 11):
    print(n)
    if n==3:
        break
else:
    print('else')

else구문을 사용 가능하며 위의 예제 코드에서는 n이 3이 될 때 break문에 의해 반복문을 탈출한다.

 

sum = 0

for n in range(1, 11):
    if n==3:
        continue
    print(n)
else:
    print('else')

continue를 사용할 경우 바로 for문의 조건식으로 분기하기 때문에 위의 출력 결과에서 n이 3일 경우는 출력하지 않고 분기하는 것을 확인할 수 있다.

 

축약형 문법

[변수 for .. in .. if] 

내장 리스트를 반복해서 구성하는 방법이다.

 

my = [n for n in range(1, 6)]

print(my)

맨 앞의 n이 리스트로 구성되는 최종 데이터이다. 예제 코드의 결과를 보면 알겠지만 for문을 통해 두 번째 n이 1~5의 값을 할당 받고, 첫 번째 n으로 값을 넘겨준다. 그리고 리스트가 구성된다.

 

# 3.3%를 제외한 실수령액
# 실수령액 = 급여 - 급여 * 0.033
salary = [10000, 25000, 31000, 42000, 7000]
money = [n - n * 0.033 for n in salary]

print(money)

축약형 문법을 사용하여 급여의 실수령액을 계산하는 예제 코드이다. if문 축약형 외에도 리스트 축약형을 사용하여 코드 라인의 수를 획기적으로 줄일 수 있다. 이는 파이썬의 강력한 기능 중 하나이다.

 

data = [n for n in range(1, 11) if n % 2 == 0]

print(data)

만약 if문이 있을 경우에는 어떻게 동작할까? 예제 코드 기준으로 두 번째 n이 if문으로 분기하여 계산된다. 그리고 if 조건식 값이 반드시 true가 되어야만 첫 번째 n으로 값을 할당한다. 따라서 위의 결과처럼 값이 출력된다.

+ Recent posts