검색
검색
공개 노트 검색
회원가입로그인

[이솦] 파이선으로 배우는 AI 기초 08

요약
  • 인공지능 프로그램 개발 시 반복문(for, while)과 조건문을 활용해야 한다.
  • 이미지 인식을 위한 교육용 툴로 구글의 teachable machine과 epochs 개념을 예로 들었다.
  • 실습 예제를 통해 파이썬에서 리스트, 딕셔너리 등 다양한 자료형에 적용할 수 있는 반복문 사용법을 설명한다.

이솦 | EBS 소프트웨어·인공지능 교육

인공지능 프로그램은 지루한 반복작업과의 싸움이다.

이미지 인식을 위한 교육용 툴로 사용 되는 구글의 teacherable machine이 있다. 여기에서 반복을 위한 변수 epochs 이 있다. 사자와 호랑이를 구별하는 인종 지능 프로그램을 만든다고 가정해 보자. 각각 5천장씩 으로 훈련을 한다고 가정해 보자. 여기에서 에포크를 5천이라고 하면 만장의 사진을 반복해서 5천번 학습하라는 뜻이다. 많은 수를 반복해 특징을 찾는 학습을 한다. 하지만 이거는 많은 값이 아니다.

프로그램을 프로그램답게 표현하려면, 순차, 조건 이외에도 많은 수의 반복을 표현할수 있어야 한다.

반복문 for, while

반복문을 이용한 회문 작성이다. 회문은 바로 읽든 거꾸로 읽든 같은 문장이 되는 것이다. 예) 기러기, 별똥별, 역삼역

일반적으로 프로그램은 순서대로 실행된다. 그런데 작업을 반복적으로 처리하려면 어떻게 하면 될까? 예를 들어 리스트 안의 모든 문자열이 회문인지를 확인하려고 한다면 어떻게 반복을 할까?

for

for 변수 in 리스트 이름:

                         명령문

원하는 명령을 반복할때 사용한다. 전통적인 방식이며 in 후에 반복할 리스트 데이트를 넣고 그후에 콜런을 넣어야 한다.

:(콜론) 반복할때 "끝이 아니다" "여기서 부터 반복한다"를 의미한다.

명령문은 들여 쓰기 해야된다.

for문을 사용하면 리스트의 모든 요소를 반복할수 있다. for 문은 in 다음에 리스트만 적용되는건 아니다. 숫자를 헤아릴수 있는 자료면 사용 가능하다. 그러므로 리스트, 튜플, 딕셔너리 다 사용 가능하다.

portfolios = ['오송전자', '삼선자동차', '지구화학', '대양증권']
for i in portfolios:
    print("나의 포트폴리오에는", i, "이 있습니다.")

리스트를 정의하자. 갯수는 4개 이다.

i 는 변수명이다. 그리고 출력을 하는데 리스트의 갯수가 4개라서 for문은 4번 반복이다.

for문을 사용할때 변수 in 숫자를 헤아릴수 있는 자료형을 써야 한다. 꼭 리스트를 쓸 필요는 없다.

portfolios = ['오송전자', '삼선자동차', '지구화학', '대양증권']
for i in [2,3]:
    print("나의 포트폴리오에는", portfolios[i], "이 있습니다.")

이렇게 하면 리스트에서 3,4번째가 나온다. 이 반복분은 2번 반복이다.


for문의 range를 써보자.

for i in 후 리스트인지, 인덱스 인지 range 함수 인지 차이이다.

portfolios = ['오송전자', '삼선자동차', '지구화학', '대양증권']
for i in range(3): #[0,1,2]:3은 안들어가요 주의
    print("나의 포트폴리오에는", portfolios[i], "이 있습니다.")

주로 in 다음에는 리스트를 사용하지만 튜플과 딕셔너리도 사용 가능하다.

range(3)이라고 하면 list [0,1,2]를 생성해 준다.

in 다음에는 숫자를 헤아힐수 있는 자료형을 쓴다는것만 기억하자.

파이썬의 문법책에서는 in 다음에 iterable 객체를 사용할수 있다고 소개한다.

딕셔너리 사용할때는 key와 value로 되어 있어서 items() 라는 함수를 사용한다.

x= {'a': 10, 'b': 20, 'c': 30, 'd': 40}
for key, value in x.items():
    print(key, value)

item함수는 키와 밸류 다 가져 오기 때문에 이렇게 하면 모든 값이 다 출력된다.

for 문이 가장 많이 사용하는 반복문 구조이다. while 문도 for문으로 바꿔서 표현 가능하다.

while

for 문처럼 반복하는 자료형을 이용하지 않고 조건문을 이용한다.

while 조건:

     명령문

조건 다음엔 반드시 :을 쓰고 그후에 들여쓰기를 통해서 반복할 문장들을 표현하면 된다.

portfolios = ['오송전자', '삼선자동차', '지구화학', '대양증권']
i = 0
while i < len(portfolios):
    print('나의 포트폴리오에는', 'portfolios[i], '있습니다.')  # Indent this line with 4 spaces
    i = i + 1

리스트를 먼저 만들고 4개의 요소를 확인

len()함수는 리스트의 길이를 반환해 준다. 여기에서 처럼 하면 4를 반환해 준다.

while 문을 써서 4보다 적다면 반복해준다.

while 문 옆에 조건만 존재한다. 따라서 i값이 얼마인지 모른다. 그리고 조건이 계속 변해햐 되서, while문 안에 반드시 조에 사용한 변수 값이 증감하는 프로그램 코드를 넣어야 한다. i = i + 1를 통해서 반복이 될때 마다 i값을 증가시킨다.

반복문을 쓰다가 빠져 나오고 싶을 때가 있다. 조건이 만족되서 나올수도 있지만, while문에서 조건이 만족되지 않을 경우에도 for 문에서 리스트가 반복되지 않는 경우 중간에 반복을 그만두어야 할때 사용하는 명령어 break

while True:
    data = input('숫자를 입력하세요: ')
if data == '9':
        break
print('입력된 숫자는', data, '입니다.')

이러게 하면 무한히 반복된다. 입력된 숫자가 9가 되면 중지 이다. break 명령은 자신이 속한 반복문 하나만 빠져나간다.

만약 while 문안에서 while문이 있고 그 안에 break가 있다면 가장 가까지에서 break를 감싸고 있는 while문에서만 빠져나간다.

처음에 시작할때 에포크 라는 말을 했다. 머신러닝 코드를 보면 epoch는 model.fit()라는 명령의 옵셥으로 지정되어 있다. for나 while 같은 반복 구조는 model.fit()의 fit()이라는 함수 안에 구현이 되어 있어서 실제 코드에서는 잘 보이지 않는다. 머신러닝 함수들은 그안에 기초 재료를 모두 담고 있는 구조이다.

실습

word_list = ['기러기', '토마토', '별똥별', '강남역', '호랑이']
for word in word_list:
    if word[0] == word[-1]:
        # Indent the print statement to include it in the 'if' block
        print("{0}는 회문입니다.".format(word)) 
    else:
        print("{0}는 회문이 아닙니다.".format(word))

word list 를 word로 불러내고 첫글자 0이 마지막 글자 -1과 같다면 회문 아니면 회문이 아라는 출력을 하게 된다.

이렇게 프로그램을 프로그램답게 만들어 주는 3가지 구조를 배웠다.

순차구조, 조건구조, 반복구조이다.

몇가지 코드를 더 살펴 보자.

# 쇼핑 목록
shopping_list = ['사과', '바나나', '오렌지', '우유', '빵']

# for 루프를 사용하여 목록을 출력
for item in shopping_list:
    print(f"구매할 항목: {item}")

for를 활용해서 리스트를 출력한다.

# 빈 쇼핑 목록 초기화
shopping_list = []

# while 루프를 사용하여 사용자 입력 받기
while True:
    item = input("구매할 항목을 입력하세요 (끝 입력 시 종료): ")
    if item == '끝':
        break
    shopping_list.append(item)

# 최종 쇼핑 목록 출력
print("최종 쇼핑 목록:")
for item in shopping_list:
    print(f"- {item}")

while을 사용해서 입력을 받는다.

# 빈 쇼핑 목록 초기화
shopping_list = {}

# while 루프를 사용하여 사용자 입력 받기
while True:
    item = input("구매할 항목을 입력하세요 (끝 입력 시 종료): ")
    if item == '끝':
        break
    while True: # 가격 입력에 대한 예외 처리 추가
        try:
            price = float(input(f"{item}의 가격을 입력하세요: "))
            break # 올바른 입력 시 루프 탈출
        except ValueError:
            print("숫자를 입력해주세요.")
    shopping_list[item] = price

# 총 비용 계산
total_cost = 0
for item, price in shopping_list.items():
    total_cost += price
    print(f"{item}: {price}원")

# 최종 총 비용 출력
print(f"총 비용: {total_cost}원")

둘을 섞어서 활용도 가능핟.

공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기
조회수 : 74
heart
T
페이지 기반 대답
AI Chat