본문 바로가기
TIL

[TIL]2023.03.20 / 파이썬 기초/특강

by kming 2023. 4. 26.

목표

  • 파이썬 설치하기
  • 파이썬 기초 강의 듣기

참고자료


내용

파이참 써보기!

폴더>마우스오른쪽>NEW>python file>파일이름.py적기
파일에 print('hello')입력하기>마우스오른쪽>Run클릭(내가 보고 있는 파일에서)


변수

:값을 담는 박스

  • 값에는 정수, 소수, '문자열', 참/거짓 등을 담을 수 있다

문자열

  • ' '(작은따움표)안에 적어야함
  • 문자열A+문자열B=문자열A문자열B
  • str()은 스트링이라는 의미로 str(2)와 '2'는 같음
  • len()은 문자열의 길이를 알려줌
    ex)
    b='lskfskjfls'
    a=len(b)
    print(a)
    결과: 10
  • 문자를 원하는 부분만 잘라 출력할 수 있음
    b = 'lskfskjfls'
    1) a = b[:3] #앞에서부터 3개까지 
    2) a = b[3:] #3번째까지 제외하고 출력
    3) a = b[3:7] #7번째까지 출력하되, 앞에 3번째까지 제외하고 출력
    4) a = b[:] #복사, 그냥 b랑 똑같음
    print(a)
    결과: 1)lsk 2)fskjfls 3)fskj 4)lskfskjfls
  • .split()은 ()를 기준으로 문자를 나눌 수 있음
    email = 'kmy@naver.com'
    1) result = email.split('@') #@기준으로 문자를 나눔
    2) result = email.split('@')[1] #@기준으로 나눈 문자 중 1번 index만 출력
    3) result = email.split('@')[1].split('.') #@기준으로 나눈 문자 중 1번 index 값에있는 문자열을 .기준으로 나눔
    4) result = email.split('@')[1].split('.')[0] #@기준으로 나눈 문자 중 1번 index 값에있는 문자열을 .기준으로 나눈 후 0번쨰 인덱스만 출력
    print(result)
    결과: 1)['kmy','naver.com'] 2)naver.com 3)['naver','com'] 4)naver

Quiz

sparta의 앞의 3글자인 spa만 출력하기

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

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

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

list(리스트)와 dictionary(딕셔너리)

:둘다 값을 담는 방법에 대한 이야기

list:

  • 순서가 중요하게 값을 담는 것
  • key:value로 값을 담는 방법에 대한 자료형
  • 문자열,숫자,참/거짓,리스트 모두 담을 수 있음
    ex) 리스트안에 리스트 안의 값을 가져오고 싶을 때
    a_list = [2,'배',False,['사과','감']]
    print(a_list[3][1]) #a_list의 인덱스3(=['사과','감'])리스트의 1번째 인덱스 값을 출력
    결과: 감
  • .append()로 리스트에 추가 할 수 있음
    a_list = [2,4,5,6,4]
    a_list.append(99)
    print(a_list[5])
    결과: 99
  • 문자열에서 했던 것처럼 리스트에서도 [:]를 사용하여 원하는 부분만 자를 수 있음
  • 리스트를 len()안에 넣어 길이를 구할 수 있음
  • 변수명[-1]을 출력하면 무조건 리스트의 제일 마지막 값을 가져옴
    a_list = [2,4,5,6,4]
    result = a_list[-1]
    print(result)
    결과: 4
  • .sort()로 리스트를 정렬할 수 있음
    a_list = [2,4,5,6,1]
    1) a_list.sort() #오름차순
    2) a_list.sort(reverse=True) #내림차순
    print(a_list)
    결과: [1,2,4,5,6]
  • 내가 원하는 값이 리스트 안에 있는지 알아볼 수 있음
    a_list = [2,4,5,6,4]
    result = (5 in a_list)
    print(result) #있으면 true 없으면 false로 출력됨
    결과: true

dictionary:

  • 순서의 개념이 없음
  • key(키):value(값): 키에 값이 들어있는 형태로 씀
    a_dict = {'name':'bob','age':27,'friend':['영희','철수']}
    1) print(a_dict['name']) #name키에 들어있는 값을 출력하라
    2) print(a_dict['friend'][1])
    결과: 1)bob 2)철수
  • ['key']=value 값을 추가 할 수도 있음
    a_dict = {'name':'bob','age':27,'friend':['영희','철수']}
    a_dict = ['height'] = 180
    print(a_dict)
    결과: {'name':'bob','age':27,'friend':['영희','철수'], 'height':180}
  • 딕셔너리 안에 원하는 key값이 있는지 찾을 수 있음
    a_dict = {'name':'bob','age':27,'friend':['영희','철수']}
    a_dict = ['height'] = 180
    result = ('height' in a_dict)
    print(result) #있으면 true 없으면 false로 출력됨
    결과: true

list와 dictionary의 조합:

리스트안에 딕셔너리가 들어있는 형태

people = [
{'name':'bob','age':27}, #0번째
{'name':'john','age':30} #1번째
]
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}}
]
result = people[2]['score']['science']
print(result)
결과: 90

조건문 if/else/elif

: 조건을 주어 그 조건에 맞는 결과값을 출력

  • 들여쓰기 중요!!
  • elif는 여러번 쓸 수 있음
money = 5000
if money > 3800:
	print('택시를 타자')
elif money > 1200:
	print('버스를 타자')
else:
	print('걸어가자')

반복문 for

: 조건을 만족할 때까지 어떤 동작을 반복

fruits = ['사과','배','감','수박','딸기']
for fruit in fruits:
    print(fruit)
  • 리스트의 요소를 출력할때 반복문을 많이 씀
  • enumerate() 요소의 순서를 알려줌
    people = [...]
    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
  • break 조건이 맞지않으면 빠져나오기
    ii=[1,2,3,4,5,6,7,8]
    for i in ii:
        if i > 5:
            break
        print(i)
    결과: 0 1 2 3 4 5

Quiz

20살이 넘는 사람의 이름과 나이 출력하기

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)
결과:
carry 38
ben 27
bobby 57
red 32
queen 25

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

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

for i in num_list:
    if i%2 == 0:
        print(i)
결과: 2 6 2 4 6 2 4

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

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

count = 0
for i in num_list:
    if i%2 == 0:
        count += 1
print(count)
결과: 7

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

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

sum = 0
for i in num_list:
    sum += i
print(sum)
결과: 38

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

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

max = 0
for i in num_list:
    if i > max:
        max = i
print(max)
결과: 6

함수 def

: 프로그래밍에서의 함수는 같은 동작을 한다는 의미이다.

def hello():
    print('안녕!')
    print('좋은날씨야')

hello() //함수실행
결과:
안녕!
좋은날씨야
def sum(a,b):
	print('더하기를 하셨네요!')
    return a+b

result = sum(1,2) #1이 a에, 2가b에 들어감
print(result)
결과: 더하기를 하셨네요! 3
  • if문을 여러번 쓰지 않아도 함수의 파라미터만 바꿔 쓸 수 있어 편리함
def bus_rate(age):
    if age > 65:
        print('무료입니다')
        return 0
    elif age >20:
        print('성인입니다')
        return 1200
    else:
        print('청소년입니다')
        return 750

myrate = bus_rate(60)
print(myrate)
  • int("")를 이용하여 문자열을 숫자로 바꿀 수 있음
    int("2")

Quiz

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

def number(abc):
    gender = abc.split('-')[1][:1]
    if int(gender)%2 == 0:
        print('여자입니다')
    elif int(gender)%2 == 1:
        print('남자입니다')
    else:
        print('오잉')

number('981210-2111111')

 

  •  venv: 가상환경폴더
  •  Run: 실행하기
  •  메모리에 올려둔다:
  •  tab 들여쓰기/shift+tab 들여쓰기 취소
  •  객체지향적: 물체에다가 물체에 관련된 속성들을 넣어두고 컨트롤 할 수 있는 함수들을 만들어 붙여주고 중앙에서는 그 함수만 불러다가 그 물체를 제어하는 것
 

특강(좋은 개발자의 비밀)


* 상대방의 기간은 내시간 많큼 중요하다
=> 모르는부분을 물어볼 때 어떤시도를 해봤고 어떤결과가 나왔는지 타임라인으로 정리하여 보여준다면 시간을 낭비하지도 않고 상대방도 좋아한다.

* 고민의 흔적을 글로 남겨볼 것
=> 에러 메세지를 읽고 고민해보고 이를 글로 남기기

* 불편한 것들을 '컴퓨터가 해줄 수 있을까?' 고민/실행
=> 알고있습니다 보다는 해보았습니다가 좋다, 코드를 이해하지 못하고 복붙만 한 것은 너무 좋지않다 나를 깍아먹는것, 아이디어를 많이 생각해보고 실행해보기

* 영어 공부하기
=> 최신 소식은 영어권이나 러시아 쪽에서 빠르게 업뎃됨, 그들의 표현과 사고, 문화 들을 흡수해야하기 때문에,

* 도전해보겠다는 의지
* 겸손함, ~도해봤고, ~도해봤습니다 보단 프로젝트를 해보면서 팀원들의 소중함을 알게 되었습니다. 이슈나 에러를 팀원들과 어떻게 해결해 나갔는지,
* 분위기 메이커 '팀분위가 좋은팀이 결과물도 좋다'

=>가장 중요한 것은 소통!!, 일정을 정확하게 전달


문제 (해결하기 어려웠던 일이나 에러)

 


시도 (문제가 생긴 이유와 해결하기 위해 시도해본 것들)

 


해결 (최종적으로 해결이 되었을 때 시도한 것 정리)

 


마무리 (내가 새롭게 알게 된 것이나 짧은 정리)