| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- GPT
- django db with ssh tunnel
- subnet
- vue
- pycharm
- 개발일지
- 파이선
- psycopg
- database
- ec2
- Chatbot
- Django
- 따라하며 배우는 파이썬과 데이터 과학
- 오픈빌더
- 장고
- AWS
- 챗봇
- 파이팅
- 아나콘다
- postgres
- RDS
- 파이썬
- vpc
- 파이참
- settings.py
- chartjs-chart-financial
- Python
- 이터널리턴
- SSH Tunnel
- Today
- Total
우아한 개발계발 블로그
따라하며 배우는 파이썬과 데이터 과학 (4) - IF! 조건을 따져 실행해 보자 본문
2021.05.28 - [Study/따라하며 배우는 파이썬과 데이터 과학] - 따라하며 배우는 파이썬과 데이터 과학 (3) - 연산자로 연산을 해 보자
따라하며 배우는 파이썬과 데이터 과학 (3) - 연산자로 연산을 해 보자
2021.05.28 - [Study/따라하며 배우는 파이썬과 데이터 과학] - 따라하며 배우는 파이썬과 데이터 과학 (2) - 값을 담아 다루어 보자 우리는 지난 글에서 데이터를 담을 수 있는 변수를 알아봤다. 이제
w00-ah.tistory.com
우린 파이썬 프로그래밍을 하기위한 '그릇'을 만들줄 알고 그 그릇을 어떻게 사용할지도 알아봤다.
이번 장에서는 프로그램의 흐름을 제어해볼 것이다.
4.1 제어 구조
우선 우리가 프로그램을 설계할 때, 사용할 수 있는 세가지의 기본적인 제어 구조가 있다.
- 순차 구조(Sequence) - 여러 명령이 순차적으로 실행되는 구조
- 선택 구조(selection) - 여러 개 중 하나의 명령문을 선택하여 실행하는 구조
- 반복 구조(iteration) - 동일한 명령이 반복되면서 실행되는 구조
아래 그림은 위의 세가지 구조를 순서도(flow chart)로 나타낸 것이다.



앞으로 사용할 용어 중 'if','elif',' else' 는 선택 구조 'for 와 'while' 은 반복 구조이다.
4.2 if ?
if 는 어떤 조건식(condition expreession)을 인자로 받아서, 그 값이 참(True)인지 거짓(False)인지에 따라 해당 if 의 구문을 실행할 지 말지를 결정하는 예약어이다. 조건식에는 어떠한 값이 들어가도 상관없지만 이전의 글을 자세하게 읽었다면 Boolean 에서 0 과 False 가 아닌 모든 값은 파이썬에서 True 로 인식되는 것을 알 수 있을 것이다.
if (Condition):
Code
위와 같은 구조를 if 문 (조건문) 이라고 한다. 그럼 Condition에 들어갈 조건식에는 값, 변수, 함수, 수식 등이 들어가면 된다. 아래를 참고하자. idle에 실행하면 좋다.
True #True
1 == 1 #True
'1' == '1' #True
False #False
1 > 2 #False
if '참':
print("참 입니다")
# 조건식 자리에 "참"이라는 String 값이 들어가게되고 이는 True인식되기 때문에
# print("참 입니다") 명령어가 실행된다.
위의 코드에서 보면 if 아래 print("참입니다") 가 들여쓰기가 되어 있는 모습을 볼 수 있는데, 이는 파이썬의 문법이라 꼭 지켜줘야한다. 설정에서 설정할 수 있지만 보통 Default로 4칸의 띄어쓰기(탭키 한번)으로 들여쓰기를 할 수 있으니 꼭 지켜줘야한다.
그리고 여기서 동일한 들여쓰기를 공유하는 명령어들을 묶어서 Block 이라고 부르니 알아두자.
자세한 내용은 아래 코드를 보면서 참고하자
A = True
B = False
if A:
print("A의 블록")
if B:
print("B의 블록")
# >>> A의 블록
# B변수의 값이 False 이므로 if B 블록은 실행되지 않는다.
위의 코드를 그대로 복사해서 실행해보면, A의 값은 True로 if A 블록은 실행되지만 B의 값은 False로 if B는 실행되지 않는다.
A = False
B = False
if A:
print("A가 참")
# A가 False 이므로 A 블록을 무시하고 B를 판단한다
elif B:
print("B가 참")
# B가 False 이므로 B 블록을 무시하고 else 블록으로 넘어간다
else :
print("무엇도 참이 아님")
# else 블록을 실행함
# >>> 무엇도 참이 아님
위의 코드를 보면 elif 와 else의 사용 예를 볼 수 있는데 말로 풀어서 이해하면 아주 쉽다.
- if A : 만약 A 라면, {블록} 해라
- elif B : 만약 B 라면, {블록} 해라
- else : 아니면, {블록} 해라
if에 연결되는 elif 는 여러개 쓸 수 있으나 else는 여러개 쓸 수 없으니 염두해두자.
4.3 실전
활용 예시를 보면서 어떻게 쓰이는 지 알아보자
- 게임 점수를 입력 받고 해당되는 결과를 출력하는 프로그램
game_score = int(input("게임 점수 : "))
if game_score >= 10000:
print("고수입니다.")
else:
print("입문자입니다.")
# input() 함수는 () 괄호안에 문자열을 넣을 수 있고
# 실행시 괄호안에 문자열을 출력하고, 이후 사용자로 부터 입력을 대기 받는 상태가 된다
# 사용자로 부터 입력이 들어오면 이를 문자열로 반환한다.
# int() 함수는 () 괄호 안에 있는 객체를 int형으로 형변환 한다.
# ex: int("123")
# >>> 123 #문자열 123을 넣으면 정수 123으로 바꿔준다.
- 점의 좌표 정수 x와 y를 입력받고 점이 어디에 위치하는지 출력하는 프로그램
from math import sqrt
# math라는 모듈에서 sqrt 함수를 불러와서 사용한다는 명령어
# from {모듈 이름} import {함수 이름} >-> {모듈 이름}으로 부터 {함수 이름}을 가져옴
x, y = map(int, (input("점의 좌표 x, y를 입력하시오 : ")).split(" "))
# 사용자로 부터 '1 2' 와 같은 포맷으로 입력을 받고
# 문자열의 메소드인 split을 통해 " "(공백)으로 문자열을 나눔
# 나눠진 값들은 list 객체 로 반환되는데
# 이를 map() 함수로 list 객체의 내부 요소들에 int() 함수를 적용시킴
# 그럼 아까 list 객체의 내부요소들은 int 자료형으로 형변환이 되었고
# 이를 x 와 y 변수에 동시 할당문으로 값을 할당하는 명령어
# sqrt() 함수는 ()괄호 안의 값의 제곱근을 반환한다.
# 윈점으로 부터 압력받은 점까지의 거리를 계산하는 수식
if sqrt((3-x) ** 2 + (4-y) ** 2) > 10:
print("원의 외부에 있음")
elif sqrt((3-x) ** 2 + (4-y) ** 2) < 10:
print("원의 내부에 있음")
else:
print("원 위에 있음")
처음보는 굉장히 긴 코드가 있어서 당황스러울 수 있으나 혹시 주석으로도 이해가 안될 수 있어서 아래 다 풀어서 써놨다.
x, y = map(int, (input("점의 좌표 x, y를 입력하시오 : ")).split(" "))
입력값 = input("점의 좌표 x, y를 입력하시오 : ")
입력값들 = 입력값.split(" ")
x = int(입력값들[0])
y = int(입력값들[1])
4줄 짜리 코드를 한줄로 줄일 수 있는게 대단하지 않은가? 물론 코드는 보기좋고 이해하기 좋은 코드가 좋다.
굳이 어떻게든 코드를 줄이려고 하지않아도 된다. 다만 위처럼 {입력값, 입력값들} 과 같은 변수를 만들지 않을 수 있다면 컴퓨터가 사용할 자원을 아낄 수 있으니 이런 부분에선 코드를 줄이면 좋다.
이번에는 프로그래밍의 첫번째 꽃 if , 조건문에 대해 알아봤으니 두번째 피는 꽃인 for , 반복문에 대해 알아보자.
'Study > 따라하며 배우는 파이썬과 데이터 과학' 카테고리의 다른 글
| 따라하며 배우는 파이썬과 데이터 과학 (6) - 함수로 일처리를 짜임새있게 하자 (1) | 2021.06.20 |
|---|---|
| 따라하며 배우는 파이썬과 데이터 과학 (5) - 여러 번 반복하는 일을 하자 (0) | 2021.05.31 |
| 따라하며 배우는 파이썬과 데이터 과학 (3) - 연산자로 연산을 해 보자 (0) | 2021.05.28 |
| 따라하며 배우는 파이썬과 데이터 과학 (2) - 값을 담아 다루어 보자 (1) | 2021.05.28 |
| 따라하며 배우는 파이썬과 데이터 과학 (1) - 파이썬 기초체력 다지기 (0) | 2021.05.28 |