Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Nonamed Develog

[TIL] AI 웹 개발 7기 사전 캠프 1-2 본문

WHAT I LEARN/TIL

[TIL] AI 웹 개발 7기 사전 캠프 1-2

노네임드개발자 2024. 5. 21. 23:58

[데일리 미션]AI 트랙을 선택한 이유

  1. 내가 AI 트랙에 참여한 계기는 무엇인가요?
    30살부터 해외에 나가서 5년간 살다가 귀국한 후 한국에서 무엇을 해야할지 고민하고 있던 찰나 내일배움캠프 관련 유튜브 영상을 봤습니다. 개발의 ㄱ도 모르지만 왠지 모르게 관심이 생겨 알아봤고 도전하고 싶은 마음이 생겼습니다. 어떤 트랙을 밟을까 고민하던 중 비전공자이면서 AI 트랙을 수료한 분들의 후기들을 많이 보게 되었습니다. 도전하고 싶지만 마음 한 켠엔 새로운 것을 배우는 두려움도 존재했기에 이런 후기들은 제게 큰 도움이 되었습니다. 이 후에 데이터분석, 웹 개발 웨비나를 참석하면서 고민 끝에 AI 트랙에 참여하기로 결정했습니다.


  2. 내가 이해한 개발자는 어떤 역할을 하는 사람인가요?
    아직 잘 모르지만 프로그래밍 언어로 어떠한 문제를 해결하는 것이라고 알고 있습니다. 기술적인 실력뿐만 아니라 문제 해결 능력이 제일 덕목인 것 같습니다.

  3. 개발을 경험해보셨나요? 해보셨다면 어떤 경험을 하셨는지를 작성해주시고, 아니라면 개발에 대해 찾아본 것을 작성해주세요.
    경험이 전혀 없습니다. 학부 시절 전공 기초 과목에서 배웠다하기 부끄러울 정도 입니다.

  4. 개발자의 역할을 수행하는 데에 있어 나의 강점과 연관된 부분은 무엇이라고 생각하나요? 혹은 보완, 개선하고 싶은 개인 역량이 있나요 ?
    저는 한국에서 동영상 촬영/편집, 외국에서는 광산 관련 설비 직무에서 근무했기 때문에 제 능력이 개발자의 역할을 수행하는 데에 직접적인 상관관계는 없다고 생각이 듭니다. 하지만 여러가지 직무를 경험했기 때문에 새로운 일에 적응하기 수월할 것이라고 생각합니다. 특히 팀 프로젝트 같은 소통이 필요한 환경에서 

  5. 본 코스 수료 후, 어떤 개발자로 성장하고 싶나요?
    기술이 빠르게 발전하고 있는 시대에 발 마춰 발전하는 개발자가 되고 싶습니다.


  6. 그 외에 개발 트랙에 기대하는 것이 있다면 자유롭게 작성해 주세요.
    현재는 잘 모르기에 공부하면서 여쭤보겠습니다.

 

파이썬 문법 기초 1주차 강의 (1강~9강 2회독) 

 

1-1 파이썬 기초 문법 뽀개기

 

수업의 목적

문법을 달달 외우는게 목표가 아니다. 본격적으로 어떤 프로젝트를 진행할 때 다시 찾아 볼 수 있는 정도로 학습 진행하자. 빠르게 기초 문법을 훑고 실제 응용 프로젝트로 들어가는 것이 가장 실력 향상에 도움 된다.

 

배우는 순서

1. 기초적인 문법을 차근차근

2. 퀴즈 풀며 익숙해지기

3. 약간 심화된 문법/쓰임새

 

1-2 파이썬 시작하기

 

파이썬을 설치 한다는 의미

일종의 번역팩을 설치한다고 생각하면 된다. 컴퓨터는 101010001 과 같은 언어만 알아듣는다고 하는데 파이썬 문법으로 된 것을 101010001로 변환해줄 수 있도록, 번역 패키지를 설치하는 것이다

 

파이썬은

읽기 쉽게' 만든 언어이기 때문에, 문법이 쉬워 초보자가 배우기 좋은 언어이다.

무료/오픈소스로 운영되고 커뮤니티가 크기 때문에 자연어처리, 머신러닝 등 직접 구현하기 어려운 기능들도 다른 개발자의 라이브러리를 이용해 쉽게 코드를 작성할 수 있다.

 

파이참에서 새 프로젝트 만들기

1. 바탕화면에 sparta_python 폴더를 생성

2.파이참 실행!

3.Create New Project 를 선택

 

*base interpreter - 파이썬 버전이 3.8로 되어있는지 확인

*Location - 끝이 \\venv 로 끝나는지 확인

*main.py 자동 생성은 체크 해제!

*venv 폴더은 없는거라고 생각하자. 여기에 어떤 파일이라도 만들면 안된다.

 

첫 파이썬 파일 실행하기!

sparta 폴더 안에 hello.py라는 이름으로 파일을 하나 만들어준다.

print('hello_sparta') 입력 - ctrl+s(저장) - 우클릭 - Run - hello.py 실행

 

파이썬 문법을 시작하기에 앞서..

파이썬은 매우 직관적인 언어이고, 할 수 있는 것도 많다. 그런데, 개발자들도 모든 문법을 기억하기란 쉽지 않다. 오늘 배우는 것 외에 필요한 것들은 구글링해서 찾아보면 된다!

수업을 다 들어도 한번에 모든 게 외워지지 않는 게 당연하니, 걱정하지 말자 "그런 개념이 있었지! 강의자료를 다시 뒤적여볼까?" 정도면 아주 충분하다.

 

1-3 변수 선언과 자료형

 

a = 3 → 3이라는 값이 a라는 박스에 들어갔다.

b = 2 → 2라는 값이 b라는 박스에 들어갔다.

print (a+b) → 사칙연산이 가능(+,-,*,/)

 

a의 b제곱을 어떻게 쓰지? → print(a**b)

a를 b로 나눴을 때 나머지 → print(a%b)

-나머지가 0,1,2(동등하게 3가지로 나눌때)??

-짝수 홀수 판별(2로 나눠서 나머지가 0이면 짝수 1이면 홀수)

 

변수는 값을 담는 박스

값은 정수, 소수, 문자열('abc'), 참/거짓 

a = (3 > 2)

print(a)

→true

a = (3 == 2) 같다고 표현할 때는 ==이라고 해야함.

print(a)

→false

 

변수는 컴퓨터 입장으로 봤을 땐 값이 담긴 위치를 가리키는 것

메모리에 올려둔다라고 표현. 메모리에 올려져 있는 값을 가리키고 있다.

 

쉽게 생각하면 값을 담는 박스

어렵게 보면 값을 가리키고 있다고 볼 수 있다. 컴퓨터가 기억하고 있는 메모리 공간을 변수가 가리키고(연결하고) 있다고 생각하자

 

1-4 문자열 다루기

 

first_name = 'gihong'

last_name = 'gim'

print(first_name +last_name)

→ gihonggim

문자열은 변수와 구분이 돼야하기 떄문에 작은 따옴표 or 큰 따옴표를 붙여줘야 한다.

 

a = 2

b = a

print(b)

→ 2

 

a = 2

b = 'a'

print(b)

→ a

여기서 b는 문자열 a이다.

 

a = '2'

print(a)

→ 2

a는 '문자열' 2이다.(숫자 아님)

 

a = 2

b = 'hello'

print(a+b)

→ error

숫자와 문자는 더할 수 없다.

 

a = '2'

b = str(2)

print(a+b)

→ 22

문자로 만들 수 있는 것은 작은 따옴표, str(2) 

 

text = 'abcdefghijk'

result = text

print(result)

→ abcdefghijk

 

text = 'abcdefghijk'

result = len(text)

print(result)

→ 11

len()은 문자열의 길이를 나타낸다.

 

문자열 자르기1

text = 'abcdefghijk'

result =  text[:3]

print(result)

→ abc

[:3] 앞에서부터 3개까지 자르기 [:3]

[3:] 3개 뒤부터 나오게 된다. → defghijk

[3:7] → defg

tip) 하나씩 입력해보면서 값을 찾아내면 더 편하다. 

[:] 복사(없어도 무방)

 

문자열 자르기2

myemail = 'abc@sparta.co'

result = myemail.split('@')[1].split('.')[0]

print(result)

sparta

abc@sparta.co를 @를 기준으로 쪼갠 후(abc, sparta.co) 1번 째

sparta.co를 .을 기준으로 쪼갠 후(sparta, co) 0번 째

sparta

 

Quiz

Q. 문자열의 앞의 반만 출력하기

"sparta"의 앞의 3글자인 "spa"만 출력해봅시다.

text = 'sparta'
result = text[:3]
print(result)

 

Q. 전화번호의 지역번호 출력하기

phone = "02-123-1234"

phone = "02-123-1234"
result = phone.split('-')[0]
print(result)

 

1-5 리스트와 딕셔너리

 

리스트와 딕셔너리는 값을 담는 방법이다.

리스트: 순서가 중요하게 값을 담는 방법(0번 쨰, 1번 째)

딕셔너리: 키밸류(주민등록번호, 이름)로 값을 담는 방법

 

리스트

a_list = ['2','배',false]

print(a_list)

2, '배', false

문자열. 숫자, 참/거짓 모두 담을 수 있다.

 

+리스트로 담을 수 있다. ['사과','감']

a_list = ['2','배',false, ['사과','감'] ]

print(a_list[3][1])

 감

3번째 리스트에 있는 1번째(타고 타고 들어가는 리스트의 속성 이해하기)

 

a_list = [1,5,6,3,2]

a_list.append(99)

print(a_list)

1, 5, 6, 3, 2, 99  

 

a_list = [1,5,6,3,2]

a_list.append(99)

a_list.append(100)

print(a_list[5])

99  

a_list.append 계속 추가 가능

 

a_list = [1,5,6,3,2]

result = a_list[-1]

print(result)

→ 2

[-1] 제일 마지막 출력

[:3] 앞에서 3개만 자르기

len(a_list)도 가능

 

a_list = [1,5,6,3,2]

a_list.sort()

print(a_list)

→ 1, 2, 3, 5, 6

 

a_list = [1,5,6,3,2]

a_list.sort(reverse=true)

print(a_list)

→6, 5, 3, 2, 1

내림차순으로 나오게 할 수 있다.

 

a_list = [1,5,6,3,2]

result = (5 in a_list)

print(result)

→ Ture

내가 원하는 값이 리스트에 있는지 없는지 여부를 알 수 있다.

 

딕셔너리

a_dict = {'name':'bob,'age':27}

{키:밸류,키:밸류} - 순서가 없다.

 

a_dict = {'name':'bob,'age':27}

result = a_dict['name']

print(result)

→ bob

 

a_dict = {'name':'bob,'age':27,'friend':['영희','철수']}

result = a_dict['friend'][1]

print(result)

철수

friend는 리스트라서 딕셔너리와 함께 쓸 수 있다.

 

a_dict = {'name':'bob,'age':27,'friend':['영희','철수']}

a_dict['height'] = 180

print(a_dict)

'name':'bob,'age':27,'friend':['영희','철수'], 'height' : 180

 

a_dict = {'name':'bob,'age':27,'friend':['영희','철수']}

a_dict['height'] = 180

result = ( 'height' in a_dict')

print(result)

True

 

리스트와 딕셔너리의 조합

people = [
    {'name':'bob','age':27},
    {'name':'john','age':30}
]
print(people[1]['age'])

  30

[] 리스트 안에 {} 딕셔너리가 여러개 있는 형태에서 값을 가져다 쓸 수 있다.

 

Quiz. smith의 science 점수를 출력해보세요.

people = [
    {'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}},
    {'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}},
    {'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}},
    {'name': 'john', 'age': 34, 'score':{'math':75,'science':100}}
]

print(people[2]['score']['science'])

 

1-6 조건문

 

money = 5000

if money > 3800:

     print('택시를 타자!')
→ 택시를 타자

 

money = 3000

if money > 3800:

     print('택시를 타자')

else:

     print('택시를 못타')

→ 택시를 못타

 

*들여쓰기의 중요성

콜론(:)이 나오면 들여쓰기를 해야 그 내용물이 된다.(tab)(shift-tab)

 

money = 3000

if money > 3800:

     print('택시를 타자')

else:

     print('택시를 못타')

     print('그럼 뭘 타지?')

→ 택시를 못타

    그럼 뭘 타지?

 

money = 5000

if money > 3800:

     print('택시를 타자')

else:

     print('택시를 못타')

print('그럼 뭘 타지?')

→택시를 타자

    그럼 뭘 타지?

 

money = 5000

if money > 3800:

     print('택시를 타자')

elif money > 1200

     print('버스를 타자')

else:

     print('걸어가자')

 

elif는 여러번 쓸 수 있다.

 

1-7 반복문

0~9 까지 숫차 출력, 리스트의 요소들을 하나 하나 다 써야할 때 쓰면 좋다

 

fruits = ['사과','배','감','수박','딸기']

for fruit in fruits:

print(friut)

사과

수박

딸기

 

파이썬에서 반복문은 리스트 안에 있는 요소들을 하나씩 꺼내서 써먹는 것.

 

코드스니펫 - 나이출력하기

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

people 이라는 리스트에 여러 딕셔너리가 있는 상태

 

 

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for person in people:
    name = person['name']
    age = person['age']
    print(name, age)

bob 20
carry 38
john 7
smith 17
ben 27
bobby 57
red 32
queen 25

person이라는 딕셔너리에서 name과 age 값을 가져옴

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for person in people:
    name = person['name']
    age = person['age']
    if age > 20:
        print(name, age)

20살 위로만

리스트 안에 딕셔너리가 들어 있고 그것을 돌면서 조건에 맞는 것만 출력하는 것

 

한걸음 더! enumerate, break

예를 들어 people이 10000줄일 때 실행에서 출력하기엔 시간이 너무 오래걸리므로 추려서 확인 할 수 있다.

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for i, person in enumerate(people):
    name = person['name']
    age = person['age']
    print(i, name, age)

0 bob 20
1 carry 38
2 john 7
3 smith 17
4 ben 27
5 bobby 57
6 red 32
7 queen 25

enumerate: 요소의 순서를 적어 주는 것

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for i, person in enumerate(people):
    name = person['name']
    age = person['age']
    print(i, name, age)
    if i > 3:
        break 

0 bob 20
1 carry 38
2 john 7
3 smith 17
4 ben 27

break: 거기서 그만 두라는 명령

 

1-8 반복문-연습문제

Q. 리스트에서 짝수만 출력하는 함수 만들기

tip)반복문을 돌면서 for, if 요소가 2로 나눴을 때 나머지가 0인 것을 출력

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

for num in num_list:
    if num % 2 == 0:
        print(num)

==: 같다는 뜻

 

Q. 리스트에서 짝수의 개수를 출력하기

tip)변수가 하나 있고 짝수가 나올 때마다 그 변수를 하나 씩 키운다.

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

count = 0
for num in num_list:
    if num % 2 == 0:
        count += 1
print(count)

count += 1 은 count = count + 1 이다/ count를 1만큼 높혀줘라

 

Q. 리스트 안에 있는 모든 숫자 더하기

tip)변수가 필요함

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

sum = 0
for num in num_list:
    sum += num
print(sum)

sum을 num만큼 증가시켜!

*알고리즘, 프로그램적인 사고를 계속해서 하는 것이 중요!

 

Q. 리스트 안에 있는 자연수 중 가장 큰 숫자 구하기

tip)변수 필요, 도는데 if 크면 저장하다보면 제일 큰게 출력

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

max = 0
for num in num_list:
    if max < num:
        max = num
print(max)

 

 

1-9 함수

프로그래밍에서 함수는 같은 동작을 하는 것

def hello():
    print('안녕')

hello()

hello()를 아무데서나 불러도 안녕이 실행 됨.

함수 이름은 아무거나 해도 상관 없음

 

def sum(a,b):
    return a+b

result = sum(1,2)
print(result)

1,2가 각각 a,b가 되고 그것이 return 되면 더하기가 되어서 3이 된다.

 

def bus_rate(age):
    if age > 65:
        print('무료입니다')
    elif age > 28:
        print('성인입니다')
    else:
        print('청소년입니다')

bus_rate(90)

age 값에 따라서 무료입니다/성인입니다/청소년입니다 출력

이렇게 구문을 여러번 쓰지 않아도 로직을 써먹을 수 있다.

 

def bus_rate(age):
    if age > 65:
        return 0
    elif age > 28:
        return 1200
    else:
        return 750

myrate = bus_rate(11)
print(myrate)

 

Q. 주민등록번호를 입력받아 성별을 출력하는if 함수 만들기

tip) 1.-로 쪼개서 1번째 중에 1번째 글자를 취해서 짝수/홀수 구분

      2.문자를 숫자로 바꿔줘야 함 - int('2')

def check_gender(pin):
    result = pin.split('-')[1][:1]
    if int(result) % 2 == 0:
        print('여성')
    else:
        print('남성')

check_gender('890526-1231234')
check_gender('890526-3231234')
check_gender('890526-2231234')
check_gender('890526-4231234')

 

잘 모르겠으면 구글링!