안녕하세요 코드웍스입니다!
이번 포스트에서는 코드웍스를 활용해서 코딩에서 가장 중요하다고 할 수 있는 조건문, if문에 대해서 배워보도록 하겠습니다.
조건문(if)이란?
if 조건 참:
코드 실행
else: 조건 거짓
코드실행
- 조건문은 특정 조건일때 코드를 실행하는 문법입니다.
- 조건이 참(True) 일 때만 특정 코드를 실행합니다
- 조건이 거짓(False) 이면 해당 코드는 건너뛰고, 다른 코드를 실행합니다.
실생활 예시를 들어보겠습니다.
1. 과제 언제할지 결정하는 조건문
아래 순서도는 미루는걸 참 좋아하는 사람의(그게바로 작성자 본인)과제를 언제할지 결정하는 조건문입니다.
과제 마감이 하루 남았다면, 그래도 밤새 불태워서 끝내지만, 하루 이상 남았다면 절대로 할 생각을 하지 않는 예시입니다.
이를 수도코드로 나타내면 아래와 같습니다.
if 과제마감 하루전: 밤새워서 과제하기 else: if 피곤한가: 내일의 나를 믿는다 else: 유튜브를 보면서 할지말지 고민한다.
아래는 수도코드입니다.
2. 날씨에 따른 조건문
아래 순서도는 극심하게 변동되는 한국의 날씨때문에 매일 고민하는 사람의 알고리즘입니다. 비가 온다면 우산을 챙겨 나가고, 해가 쨍하다면 양산을 챙기는, 그리고 흐리다면 빈손으로 나가는 조건문 입니다. (사실 흐리다면 무조건 우산은 챙겨야 할 것 같습니다.)
if 비가 오는가: 우산 챙기기 else: if 해가 쨍한가?: 양산 챙기기 else: 빈손으로 나가기
조건문이 무엇인지, 실생활 예시를 통하여 감이 잡히셨나요?
이제 실제 코드를 보면서 if문을 배워보도록 하겠습니다.
연산자들
if문을 다루기에 앞서, 파이썬의 연산자들를 잠시 짚고 넘어가겠습니다.
아래는 파이썬 조건문에서 자주 사용되는 연산자들에 대해 정리해놓은 표입니다.
비교연산자
조건문에서 주로 사용하는 비교 연산자는 다음과 같습니다:
비교 연산자 | 설명 |
a < b | b가 a보다 크다 |
a > b | a가 b보다 크다 |
a == b | a와 b가 같다. |
a != b | a와 b가 같지않다 |
a <= b | b가 a보다 크거나 같다 |
a >= b | a가 b보다 크거나 같다 |
논리연산자
여러 조건을 결합하거나 부정할 때 사용하는 논리 연산자
논리 연산자 | 설명 |
a or b | a와 b둘다 참이 아니어도 참이다. |
a and b | a와 b 둘다 참이어야 참이다. |
not a | a가 거짓이면 참이다. |
1. 기본 if문
파이썬에서 가장 기본적인 조건문은 if문입니다. 이 조건문은 조건이 참일때만 코드가 실행됩니다. 조건이 거짓이라면 넘어가게됩니다. 일반적으로 텍스트 파이썬 코드에서는 블록이 중요하게 되는데, : 이후로 조건이 참일때 실행할 코드는 들여쓰기를 해야 오류없이 실행됩니다. 아래는 기본적인 if문의 형태입니다.
#오류없이 실행
if 조건문:
조건문이 참일때 실행
#들여쓰기 오류
if 조건문:
조건문이 참일때 실행 # 들여쓰기를 해야한다!!
이제 코드웍스를 통하여 기본 if문을 배워보도록 하겠습니다. 코드웍스에서는 4번 블록 조건문에서 if문을 이용하실 수 있습니다. 제일 위에 블록을 클릭하여 가져다 놓습니다. (코드웍스는 들여쓰기를 신경 쓸 필요없이 논리적인 부분만 신경쓰면 됩니다.)
우리는 위에서 실생활 예시로 봤던 과제 데드라인에 대처하는 미루기 장인의 알고리즘을 따라보겠습니다.
과제 데드라인을 변수로 설정하고 input으로 사용자에게 입력받아서 조건문을 실행해보도록 하겠습니다.
(파이썬에서 input을 받는 방법은 이전 포스트 [파이썬 기초] 입력 input에 자세히 작성되어있으니 참고하세요)
1. 변수 만들기
먼저, 0번 변수 블록 > 변수만들기 > deadline > 제일 첫번째 블록을 클릭합니다.
2. 사용자 입력 받기
데드라인을 사용자 input으로 받아오기 위해서, 1번 블록 > 31번 블록 클릭 후 deadline변수 옆에 놓습니다. 그리고 메세지 부분을 데드라인이 언제인지를 묻는 메세지로 변경합니다. 또, var변수를 deadline으로 변경해줍니다. 이제 사용자 입력을 받아서 데드라인을 받아오는 코드는 다 작성하였습니다.
이제 조건문을 작성해봅시다. deadline이 하루남았다면, 과제를 해야된다는 조건문을 작성해보겠습니다.
3. 조건문 작성하기
조건문 하루이하로 남았다는것은 deadline<=1로 표현가능합니다. 0을 1로 바꿔주고, 정신차리고 열심히 하라는 메세지를 print해보겠습니다. 또 비교 연산자를 <=로 선택해줍니다.
(파이썬의 print문에 대한 자세한 사용법은 이전 포스트 [파이썬 기초] 출력 print 에서 자세히 다루고 있습니다.)
f-string print를 사용하여서 며칠남았으니 열심히하라는 내용을 출력해보도록 하겠습니다.
1번 블록> 4번째 블록> if문 밑으로 연결 > 안에 내용 변경(var를 deadline으로)
4. 조건문 결과 확인
최종 작동하는 코드의 모습을 보자면 아래와 같이 잘 작동하는 것을 알 수 있습니다.
이를 텍스트 파이썬 코드로 쓰자면, 아래와 같이 작성할 수 있습니다.
deadline = int(input("데드라인 며칠남음?"))
if deadline <= 1:
print(f"정신차리고 열심히해 {deadline}일 남음!!") #f-string 파이썬 출력
2. if-else문
기본 if문은 조건이 참일때만 작동하는 코드입니다. 만약 조건이 거짓일때 작동하는 코드를 작성하고싶다면 어떻게 해야할까요? else를 활용하면 됩니다.
if 조건문:
조건문 true일때 실행
else:
조건문이 false일때 실행
4번 블록 3번째 else블록을 활용하면 됩니다.
데드라인이 하루 이상 남았다면 미루기를 좋아하는 사람이니, deadline일이나 남았다는 메세지를 보내는 코드를 작성해보았습니다.
코드가 작동되는 것을 확인해보면, 아래와 같이 잘 작동하는 것을 확인하실 수 있습니다.
텍스트 코드로 나타내자면, 아래와 같습니다.
deadline = int(input("데드라인 며칠남음?"))
if deadline <= 1:
print(f"정신차리고 열심히해 {deadline}일 남음!!")
else :
print(f"{deadline}일 이나 남았다 좋아 ㅎㅎ")
3. if-elif-else문
만약 여러조건을 처리하고싶다면 어떻게 해야할까요? (만약 데드라인이 이틀남았을때와 일주일 남았을때는 메세지를 달리 보내는게 좋을테니(?)) 그렇다면 elif를 활용하면 됩니다!
if 조건1:
조건1이 true일때 실행
elif 조건2:
조건1이 false이고 조건2가 true일때 실행
else:
조건 1,2가 모드 false일때 실행
코드웍스에서는 4번블록 > 2번째 블록 elif를 활용하면 됩니다.
elif를 활용할때는 if와 else사이에 사용하여야합니다. 또한 elif문은 if문이 없을땐 사용할 수 없습니다.
elif블록을 if-else사이에 위치시킵니다.
우리는 과제 마감일이 3일 이하로 남았을때 미루지 말자는 메세지를 보내도록 하겠습니다. 그러기 위해서 elif조건문에 deadline이 3보다 작거나 같을때 작동하도록 작성해봅니다.
코드를 작동시켜보면, 잘 작동하는 것을 확인하실 수 있습니다.
이를 파이썬 텍스트 코드로 작성하면 아래와 같습니다.
deadline = int(input("데드라인 며칠남음?"))
if deadline <= 1:
print(f"정신차리고 열심히해 {deadline}일 남음!!")
elif deadline <= 3:
print(f"미루지말자 {deadline}일 남음!!")
else :
print(f"{deadline}일 이나 남았다 좋아 ㅎㅎ")
4. 중첩조건문
만약 어떤 조건이 참일 때만 그 안에서 추가로 다른 조건을 체크하고 싶을 때는 어떻게 해야할까요? 이때는 조건문 안에 또 다른 조건문을 넣는 중첩 조건문을 사용합니다. 이를 통해 더욱 복잡한 논리를 처리할 수 있습니다.
if 조건1:
조건1이 참일때 실행되는 코드
else:
if 조건2:
조건1이 거짓이고, 조건2가 참일때 실행
else:
조건1과 조건2가 거짓일때 실행
제일 처음 실생활에서의 예시를 들었던 아래 순서도가 바로 중첩조건문의 예시인데요, 한번 이대로 코드를 작성해보도록 하겠습니다.
조건1) 과제 마감이 하루 남았는가?
일단 첫번째 조건, 과제 마감이 하루 남았는가를 확인하는 조건문을 작성하면, 위의 예시와 같이 deadline을 사용자 입력으로 받아오고, if문으로 deadline이 하루 남았는지를 체크합니다.
deadline = int(input("데드라인 며칠남음?"))
if deadline == 1:
print(f"밤새 불태워서 끝낸다. {deadline}일 남음")
조건2) 과제 마감이 이틀 이상 남았다면, 피곤한가?
과제 마감이 이틀 이상 남았다는건, else문으로 작성할 수 있겠습니다.
1. 피곤한지 여부를 체크하기 위해서 사용자 입력으로 정수형으로 피곤한지 아닌지 여부를 받습니다.
이때 피곤하면 1, 피곤하지 않으면 0을 입력하도록 합니다. 그리고 이를 tired라는 변수에 저장해줍니다.
2. else문안에 피곤하다면, 내일의 나에게 맡긴다는 메세지를 출력하도록합니다. 이는 else문 안에 if문을 사용하면 됩니다. tired가 1이라면, 원하는 문구를 출력하도록 합니다.
이를 블록으로 나타내면 아래와 같습니다.
텍스트 파이썬 코드로 작성하면 아래와 같습니다.
deadline = int(input("데드라인 며칠남음?"))
if deadline == 1:
print(f"밤새 불태워서 끝낸다. {deadline}일 남음")
else :
tired = int(input("피곤한가요? (1: 피곤함, 0: 피곤하지 않음): "))
if tired == 1:
print("피곤한거 진짜임... 내일의 나에게 맡긴다.")
작동하는 것을 확인해보면, 잘 작동하는 것을 확인하실 수 있습니다.
조건3) 과제 마감이 이틀 이상 남았고 피곤하지 않다면?
피곤하지 않다면이란 조건은 else문 안에 else문으로 나타낼 수 있습니다. 블록으로 나타내자면 아래와 같습니다.
파이썬 텍스트 코드로 나타내자면 아래와 같습니다.
deadline = int(input("데드라인 며칠남음?"))
if deadline == 1:
print(f"정신차리고 열심히해!! {deadline}일 남음!")
#데드라인이 이틀이상 남았다면
else :
tired = int(input("피곤한가요? (1: 피곤함, 0: 피곤하지 않음): ")) #피곤한지 여부 물어보고 입력받음
if tired == 1: #피곤하다면
print("피곤한거 진짜임... 내일의 나에게 맡긴다.")
else: #안피곤하면
print(f"{deadline}일 남음 ㅎ 유튜브 시청하면서 고민해본다")
최종적으로 잘 작동하는 것을 확인하실 수 있습니다. 중첩 if문은 조건을 단계적으로 평가하고, 서로 관련된 조건들을 명확하게 처리하고 싶을 때 사용합니다. 이를 통해 더 복잡한 로직도 쉽게 해결할 수 있습니다.
본 코드는 아래 링크를 클릭하시면 이용하실 수 있습니다.
링크에 들어가서, 아래 초록색 코드보기를 클릭하시면 본 코드를 사용하실 수 있습니다.
5. in 연산자를 이용한 조건문
in 연산자는 특정 값이 리스트, 문자열, 튜플 등에 존재하는지 확인하는 데 사용됩니다. 이 조건문은 간단하게 값의 포함 여부를 확인하고, 그에 맞는 코드를 실행할 수 있습니다.
if 값 in (리스트,문자열,튜플,딕셔너리):
값이 리스트,문자열,튜플,딕셔너리에 포함되어 있다면 출력.
코드웍스에서는 2번 연산자 > 7번째 블록에 in연산자 블록이 있습니다.
이제 각 자료구조에서 in을 사용해서 값을 찾는 방법을 소개해드리겠습니다.
5-1 리스트(list) 값 확인
먼저 리스트를 만들어봅시다. 변수를 새로 생성하고, 리스트를 작성해보겠습니다. 이번 예시에서는 에스파 멤버들의 이름을 담은 리스트를 만들겠습니다.
asepa = ['카리나', '윈터', '닝닝', '지젤']
이제, 사용자 입력을 받아서 asepa 리스트에 사용자가 입력한 멤버가 에스파 멤버인지 확인하는 조건문을 만들어보겠습니다.
사용자 입력 멤버 변수 지정
조건문 in 지정
접은글에 자세히 블록의 위치에 대한 설명이 나와있으니, 확인하시면 됩니다.
- member변수에 사용자 입력으로 에스파 멤버인지 궁금한 멤버 이름을 입력하여 저장하도록 합니다.
- 그 후, asepa 리스트에 member로 입력받은 변수가 포함되어있는지 확인하도록 in연산자를 사용합니다.
- member로 입력받은 멤버가 asepa리스트에 있다면, member는 에스파라는 메세지를 출력합니다.
최종 블록 코드는 아래와 같습니다.
파이썬 텍스트 코드로 나타내면 아래와 같습니다.
asepa = ['카리나', '윈터', '닝닝', '지젤']
member = input("궁금한 멤버이름은?")
if member in asepa:
print(f"{member}는 에스파 입니다.")
아래에서 코드가 잘 작동하는 것을 보실 수 있습니다.
그럼 만약에 멤버가 아닌 사람을 입력했을때 에스파 멤버가 아니라는 메세지를 출력하려면 어떻게 해야할까요?
이때는 else를 활용하시거나, not in을 활용하시면 됩니다.
#else 활용
if member in asepa:
print(f"{member}는 에스파 입니다.")
else :
print(f"{member}는 에스파가 아닙니다.")
#not in else활용
if member not in asepa:
print(f"{member}는 에스파가 아닙니다.")
else :
print(f"{member}는 에스파 입니다.")
본 코드는 아래 링크에서 이용하실 수 있습니다.
5-2 문자열(string) 값 확인
파이썬의 in연산자는 문자열에서도 작동합니다. 이번 예시에서는 블랙맘바 챌린지로 유명했던 '에스파는 나야 둘이 될 수 없어' 문자열 내에 특정 문자가 존재하는지 확인하는 코드를 작성해보도록 하겠습니다.
주어진 문장에 에스파가 포함되어있는지 확인하기 위해서는 아래와 같이 '에스파' in var로 조건문을 작성하시면 됩니다.
이때도 리스트때와 마찬가지로 not in을 사용하면 포함되어있지 않을때 작동하는 조건문을 만들 수 있습니다.
텍스트 파이썬 코드는 아래와 같습니다.
var = '에스파는 나야 둘이 될 수 없어'
if '에스파' in var:
print("문장에 '에스파'가 포함되어 있습니다")
else :
print("문장에 '에스파'가 포함되어 있지 않습니다")
5-3 튜플(tuple) 값 확인
튜플은 리스트와 매우 비슷하지만, 큰 두가지 차이점이 있습니다.
1. 튜플은 리스트와 달리 요솟값을 변화시킬 수 없습니다.
2. 튜플은 t= (1,2,3) 괄호로 정의합니다. 반면 리스트는 l = [1,2,3]로 정의합니다.
이런 튜플도 in연산자를 통해서 값을 확인할 수 있습니다.
튜플을 간단한 숫자 6까지로 정의하고, 7이 포함되어있는지 확인하도록 하겠습니다. 아래는 실행 결과 화면인데, 튜플에 7이 없으니, 포함되어있지 않다는 메세지가 나오면서 값 확인이 잘 된 것을 보실 수 있습니다.
파이썬 텍스트 코드로는 아래와 같이 나타낼 수 있습니다.
var = (1,2,3,4,5,6)
if 7 in var:
print('7은 튜플에 포함 o')
else :
print('7은 튜플에 포함 x')
5-4 딕셔너리 값 확인
파이썬은 딕셔너리에서 key와 value의 존재여부를 in연산자로 확인할 수 있습니다.
단순 key만을 확인하는건, 똑같이 in연산자를 사용하면 됩니다.
value값을 확인하기 위해선, 35번 블록의 values를 활용하면 됩니다. (3번 블록> 35번 > 모든키변환(keys) > dicts를 asepa로 변환)
그러면 value값을 확인할 수 있는것을 알 수 있습니다.
파이썬 텍스트 코드는 아래와 같이 작성합니다.
asepa = {'카리나': 168, '윈터': 164}
#딕셔너리 key확인
if '윈터' in asepa:
print('윈터가 존재합니다.')
#딕셔너리 value확인
if 164 in asepa.values():
print('윈터의 키가 존재합니다.')
이번 포스팅에서는 파이썬의 조건문 if문에 대하여 다뤄봤습니다. 조건문은 프로그램의 흐름을 제어하고, 특정 조건에 따라 다양한 경로로 실행할 수 있게 해주는 중요한 도구입니다. 이 포스팅이 여러분의 Python 학습에 도움이 되었기를 바랍니다.
질문이나 추가로 다루고 싶은 내용이 있다면 언제든지 댓글로 남겨주세요!
읽어주셔서 감사합니다 :)
코드웍스 강좌도 유튜브에 공개되어있으니 참고하세요!
'🧱 파이썬 블록코딩' 카테고리의 다른 글
[파이썬 기초] 리스트 List (2) | 2024.10.16 |
---|---|
[파이썬 기초] 반복문 for (5) | 2024.10.12 |
[파이썬 기초] 자료형과 연산 - 숫자형, 부울형, 문자열 (4) | 2024.10.06 |
[파이썬 기초] 출력 print (1) | 2024.09.12 |
[파이썬 기초] 입력 input (0) | 2024.08.16 |