반응형
* 위 강의노트는 패스트캠퍼스에서 주관하는 강의를 수강한 후 작성한 노트입니다.
조건문과 반복문 - 조건문(if, elif, else) 활용하기
condition(조건문)
- 특정 조건을 만족하는 경우에만 수행할 작업이 있는 경우 사용
- 모든 조건은 boolean으로 표현됨
- if, elif, else키워드가 사용
- 조건문의 경우, if, elif, else블록에 종속된 코드는 들여쓰기로 표현 가능
- 들여쓰기 된 코드를 블록(block)또는 코드블록이라고 함
- python에서 모든 블록의 시작점의 마지막에는 :(콜론, colon)추가가 필요
if 6 >= 5 : # 6이5보다 큰가?
print(‘6 is greater than 5’) # 코드블록 : 들여쓰기
print(‘yeah, it is true’) # 참일 경우 실행되는 구문
print(‘This code is not belongs to if statments’) # 이건 코드블럭 안에 없으므로 if에 종속되지 않음
- Logical AND, OR, NOT
- 조건문에 사용되는 조건의 경우, boolean이기 때문에, 논리식 AND, OR, NOT이 사용 가능
- 논리표
- AND
- T AND T : T
- T AND F : F
- F AND T : F
- F AND F : F
- OR
- T OR T : T
- T OR F : T
- F OR T : T
- F OR F : F
- NOT
- NOT T : F
- NOT F : T
- AND
- 우선순위
- NOT > AND > OR
- NOT > AND > OR
- if의 조건이 bool이아닌 경우
- 일반적으로는 조건문에는 bool이 주로 위치함
- 하지만 정수, 실수, 문자열 리스트 등 기본 타입도 조건에 사용 가능
- False로간주되는 값(각 타입의 기본값)
- None
- 0, 0.0, ‘’
- 빈 리스트, 튜플, 딕셔너리([], (), {}, set())
- 그밖에는 모두 True로간주
- if, else
- if가아닌 경우, 나머지 조건을 표현하고 싶다면 바로 else블록 사용
- 이 경우, if조건이 True인경우, if 블록의 코드가 수행, 거짓인 경우 else블록의 코드가 수행
- 주의할 점 : if와 else사이에 다른 코드 삽입 불가 -> if와 else는 한 쌍
# 짝수인 경우에는 짝수라고, 홀수인 경우에는 홀수라고 표현하기
a = 10
if a % 2 == 0: # 짝수인지 판별
print(“이 숫자는 짝수입니다”) # 짝수일 때 실행
else :
print(“이 숫자는 홀수입니다”) # 짝수가 아닐 때 실행
>> “이 숫자는 짝수 입니다”
- if, elif, else
- 조건이 여러개인 경우, 다음 조건을 elif블록에 명시 가능
- 이 경우, 각 조건을 확인 후 , Trua인 조건의 코드 블록을 실행한 후, 전체 if, elif, else구문을 종료
- 조건문을 사용할 때는, if이후 0개 이상의 elif를 사용 가능하며 0개 또는 1개의 else를사용 가능함
a = 17
if a % 4 == 0: # 참인지 거짓인지 판별
print(‘a is divisible by 4’)
elif a % 4 == 1: # 참이 아닐 경우
print(‘a % 4 is 1’)
elif a % 4 == 2: # 위에까지 참이 아닐 경우
print(‘a % 4 is 2’)
else :
print(‘a % 4 is 3’)
>> a % 4 is 1
- 중첩 조건문(nested condition)
- 조건문의 경우 중첩하여 작성 가능
- 중첩의 의미는 depth(깊이)로 생각할 수 있으며, depth의 제한은 없음
조건문과 반복문 - 반복문(while)활용하기
loop(반복문)
- 반복적인 작업을 가능하게 해주는 도구
- 특정 조건을 만족하는 경우 수행할 수 있음(while)
- 리스트, 문자열 , 튜플 등 컬렉션 타입의 아이템을 하났기 순화하면서 사용 가능(for)
- 코드 작업에서 가장 많이 사용하는 구문 중 하나
-
주의할 점 : while을사용할 경우, 반복을 멈추게 하는 장치가 필요
- 그렇지 않으면 셀이 무한히 수행되어, jupyter notebook의 재부팅이 필요
- 그렇지 않으면 셀이 무한히 수행되어, jupyter notebook의 재부팅이 필요
-
while 키워드 이용하여 리스트의 아이템 출력하기
a = [1, 10, 9, 24, 566, 23, 45]
i = 0 # 인덱스 초기화 하기 위해
while i < len(a): # 조건에 맞을 때까지(i이 a의길이 전까지)
print(a[i])
i += 1 # i를 1씩 증가
>>
1
10
9
...
- while 키워드 이용하여 리스트의 아이템 출력하기
- 조건문과 함께 사용하기
a = [1, 10, 9, 24, 25, 26]
i = 0 # 인덱스
while i < len(a):
if a[i] % 2: # 홀수인 경우만 출력하기
print(a[i])
else:
print(a[1]/2)
- 무한루프
- while의경우 종료가 되지 않도록 코드를 작성하면 블록에서 빠져나올 수 없음
while True: # 무한루프
print(‘aaa’)
>>
aaa
aaa
aaa
...
- break
- loop를 중단할 때 사용
- 보통 조건문 안에서 수행되며, 조건을 만족하는 경우 loop를 탈출하기 위해 사용
- loop를 중단하는 경우, while 이후의 코드를 수행
a = [1, 10, 9, 24, 25, 26]
i = 0
while i < len(a):
if a > 20: # 20보다 클 경우 loop 종료
break
print(a[i])
i += 1
>>
1
10
9
- continue
- break 처럼 반복을 중단하여 빠져나오지 않고, 다시 while조건으로 점프함
- 특정한 경우에는 코드를 수행하지 않고 다음으로 건너뛰기 위해 사용
a = 7
while a > 0:
a -= 1
if a == 5: # a = 5 이면
continue # 실행시키지 않고 그냥 건너뛰기
print(a)
조건문과 반복문 - 반복문(for)활용하기
for 반복문
- 리스트, 문자열 등등 순회 가능한 객체를 순회하면서 값을 처리할 때 사용
- 아래와 같은 문법으로 사용
- 모든 아이템이 순회되면 for블록 종료
a = [1,2,3,4,5]
for i in a:
print(i, i * 2)
>>
1 2
2 4
3 6
4 8
5 10
- 문자열의 아이템 출력하기
- 문자열의 경우 순회 가능, 리스트와 유사하게 순회 가능
a = ‘hello world’
for char in a:
print(char)
>>
h
e
l
l
o
w
o
r
l
d
- 기본적으로 인덱스가 존재하는 것만 순회가 가능함
- 정수, 실수는 순회가 불가능.
-
컬렉션 타입, 문자열만 순회 가능
-
dict의아이템 출력하기
- dictionary의 경우 기본적으로 순회하게 되면 key 값을 참조
- keys()함수를 이용하여 key값만 순회가능
- values()함수를 이용하여 value값만 순회가능
- items()함수를 이용하여 tuple형태로 key, value 순회가능
a = {‘korea’ : ‘seoul’, ‘japan’ : ‘tokyo’}
for k in a:
print(k, a[k])
>>
korea seoul
japan tokyo
for val in a.values():
print(val)
>>
seoul
tokyo
for k, v in a: # dict는 튜플을 반환하기 때문에 두개인자를 받을 수 있음
print(k, v)
>>
korea seoul
japan tokyo
- for에서 index 사용하기
- 기본적으로 for에 리스트를 순회하는 경우, 값만 추출함
- 아래와 같은 코드로 인덱스와 값 모두 사용 가능(enumerate함수 사용)
a = [1, 2, 3, 4, 5]
for index, num in enummerate(a): # 인덱스와 값 모두 출력
if index > 3:
print(index, num)
>> 4 5
-
break, continue는 while 반복문일 때와 동일하게 적용
- break : loop중단
- continue : loop건너뛰기
-
loop 중첩
- 반복문의 경우에도 중첩하여 사용 가능
- 중첩이라는 것은 반복문 블록의 코드 안에 또 반복문의 코드가 작성되는 것을 의미
- 이런 경우, 내부 루프는 외부 루프가 수행되는 만큼 반복 수행됨
- 또한 중첩의 경우 무한히 가능
a = [1, 2, 4]
for i in a: # a를 i안에서 순회
for j in a: # a를 j안에서 순회
print(i * j)
>>
1
2
4
2
4
8
4
8
16
-
collection의길이
- len() 내장함수로 계산 가능
- 내장함수 : 파이썬 내부에 구현되어 있어서 import하지 않고도 사용 가능한 함수를 의미
- abs, len, type, range등이 있음
-
range함수
- 리스트를 쉽게 만들 수 있는 내장함수
- 주어진 값에 따라 다양한 결과를 반환
- range(10) -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- range(2, 10) -> [2,3,4,5,6,7,8,9]
- range(2, 10, 3) -> [2, 5, 8]
if & for 연습문제
1. 구구단을 2-9단까지 출력하시오
for i in range(1, 10):
for j in range(2, 10):
print(i, ‘x’, j, ‘=‘ i*j)
2. 1-100까지정수 중 2의 배수 또는 11의 배수를 모두 출력하시오
num = range(1, 101)
for x in num:
if x % 2 == 0 or x % 11 == 0:
print(x)
3. a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45]에서 최대값과 최소값을 찾으시오 (sorted, sort사용 금지)
a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45]
# sort사용한 경우
a.sort()
a[0], a[-1]
>> 1, 99
# sort사용하지 않은 경우
## 처음 만나는 값을 최소 값으로 가정
## 그리고 그 후 숫자를 만날때마다 현재 최소값보다 그 숫자가 작으면 최소값을 그 숫자로 업데이트
_min = a[0]
for x in a:
if x < _min:
_min = x
# 최대와 최소를 동시에
_min = a[0]
_max = a[0]
for x in a:
if x < _min:
_min = x
if x > _max:
_max = x
print(_min, max)
>> 1, 99
4. a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45]에서 평균을 구하시오
a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45]
i = 0
_sum = 0
fir x in a:
_sum += x
print(_sum / len(a))
반응형
'Study > ML_Basic' 카테고리의 다른 글
머신러닝과 데이터 분석 A-Z 올인원 패키지 - 데이터 수집을 위한 Python(1) (0) | 2020.09.10 |
---|---|
[수강 후기]머신러닝과 데이터분석 A-Z 올인원 패키지 - python programming 기초 (0) | 2020.09.08 |
머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(4) (0) | 2020.09.03 |
머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(3) (0) | 2020.09.03 |
머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(1) (0) | 2020.09.03 |