머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(2)

2020. 9. 3. 00:58·AI Study/ML_Basic
반응형

 

* 위 강의노트는 패스트캠퍼스에서 주관하는 강의를 수강한 후 작성한 노트입니다. 

조건문과 반복문 - 조건문(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
    • 우선순위
      • 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의 재부팅이 필요

  • 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))

 

반응형

'AI 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
'AI Study/ML_Basic' 카테고리의 다른 글
  • [수강 후기]머신러닝과 데이터분석 A-Z 올인원 패키지 - python programming 기초
  • 머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(4)
  • 머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(3)
  • 머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(1)
자동화먹
자동화먹
많은 사람들에게 도움이 되는 생산적인 기록하기
    반응형
  • 자동화먹
    자동화먹의 생산적인 기록
    자동화먹
  • 전체
    오늘
    어제
    • 분류 전체보기 (144)
      • 생산성 & 자동화 툴 (30)
        • Notion (24)
        • Obsidian (0)
        • Make.com (1)
        • tips (5)
      • Programming (37)
        • Python (18)
        • Oracle (6)
        • Git (13)
      • AI Study (65)
        • DL_Basic (14)
        • ML_Basic (14)
        • NLP (21)
        • Marketing&Recommend (4)
        • chatGPT (0)
        • etc (12)
      • 주인장의 생각서랍 (10)
        • 생각정리 (4)
        • 독서기록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    데이터베이스
    기초
    딥러닝
    git commit
    데이터분석
    notion
    git
    Jupyter notebook
    LSTM
    빅데이터
    자연어처리
    머신러닝
    pytorch
    노션
    Github
    gcp
    dl
    ML
    Transformer
    python기초
    seq2seq
    파이토치로 시작하는 딥러닝 기초
    Google Cloud Platform
    Python
    노션첫걸음
    nlp
    cnn
    빅데이터분석
    파이토치
    GPT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
자동화먹
머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(2)
상단으로

티스토리툴바