Python Basics for AI
2-3. Conditionals and Loops
1) Conditionals : 조건문
조건문이란?
- 조건에 따라 특정한 동작을 하게하는 명령어
- 프로그램 예시
- 지하철 앞 차 간격이 10m 이하이면 속도를 10km 이하로 늦춰라
- 사용자가 20세 이하이면 VOD를 플레이 하지 마라
- 휴대폰 패턴이 5회 틀리면 20초 동안 대기 상태로 만들어라
- 조건문은 조건을 나타내는 기준과 실행해야 할 명령으로 구성됨
- 조건의 참, 거짓에 따라 실행해야 할 명령이 수행되거나 되지 않음
- 파이썬은 조건문으로 if, else, elif 등의 예약어를 사용함
if-else 문법
if <조건> : # if를 쓰고 조건 삽입 후 ":" 입력
<수행 명령1-1> # 들여쓰기(indentation) 후 수행명령 입력
<수행 명령1-2> # 같은 조건하에 실행일 경우 들여쓰기 유지
else: # 조건이 불일치 할 경우 수행할 명령 block
<수행 명령2-1> # 조건 불일치 시 수행할 명령 입력
<수행 명령2-2> # 조건 불일치 시 수행할 명령 들여쓰기 유지
- 가장 기본적인 조건문으로 조건에 따른 명령을 실행
print("Tell me your age : ")
myage = int(input()) # 나이를 입력 받아 myage 변수에 할당
if myage < 30: # myage가 30 미만일 때
print('Wellcome to the club.')
else: # myage가 30 이상일 때
print('Oh No. You are not accepted.')
조건 판단 방법
- if 다음에 조건을 표기하여 참 또는 거짓을 판단
- 참/거짓의 구분을 위해서는 비교 연산자를 활용
| 비교 연산자 | 비교 상태 | 설명 |
| x < y | ~보다 작음 | x가 y보다 작은지 검사 |
| x > y | ~보다 큼 | x가 y보다 큰지 검사 |
| x == y | 같음(값) | x와 y가 같은지 검사(값) |
| x is y | 같음(메모리 주소) | x와 y가 같은지 검사(메모리 주소) |
| x != y | 같지 않음 | x와 y가 다른지 검사(값) |
| x is not y | 같지 않음(메모리 주소) | x와 y가 다른지 검사(메모리 주소) |
| x >= y | 크거나 같음 | x가 y보다 크거나 같은지 검사 |
| x <= y | 작거나 같음 | x가 y보다 작거나 같은지 검사 |
조건 참/거짓의 구분
- 숫자형의 경우는 수학에서의 참/거짓과 동일 ( 0은 거짓, 1은 참 )
- 컴퓨터는 존재하면 참, 없으면 거짓으로 판단
* if "abc" : 는 참, if "": 는 거짓
>>> if 1:
... print("True")
... else:
... print("False")
...
True
논리 키워드 사용 : and, or, not
- 조건문을 표현할 때 집합의 논리 키워드를 함께 사용하여 참과 거짓을 판단하기도 함
- (T and T) → T
- (_ and F) → F
- ( T or _ ) → T
- ( F or F ) → F
a = 8, b = 5 일 때,
if a == 8 and b == 4 # 거짓
if a > 7 or b > 7 # 참
if not(a > 7) # 거짓
삼항 연산자(Ternary operators)
- 조건문을 사용하여 참임 경우와 거짓일 경우의 결과를 한 줄에 표현
>>> value = 12
>>> is_even = True if value % 2 == 0 else False
>>> print(is_even)
True
2) Loop : 반복문
반복문이란?
- 정해진 동작으로 반복적으로 수행하게 하는 명령문
- 프로그램 예시
- 100명의 학생에 성적을 산출할 때
- 검색 결과를 출력해줄 떄
- 워드에서 단어 바꾸기 명령 실행
- 반복문은 반복 시작 조건, 종료 조건, 수행 명령으로 구성됨
- 반복문 역시 반복 구문은 들여쓰기와 block으로 구분됨
- 파이썬은 반복문으로 for, while 등의 명령 키워드를 사용함
알아두면 좋은 반복문 상식!
- 반복문 변수명 : 임시적인 반복 변수는 대부분 i, j, k로 정함
- 0부터 시작하는 반복문 : 반복문은 대부분 0부터 반복을 시작하나, 일종의 관례로 1부터 시작하는 언어도 존재. 하지만 정해지지 않은 경우에는 2진수가 0부터 시작하기 때문에 0부터 시작하는 것을 권장!
- 무한 loop : 반복 명령이 끝나지 않는 프로그램 오류. CPU와 메모리 등 컴퓨터의 리소스를 과다하게 점유하는 문제가 발생하고, 무한 loop 사실상 잘못된 프로그램일 가능성이 매우 높은 코드. 반복문, 특히 while문에서 종료 조건을 설정했는지 꼭 확인하기
for문
- 기본적인 반복문 : 반복 범위를 지정하여 반복문 수행
"""
작동 과정
1. looper 변수에 1 할당
2. looper 변수값(1) 출력
3. 리스트에 있는 값을 차례로 looper에 할당
4. 5까지 할당한 후 반복 block 수행 후 종료
"""
for looper in [1, 2, 3, 4, 5]:
print(looper)
- range() 사용하기
아래 두 코드는 같은 동작을 한다.
* 왜 range(0, 4)가 아닌 range(0, 5)인가?
→ range()는 마지막 숫자 바로 앞까지 리스트를 만들어줌
→ range(0,4) = [0, 1, 2, 3], range(0, 5) = [0, 1, 2, 3, 4] = range(5)
# 방법 1
for looper in [0, 1, 2, 3, 4]:
print('hello')
# 방법 2
for looper in range(0,5) :
print('hello')
- for 문의 다양한 반복문 조건 표현 ( 아래 예시들의 결과를 예상해보고, 주피터 노트북에서 돌려보자 )
- 문자열을 한 글자씩 리스트로 처리하기
for i in "abcdefgh":
print(i)
- 각각의 문자열을 리스트로 처리
for i in ['americano', 'latte', 'frafuchino']:
print(i)
- 간격을 두고 세기
for i in range(1, 10, 2): # 1부터 9까지 2씩 증가하면서 i에 할당
print(i)
- 역순으로 반복문 수행
for i in range(10, 1, -1): # 10부터 2까지 -1씩 바꾸면서 i에 대입
print(i)
while 문
- 조건이 만족하는 동안 반복 명령문 수행
- for 문은 while문으로 변환이 가능, while문도 for문으로 변환가능. 상황에 따라 다르게 사용
* 반복 실행 횟수를 명확히 알 때 : for문
* 반복 실행 횟수가 명확하지 않을 때 : while문
i = 1 # i 변수에 1 할당
while i < 10: # i가 10 미만인지 판단
print(i) # 조건에 만족할 때 i 출력
i += 1 # i 에 1을 더함
# i가 10이 되면 반복문 종료
반복의 제어 - break, continue
- break : 특정 조건에서 반복 종료
for i in range(10):
if i==5: # i 가 5가 되면 반복문 종료
break
print(i)
print('EOP')
- continue : 특정 조건에서 남은 반복 명령 skip
for i in range(10):
if i==5: # i 가 5일 때에는 i를 출력하지 않음
break
print(i)
print('EOP')
3) Loop & control lab
가변적인 중첩 반복문(variable nested loops)
- 실제 프로그램에서 반복문은 사용자의 입력에 따라 가변적으로 반복되고, 하나의 반복이 아닌 중복되어 반복이 일어남
- 반복문과 조건문은 정말정말 많은 상황에서 함께 사용됨
# 예시 - 숫자 찾기 게임
import random
answer = random.randint(1, 100)
print('숫자를 맞춰보세요(1~100)')
user_guess = int(input())
# 사용자가 언제 숫자를 맞힐지 모르기 때문에(종료 시적이 명확하지 않기 때문에) while문 사용
while (user_guess is not answer):
if user_guess > answer:
print('up')
else:
print('down')
user_guess = int(input())
else: print('correct!')
4) Debugging
Debugging(디버깅)
- 코드의 오류를 발견하여 수정하는 과정
- 오류의 원인을 알고 해결책을 찾아야 함
- 문법적 오류와 논리적 오류가 존재
문법적 오류
- 종류
- 들여 쓰기(indentation error) 오류 : 파이썬은 들여쓰기로 코드 블록을 판단함
- 오탈자
- 대소문자 구분 안 함
- 주로 인터프리터가 알려주는 오류. 에러코드를 이해하고 그에 맞춰 해결하기

논리적 오류
- 예상한대로 실행이 안되는 경우
- 중간중간 프린트 문을 찍어서 확인하기
def addition(x, y):
return x + y
def multiplication(x, y):
return x * y
def divided_by_2(x):
return x/2
if __name__ == '__main__':
print(addition(10, 5))
print(multiplication(10, 5))
print(divided_by_2(50))
Doing by yourself
- 여러 시행착오를 겪다보면 오류를 해결하는 능력도 향상될 것..!
- 인터넷에 물어보기 : Google 과 Stack overflow 잘 활용하기!
* Stack overflow : 전 세계 개발자들의 코딩 Q&A 사이트
'부스트캠프 AI Tech 공부 기록 > Python' 카테고리의 다른 글
| [Python] Function and Console I/O (0) | 2022.01.31 |
|---|---|
| [Python] Variable & List : 변수와 리스트 (0) | 2022.01.23 |
| [Python] Jupyter Notebook & Colab (0) | 2022.01.18 |
| [Python] Coding Environment : 파이썬 코딩 환경 (0) | 2022.01.18 |
| [Python] Python 제대로 알기 : 개요와 특징 (0) | 2022.01.18 |