IT 세상 해석하기

[파이썬(Python) 기초] - (제어문) if 문, for 문, while 문 본문

프로그래머 공간/python

[파이썬(Python) 기초] - (제어문) if 문, for 문, while 문

ikohong 2021. 1. 9. 17:13
728x90
반응형

[파이썬(Python) 기초] - (제어문) if 문, for 문, while 문


프로그래밍 언어를 배우신다면, 당연히 알아야될 부분입니다. 바로 '제어문'인데요. 단순한 프로그램을 만드는것이 아닌, 조건에 따른 실행할 프로그램 선택, 혹은 조건에 따른 반복적인 프로그램 실행을 만들기 위한 필수요소인데요. 설명도 설명이지만, 역시 직접봐야 아! 이거구나~ 하고 알 수 있겠죠? 한번 알아보도록 하겠습니다.

 

if 문 (제어문)
if 조건문 :
    실행문      # 앞에 스페이스바로 4칸을 띄워야합니다.

if 영어를 해석한다면 '만약'이라는 뜻입니다. 이 뜻 그대로 컴퓨터 코드에 적용한다고 생각을 하시면 됩니다. 예를 들어보죠.

if a = b:
    print("a랑 b의 값은 같습니다.")    #앞에 스페이스바로 4칸의 공백이 있어야합니다.

위의 코드를 한글로 해석을 하면

  • '만일 a의 값이 b랑 같다면, "a랑 b의 값은 같습니다."를 화면에 출력해주세요'

라는 뜻으로 풀이를 할 수 있습니다. 즉 a랑 b의 값이 같지 않다면, 아무것도 실행을 하지않고 프로그램을 종료를 하게 된다는 뜻입니다.

그림으로 표현을 하자면, 위와 같습니다~ a=b가 맞는지를 확인을 하고, 맞다면, 프로그램 실행, 아니라면 프로그램을 바로 종료를 시켜버립니다.

 

if 조건문 :
    실행문    # 앞에 스페이스바로 4칸을 띄워야합니다.
else :
    실행문    # 앞에 스페이스바로 4칸을 띄워야합니다.

위에서는 'if 조건문'만을 작성을 했다면, 이번에는 조건문이 맞지 않다면, 다른 프로그램을 실행할수 있도록 작성하는 방법입니다. 코드를 한번 보도록 하죠~

If a = b:
    print(“a와 b의 값은 같습니다.”)    #앞에 스페이스바로 4칸의 공백이 있어야합니다.
else:
    print(“a와 b의 값은 같지않습니다.”)    #앞에 스페이스바로 4칸의 공백이 있어야합니다.

코드가 쪼~금 길어졌습니다. 한글로 풀어서 해석을 하면

  • 만일 a와 b의 값이 같다면, "a와 b의 값은 같습니다."를 실행하며, 만일 아니라면, "a와 b의 값은 같지않습니다."를 출력한다.

라고 해석을 하면 됩니다. 간단하죠? 그림으로 한번 표현해보겠습니다.

그림이 조금 늘어났습니다. 앞서보았던, 'if 조건문'에서는 조건문에 해당하지 않는 부분은 처리없이 프로그램이 바로 종료가 되었다면, 이번에는, 조건문에 해당이 되지 않는다면, "a와 b의 값은 같지 않습니다."를 출력을 할 수 있도록 되어있습니다. 마지막으로, 조금만 더 복잡한 코드로 넘어가보도록 하겠습니다.

 

if 조건문:
    실행문
elif 조건문:
    실행문
elif 조건문:
    실행문
...
else:
    실행문

이번에는 내가 원하는 조건을 여러개로 만들어서 그에 맞는 프로그램을 실행할수 있도록하는 코드입니다. 처음에 비하면 엄청(?) 길어진 모습을 확인할 수 있습니다. 여기서 'elif'를 중간에 확인할 수 있는데요. 이 'elif'는 'else if'라는 문장으로, '만일 또다른~'이라는 뜻으로 기억해주시면 좋을듯 합니다! 코드를 한번 보죠!

if 100 >= c >= 90:
    print("학점 A입니다.")    #앞에 스페이스바로 4칸의 공백이 있어야합니다.
elif 90 > c >= 80:
    print("학점 B입니다.")    #앞에 스페이스바로 4칸의 공백이 있어야합니다.
elif 80 > c >= 70:
    print("학점 C입니다.")    #앞에 스페이스바로 4칸의 공백이 있어야합니다.
else:
    print("재수강이 필요합니다.")    #앞에 스페이스바로 4칸의 공백이 있어야합니다.

위의 코드는 학점을 구분하는 코드입니다. 모든 대학생분들이라면, 맨 위의 if 의 조건문에 들어가길 원하시겠지만, 가끔 현실이 배신(?)을 해버려서 elif 까지 내려가는 경우도 발생을 하게 될껍니다. 그렇다고 else까지 내려가시면 큰일납니다. 전 대학생활 필요없다라고 생각해서 공부안하고 졸업했다가 현실에서 피 엄청본 캐이스입니다...ㅜㅜ

글을 쓰다보니 주제에서 살짝 벗어났네요. 그러나, 제 글을 잘 읽어보시면 코드가 해석이 살짝 된것을 확인할 수 있습니다.. 'if 조건문'에서 조건이 맞았다면, 아래의 코드는 무시가 되고, 'print("학점 A입니다.")'를 출력을 하게 될껍니다. 허나, 만일 이 조건이 맞지 않는다면, 아래의 'elif 조건문'으로 넘어가게됩니다. 이렇게 코드안에 있는 조건문들을 하나하나 검사를 했지만, 조건이 전부 맞지 않는다면? 마지막줄의 'else'에 있는 코드가 실행이 되는것을 확인할 수 있습니다. 그림을 통해 확인을 해보죠!

그림을 보시면 입력된 값을 조건문을 통해 검사를 하고, True일 경우에 그에 맞는 실행문을 실행하게 되며, False인 경우 다음 조건문으로 넘어가는 구조입니다. 만일 모든 조건이 맞지 않는다면, else의 실행문을 실행을 하고, 종료를 하게됩니다. 

 

for 문 (반복문)
for 변수명 in 입력값:
    반복할 실행문

for 문의 경우 반복문의 하나로, 입력값 안에서, 실행문을 반복해주는 역할을 하게 됩니다. 이렇게 보면, 이해를 못하니, 예시를 하나 들어보도록 하겠습니다.

for i in (1,2,3,4,5):
	print(i,'입니다.')    # 앞에 스페이스바로 4칸의 공백이 있어야합니다.

# 실행 결과

1 입니다.
2 입니다.
3 입니다.
4 입니다.
5 입니다.

코드를 보게 되면, 입력값을 (1,2,3,4,5)로 지정을 했으며, 아래에는 입력값의 범위에 따른, 실행문이 반복되어서 결과가 출력된 모습을 확인할 수 있습니다. (1,2,3,4,5)이니, 총 5번 실행문이 출력된것이 확인이 됩니다. 쪼금 복잡한 코드를 한번 보도록 하겠습니다.

j = [2,1,3,5,4]    # list 지정
for i in range(len(j)):    # len(j) -> j의 길이 반영, range() -> 범위를 지정해주는 코드
	print('index[',i,'] 의 값은 : ',j[i])

# 실행 결과

index[ 0 ] 의 값은 :  2
index[ 1 ] 의 값은 :  1
index[ 2 ] 의 값은 :  3
index[ 3 ] 의 값은 :  5
index[ 4 ] 의 값은 :  4

j에 list [2,1,3,5,4] 를 지정해준 다음, range(len(j))를 입력값으로 지정을 해주었습니다. 여기서 len(j)의 경우, j의 길이를 구하는 코드이며, range()의 경우, 범위를 지정해주는 코드로 len(j)의 값이 '5'임으로, range(5)의 경우 '0,1,2,3,4' 즉, '0 이상 5 미만'이 됩니다. 이 값을 순서대로 i에 넣게 되며, 아래의 실행문을 실행하는것을 확인할 수 있습니다. 아래의 실행문은 list를 아신다 생각을 하고, 설명을 생략하도록 하겠습니다. 그럼 인제, 그림을 통해 한번더 확인을 해보도록 하겠습니다.

 

while 문 (반복문)
while 조건문:
    반복할 실행문

'while 문'의 경우, 'for 문'과 마찬가지로 반복적으로 코드를 실행하기 위한 코드입니다. 어떻게 받복적으로 실행이 되는지 예시를 통해 한번 확인을 해보겠습니다.

num = 1
result = 0

while num <= 10:    # num의 값이 10이하일때 아래의 코드 반복
	result += num    # result = num + result
	print("1부터 ",num," 까지 더해진 값 : ",result)
	num += 1    # num = num + 1
    
# 실행 결과
1부터  1  까지 더해진 값 :  1
1부터  2  까지 더해진 값 :  3
1부터  3  까지 더해진 값 :  6
1부터  4  까지 더해진 값 :  10
1부터  5  까지 더해진 값 :  15
1부터  6  까지 더해진 값 :  21
1부터  7  까지 더해진 값 :  28
1부터  8  까지 더해진 값 :  36
1부터  9  까지 더해진 값 :  45
1부터  10  까지 더해진 값 :  55

이 코드는 첫번째 줄 부터 하나하나 코드를 해석해보겠습니다.

  1.  while num <= 11:    # num의 값이 10이하인 경우, 계속 아래의 코드를 반복해준다.
  2.  result += num    # result = num + result 코드랑 같은 뜻으로 num = 1, result = 0 임으로, result = 1 + 0 로 result에 1의 값이 저장된다. 
  3. print("1부터 ",num," 까지 더해진 값 : ",result)    # 출력문
  4. num += 1    # 출력문을 실행한 다음, num = num + 1 코드랑 같은 뜻으로, num = 1 임으로 'num = 1 + 1' 즉 num의 값이 2로 커진다.

여기까지는 알겠죠? 그렇다면, 처음하시는분들은 num의 값의 변화와 result값의 변화가 어떻게 이루워지는지 아직 헷갈릴수가 있습니다. 그렇다면, 그림을 통해서 한번 확인을 해보겠습니다.

 

그림을 보시게 되면, 조건문의 값이 참일 경우 실행문을 다 실행한 다음, 다시 조건을 확인하는 모습을 볼 수 있습니다. 이렇게 반복을 통해서 num의 값이 11이 되면, False가 되어서 while 루프에서 빠져나와 종료가 되는모습을 확인할 수 있습니다. 어느정도는 이해가 되시죠?


while 문이 돌아가는것인 알았는데, 이 while문은 잘못사용하게 되면, 프로그램 종료없이, 무한루프(프로그램 종료없이 계속 프로그램이 실행)이 되는 모습을 볼 수 있습니다. 예시를 하나 가지고 왔습니다.

import random    # random함수를 사용하기 위해 코드에 추가
while True:    # 참일 경우 무한 반복
	print(random.random(1,100))    # 1 ~ 100사이의 값을 랜덤으로 출력

아직은 배우지는 않았지만, random함수를 한번 가지고 와보았습니다. 딱 봐도 아시겠죠? 여기서 while True:는 현재 아무런 조건이 없기때문에 무조건 참이 될 것이며, 아래의 출력문을 무한히 생성하게 될 것입니다.

무한루프에 빠져서 종료가 되지 않음

실행을 하게되면, 위의 GIf파일과 같이 값이 계속 나오는 모습을 확인할 수 있습니다. 혹시나 만일 이런상황이 발생을 하셨다면, 'Ctrl + C' 를 누르시면 코드가 강제로 종료가 되니 참고해주세요!

만일 이렇게 무한히 반복되는것을 원치 않으시다면, 코드안에 'break'를 작성을 해주시면 됩니다.

while True:
	print(random.random())
	break    # 루프에서 빠져나온다.
    
# 실행 결과

0.06991377647140362

'break'의 경우 while 문을 빠져나올수 있도록 해주는 코드로써, 위의 결과 같이 한번만 출력문이 출력되고, 더 이상 반복이 되지 않는것을 확인 할 수 있습니다. 중요한 코드중 하나이니 기억해주시면 좋습니다!

728x90
반응형
Comments