본문 바로가기

대외활동/ABC 지역주도형 청년 취업역량강화 ESG 지원산업

[220822 ABC 5일차] - PYTHON 기초

반응형

[ 0818 복습 ]

- if 조건식 : 

      명령문

no = 12
if no >= 7:
    print("7보다 크네요.")
    
print("끝내기.")

 

- and 연산자를 이용해서 조건식 사용 가능

no = 12
if no >= 7 and no <= 10:
    print("7과 10 사이")
    print("7보다 크네요.")
else : 
    print("범위가 다르네요.")
    
print("끝내기.")

 

- elif 를  통해서 조건을 여러개 생성할 수 있다.

- elif를 이용해서 다중 if문을 사용하였다.

no = 12
if no >= 7 and no <= 10 :
    print("7과 10 사이")
    print("7보다 크네요.")
elif no <= 6 : 
    print("6 이하네요")
else : 
    pass
    
print("끝내기.")
# 예를 들어
# if a = "충청남도" and a="대전광역시" :
#     sum_a = sum_a + 1
# 이러한 계산을 많이 해 두어야할 경우가 많다.
# 조건식에 대해서 많이 알아둘 필요가 있다.

 

- while문 복습

a = 1

while a <= 5: #a가 5보다 작을때까지 반복한다
    print(a)

 : while문은 조건 반복문이다. if문과 동일하게 조건식이 있는데 while은 조건식 + 반복기능까지 갖고 있다. 그런데 조건식이 계속 만족하면 무한 루프문이 되기 떄문에 조건식이 거짓값이 되도록 명령문을 추가해주어야 한다. 위의 코드에서 보면, 조건식인 a<=를 만족하지 않게 만들어 주어야 하기 때문에 a의 값이 5보다 크도록 설정해주어야 한다.

while a<=5:
    print(a)
    a += 1
print()

- 그렇다면 while문을 사용할 떄는 언제일까?

 : 예를 들어, a 놀이 동산은 평일에는 월~목 오전 10시 30분 개장 ~ 오후 7시 폐장 입장객 수, 금요일과 일요일 까지는 10시 30분 개장 ~ 10시 폐장 입장객 수를 판단하고자 한다. 아래의 코드 블럭처럼 프로그래밍을 할 수 있을 것이다.

# if a - 금요일 or a = 토요일 or a = 일요일 :
#   while time_a <= 22시
# else :
#   while time_a <= 19시

- while문도 중첩해서 사용할 수 있다. 아래 코드의 경우 i와 j 모두 조건식을 거짓값이 되도록 해야 한다.

i = 1

while i <= 2:
    j=1
    
    while j <= 3:
        print("i : ", str(i), ", j : ", str(j))
        j += 1
        
    i += 1
    print()

 

[ while 문 메소드(method) ]

- 반복문에는 수행 흐름을 변경할 수 있도록 별도의 메소드를 제공해주고 있다.

- while 문 블럭 내에는 continue 와 break문이 존재한다.

1. continue : 수행문을 무시하고 다음것을 반복한다.

2. break : while문을 강제 종료한다.

a = 0

while a <= 10:
    a = a + 1
    if a == 5:
        continue
    if a == 9:
        break
    print("a의 값 : ", a)
else :
    print("정상 수행 종료")

- 위의 코드에서 알 수 있는 것은? : while문도 else와 같이 사용할 수 있따. while문 안에 continue와 break문을 사용해서 while문을 변경할 수 있다.

 

while True :
    a = int(input("입력할 숫자 : "))
    
    # a = 0이 되면 while문 탈출
    # a가 2와 나누어서 나머지가 0이 되면 짝수입니다 출력
    # a가 2와 나누어서 나머지가 1이 되면 홀수 입니다, 출력
    
    if a == 0 :
        print("탈출합니다.")
        break
    elif a % 2 == 0:
        print("%d 는 짝수입니다." %(a))
    else:
        print("%d 는 홀수입니다." %(a))

- 위의 코드에서 while True : 는 while문의 무한루프 구문을 의미한다 (조건이 항상 참이 된다)

 

예제1)

# while문 안에 첫번째 수와 두번째 수를 입력받고
# 두 수의 합을 출력한다.
# 첫번째 수, 두번째 수 합계를 화면에 모두 출력한다.
# 그런데 첫번째 수 입력시 0값을 입력하면 반복문을 탈출하자
a = 0
b = 0

while True :
    a = float(input("첫번째 숫자 : "))
    
    if a == 0 :
        print("탈출합니다.")
        break
    else :
        b = float(input("두번째 숫자 : "))
        print("첫번째 숫자 : %d, 두번째 숫자 : %d, 두 수의 합 : %d" %(a, b, a+b))

- 초기값을 설정하는 이유는?

: 개발자가 알기 쉽게 하기 위해서 설정한다. (초기값을 안줬을 경우 어디서부터 연산이 진행되고 있는지 판단하는 것이 불가능) 즉, 처음 시작점을 알기 위해서 초기값을 설정해주는 것이다. "명확하게 알기 위해서"

예제2)

# 이번에는 종료에서 y Y를 입력하면 빠져나오는 문장

i = 0

while True :
    print("{}번째 반복문 입니다.".format(i))
    i += 1
    
    input_txt = input("> 종료하시겠습니까? [y,n] : ")
    if input_txt in ["y", "Y"] :
        print("반복 종료")
        break

[ for 문 ] 

- 조건이 참인 동안 반복 가능한 요소 수만큼 반복처리 해준다.

- for문은 반복문으로서 for 변수명 in 반복범위 문법을 갖고 있다.

for num in [0,1,2,3,4,5] :
    print(num)
    
print()

 : 위의 코드 블럭을 살펴보자. num이라는 변수는 for문에서 처음 생성되었고 in 뒤에 반복 횟수의 값을 받아서 처리해주고 있는 것이다. 즉, 최초 0에서 5까지 실행하는 과정에서 첫 반복횟수는 0값으로 num이 0을 받아서 수행하고 있기 때문에 print(num)을 하면 0이 출력되는 것이다. 또한, 5까지 반복하는 데 6번의 반복 과정을 거친 것으로 해석하는 것이 가능하다.

 

for num in range(6) :
    print(num)

print()

for num in range(1,6,2) :
    print(num)

 : 위의 코드 블럭을 살펴보자. range(6)은 0부터 5까지 총 6번을 반복하라는 의미이다.

 

- range(start:end:step) 으로 구성되어 있어 숫자의 범위를 손쉽게 생성할 수 있다.

- for문에서 for 변수명 in 반복범위

- 반복 범위는 문자열, 리스트, 튜플, 세트, 딕셔너리, range()함수 등을 이용할 수 있다.

- 대체적으로 range() 함수 많이 사용한다.

 

a = ['a', 'b', 'c']

for i, d in enumerate(a) :
    print(i, d)

- enumerate(a) 함수는 반복문의 횟수를 확인시켜주는 함수이다. 주소값 0 a, 1 b, 2 c 을 갖는다.

 

for c in ['빨강', '녹색', '파랑', '노랑'] :
    print(c, end = " ")
print()

- 반복 범위를 리스트 객체로 사용한 것

- end = " " : 매개변수 값을 넣어서 출력하면 옆으로 출력된다 (다음줄로 넘어가지 않다.)

 

[ 중간 정리 ]

1. 문법 구조 : 상호간의 약속

2. print() - 괄호를 쓰는 것을 함수라고 표현한다.

3. 괄호 안에 무언가를 넣을 수 있다고 가정한다.

4. print(aa)와 print("aa")는 서로 다르다 => 변수냐 문자 그대로의 문자열이냐의 차이

5. 변수 : 변하는 값을 의미

6. 변수는 왜 변할까?

aaa = 10
aaa = 20

 : 10이라는 숫자를 지우고 20이라는 숫자를 집어넣은 것이다. 그래서 변하는 수를 변수라고 말한다.

7. 왜 프로그래밍이 어렵다고 생각할까?

 : 만드는 사람 나름이기 때문! 결과값이 같기만 한다면 출력문이 어느 행에 들어가든 상관 없다. 그냥 내가 이걸 

출력할거야 라고 코딩해주기만 하면 됨. 컴퓨터가 알아들을 만큼만 문법을 건드려주기만 하면 되는 것. 내 머릿속에 논리적으로 생각해서 쭉쭉 코딩하는 것은 훈련이 되어있냐 안되어있냐의 차이이다.

[ for 문 ]

- for 변수명 in 반복횟수

- 반복 횟수를 지정하는 형태들에 대해서 알아보자

1. 반복 횟수의 범위를 리스트 형태로 지정

for r in ['펭귄', '돌고래', '오로라', '별'] :
    print(r, end = " ")
print()
print()

2. 반복 횟수의 범위를 세트 형태로 지정

for r in {'펭귄', '돌고래', '오로라', '별'} :
    print(r, end = ' ')
print()
print()

3. 반복 횟수의 범위를 딕셔너리 형태로 지정

for r in {'자바':'웹용', '파이썬':'빅데이터', '오라클':'데이터베이스'} :
    print(r, end = " ")
print()
print()

   - 3번의 경우를 더 보자.

soft = {'자바':'웹용', '파이썬':'빅데이터', '오라클':'데이터베이스'}
for i in soft.items():
    print(i[0]+ ', ' + i[1])
    
print()

 : 딕셔너리 자료형의 변수 soft에서 .items()는 한쌍의 key와 value를 반환해준다. [0]과 [1]은 주소값을 의미한다. 즉, 0번 주소에는 key의 값이, 1번 주소에는 value값이 들어있다.

     0번주소 : 1. 자바, 2. 파이썬, 3. 오라클

     1번주소 : 1. 웹용, 2. 빅데이터, 3. 데이터베이스  

   위의 형태로 들어있다는 것을 의미한다. 처음 반복문이 돌때는 1번째 값은 자바, 2번째 값은 웹용이다. 두번째 돌때는 1번째 값이 파이썬, 2번째 값이 빅데이터를 의미하고, 세번째 돌때 1번쨰 값은 오라클, 2번째 값은 데이터베이스를 의미하는 것이다.

 

- 만약 key만 보고싶다면?

for i in soft.keys() :
    print(i, end = ' ')
    # dict.keys() 함수는 키값만 꺼내준다.
print()

- value만 보고싶다면?

for i in soft.values() :
    print(i, end = ' ')
    # dict.values()함수는 value값만 꺼내준다.

4. 반복 횟수의 범위를 문자열의 문자 개수만큼 지정

char = []
se = '파이썬 프로그래밍'

for k in se :
    char.append(k) # append 함수는 값을 하나씩 추가해준다. 여기서는 k의 값에 상응하는 k번째 se값을 char를 넣어준다.
    print("char = ", char)

 : 여기서 왜 k += 1을 넣지 않을까? => se 자체가 문자이기 때문이다. k는 그냥 se의 글자의 카운트를 세주고 있는 형태이기 때문에 이 문장에서 k를 숫자로 받아들이는 것은 적합하지 않다. 즉, k를 증가시켜서 반복문을 돌리는 것은 불가능하다.

예제1)

# 서울, 대전, 대구, 부산, 광주, 울산, 제주, 강원, 경기
# 이중에 대전은 출력하지 않고, 강원은 for문을 멈추어라

datas = ['서울', '대전', '대구', '부산', '광주', '울산', '제주', '강원', '경기']

for k in datas :
    if k == "대전" :
        pass
    elif k == "강원" :
        break
    else :
        print(k)

예제2)

# 92 75 80 75 88 100 45 67 라는 성적데이터가 있다고 생각해보자
# 이 중, 80 이하는 점수를 출력하지 않는다.

score = [92, 75, 80, 75, 88, 100, 45, 67]

for i in score :
    if i < 80 : continue
    print(i)

 

[ 중첩 for 문 ]

- for 문 안에 for 문을 추가할 수 있다.

- 즉, 반복문 안에 반복문을 추가할 수 있다.

- 행렬처럼 행과 열이 모두 돌아야 할 경우 중첩 for문을 사용한다.

for n in range(2, 10, 1) :
    print('---{}단---'.format(n))
    
    for j in [1,2,3,4,5,6,7,8,9] :
        print('{}*{}={}'.format(n,j,n*j))

예제1)

# *을 한번 찍어보자
# *
# **
# ***
# ****
# *****
# ******

out = ""

for i in range(1,10):
    for j in range(0,i) :
        out = out + "*"
    out = out + "\n" # 이거 없으면 그냥 옆에 붙어서 출력된다. 그냥 그거 되기 전에 한줄씩 내려오라는 이스케이프 문자 넣어주기.
print(out)

예제2)

# 응용편
# * 을 피라미드 모양으로 그려보자
out = ""

for i in range(1, 15) :
    for j in range(14, i, -1) :
        out = out + " " # 앞쪽 공백을 만들어주는 것.
    for k in range(0,2*i-1) :
        out = out + "*" # 별 찍어주는 것
    out = out + "\n"
    
print(out)

 

[ range() 함수 ] 

- 주어진 숫자 범위 안에서 순차적인 숫자 그룹을 만든다.

- 숫자 그룹을 만들어 주는 객체를 컴퓨터로 전달하기(반환하기) 때문에 묶음 자료형 변수처럼 처리하여 사용할 수 있다.

list(range(10))
# 출력 결과 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 : 0 부터 9 까지 10개의 값을 저장한다.

list(range(1,10))
# 출력 결과 : [1, 2, 3, 4, 5, 6, 7, 8, 9]

 : 마지막 값을 제외한 1부터 9까지를 저장한다.

list(range(1,10,2))
# 출력 결과 : [1, 3, 5, 7, 9]

 : 1에서 9까지를 2씩 증가하면서 출력해준다.

 

※  _(언더바) 는 변수명을 무시하고 반복문을 돌리고 싶은 경우에 사용한다. ※

for _ in range(1,5) :
    print("python")

 

- 다음은 2행 3열로 구성된 데이터이다 *행이 가로줄, 열이 세로줄*

- 다차원 배열이라고 생각하면 편할 것

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

for i in range(2) : # 행을 돌린다.
    for k in range(3) : # 열을 돌린다.
        print(mat[i][k], end = ' ')
    print()

[ for문 삼항연산자 ]

- 명령문 for 변수명 in 반복범위

[a + 10 for a in [1,2,3]]

for a in [1,2,3] :
    a = a+10

- 명령문을 두개 이상 적어줄 경우에는 명령문을 []로 묶어줘야 SyntexError가 발생하지 않는다.

[[a+10, a*100] for a in [1,2,3]]

for a in [1,2,3] :
    a = a+10
    a = a*100

- 반복문 내에서 수행할 명령문 for 변수명 in 반복횟수

 

-중첩 for문을 사용하는 방법

a = [2,3]
b = [4,5]

[i*k for i in a for k in b]

반복문 내에서 수행할 명령문 for 변수명1 in 반복횟수1 for 변수명2 in 반복횟수2

 

[ 딕셔너리 자료형 for ] 

- 해당 위치의 값을 가져와서 키 값이 맞는 것끼리 매칭해줌

price = {'김치볶음밥':5000, '새우볶음밥':5500, '카레덮밥':4500, '우동':2500}

my = {"김치볶음밥":3, '카레덮밥':5}

imsi = (k for k in my)

for i in imsi :
    print('key : ', i)
    print('value : price = {}, my={}'.format(price[i], my[i]))

bill = sum(price[t]*my[t] for t in my)
print('총 식사 비용은 {0:,}원'.format(bill))  # {0:,}원 은 숫자 세자리수에서 콤마 찍어주려고 한 것

 

[ 사용자 정의 함수 ]

- 함수를 사용하면 반복 잡업이 줄어들고, 코드의 수정 및 유지 보수가 간편해진다.

- 함수의 사용은 다양한 상황에서 표출할 수 있고, 스스로 만든 코드의 일부분을 수정하는 것도 쉽다.

- 기존의 함수를 만들어 놓으면 여러차례 반복해서 실행할 수 있어 재사용률이 높아진다.

1. 사용자 정의 함수를 만든 첫번째 내용

- 문법 : def 변수명 (인자값) => 이때 인자값은 여러개를 사용하는 것이 가능하다

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

print(add(5,6))

 : 위의 코드 블럭을 살펴보자. 5가 a로 받고 6이 b로 받는다. 그래서 a+b=5+6이라고 사용되는 것. 이 함수를 만들어 놓으면 다른 파일에다가 연동해서 사용하는 것도 가능하다. 내가 만든 함수니까 변경하는 것도 가능하다. 일단 만들어 놓으면 언제든지 꺼내서 사용하는 것이 가능하다.

def fun1(val1) :
    if val1 % 2 == 0 :
        print("홀수가 아닙니다.")
        return
    else :
        print(val1) 
        return 
    
fun1(21)

예제1)

# 내가 인자값으로 글자와 숫자를 입력하면
# 입력된 수 만큼 글자를 출력하는 반복문을 함수로 만들자
# 함수 이름은 value_print라고 설정
# '파이썬', 6 이라고 입력하면 파이썬이 6번 출력되어야 한다.
# range함수 사용해서 작성
# 사용자 정의 함수의 기본값을 지정할 수 있다.

def value_print(val1, val2) :
    for i in range(val2) :
        print(val1)

value_print('파이썬', 6)

예제2)

# input함수 사용해서 사용자에게 값을 입력받을 때 가정해서 작성

def value_print(val1, val2) :
    for i in range(0,val2) :
        print(val1)

a = input("문자를 입력하세요 : ")
b = int(input("숫자를 입력하세요 : "))

value_print(a,b)

 

- 사용자 정의 함수에 기본값을 지정할 수 있다.

- 매개변수에 *을 붙이면 가변 매개변수로 변한다

- *는 tuple 자료형으로 처리한다.

def val_prt(n, *val) :
    for i in range(n) : 
        for k in val : # val의 요소의 개수가 3개니까 for문이 3번 돌아간다. 
            print(k)
        print()
    
val_prt(4, "대전", "고려대", "빅데이터", "이글스")

- 가변 매개변수는 그 요소의 수가 늘어났다 줄어들었다 하는 것이 가능하다.

- 가변 매개변수 뒤에는 일반 매개변수는 올 수 없다.=> TypeError가 발생한다. 아래 코드블럭 에러 발생

def val_prt(*val, n) :
    for i in range(n) : 
        for k in val : # val의 요소의 개수가 3개니까 for문이 3번 돌아간다. 
            print(k)
        print()
    
val_prt(4, "대전", "고려대", "빅데이터", "이글스")

- 기본값을 지정한 경우

- 4, 대전, 고려대, 빅데이터, 이글스 모두 가변변수의 데이터로 인식한다.

def val_prt(*val, n=3) :
    for i in range(n) : 
        for k in val : # val의 요소의 개수가 3개니까 for문이 3번 돌아간다. 
            print(k)
        print()
    
val_prt(4, "대전", "고려대", "빅데이터", "이글스")

- 가변 매개변수의 두번째로 딕셔너리 자료형이 있다.

- 딕셔너리 자료형은 ** 로 표기하여 사용한다

def func1(w, h, **xyz) :
    print("몸무게 : {}, 키 : {}".format(w,h))
    print(xyz)
    
func1(w=54, h=179, 성명='홍길동') 
# 여기서 성명은 key값이기 때문에 따옴표 굳이 필요 없음 만약에 따옴표를 붙이면 따옴표까지 key로 인식

 : 이 경우, 성명 = '홍길동'은 딕셔너리의 형태로 표현하는 것이 가능하다. 성명이 key, 홍길동이 value이다

 

- 인자값의 순서가 달라도 매칭만 잘 시켜주면 문제가 없다.

def test(a, b=10, c=100):
    print(a+b-c)
    
test(a=50, b=20, c=10)
test(c=50, b=20, a=10)
test(150, b=20)
# 이 경우는 c가 기본값으로 100이 들어있기 때문에 150+20-100이 계산되어 반환되는 것이다.
test(120,c=50)

 : 여기서 POINT? => 인자값을 넣을 때 유의해서 넣어야 한다. 이해할 수 있게 넣어주어야 나중에 헷갈리지 않음!

 

[ 지역변수와 전역변수 ]

- 지역변수란? : 그 코드 블럭 안에서만 실행되도록 선언된 변수

- 전역변수란? : 어디서나 실행되는 전역 변수

def func1() :
    a = 10 # 지역변수
    print("func1의 a값 %d" %a)
    
def func2() : 
    print("func2의 a값 %d" %a)
    
a = 20 # 전역변수

func1() 
# a=20을 읽었어도 func1 함수 내의 a=10인 지역변수를 받는다.
func2() 
# func2 함수 내에 a라는 변수가 없어도 밖에 선언된 a = 20이라는 전역변수를 통해 a의 값을 받는다.

 : 위의 코드에서 지역변수 a = 10의 생존범위는 func1 함수 내에만 국한된다. 반면, 전역변수 a = 20의 생존범위는 모든 코드에 걸쳐서 (func1과 func2 모두에도) 생존이 가능하다. 이건 이름 관리에 대한 편의성메모리 관리에 대한 효율성을 위해 만들어 놓은 문법이라고 이해하면 된다. 쓸때는 쓰고 지울때는 지우는 것이 메모리 관리에 효율적이기 때문에 지역변수와 전역변수의 개념이 구분되어 있다.

player = '국가대표'  # 전역변수

def fun_soccer():
    name = '홍길동'  # 지역변수
    player = '팀대표'  # 지역변수
    print(name, player)
    
fun_soccer()

 : 위의 코드 블럭을 살펴보자. 바깥에 전역변수로 player의 변수를 선언했찌만, 함수 내부에 들어갔더니 player의 변수를 지역변수로 사용하고 있다. 함수 내부에 들어와서 변수가 변경되었기 떄문에 팀대표가 출력된다.

 

- global 변수 : 함수 안에서 지역변수가 아닌 전역변수로 사용하고자 한다면 global 예약어를 명시해주면 된다.

- 즉, 함수 안에서 사용하는 변수를 지역변수 대신 전역변수로 사용하고 싶을 때 사용한다.

def fun_xyz():
    global val
    val = 10
    print("fun_xyz()에서 val 값 : %d"  %val)
    
def fun_tin():
    val = 210
    print("fun_tin()에서 val 값 : %d"  %val)
    
def fun_abc():
    print("fun_abc()에서 val 값 : %d"  %val)
    
val = 305

fun_xyz()
fun_tin()
fun_abc()

 : 위의 코드는 순차적으로 읽는게 아니라 함수를 다 건너뛰고 val = 305행부터 읽는다. 함수는 호출되면 읽는 것이다.

 

a = 10
b = 20
c = 30

print('최초값 : a = {}, b = {}, c = {}'.format(a,b,c))
print()

def fun_abc() :
    a = 40
    b = 50
    
    def fun_xyz() :
        nonlocal b # 최대한 근처에 있는 변수의 값을 가져와라는 의미
        global c
        
        print('fun_xyz()에서 1 a = {}, b = {}, c = {}'.format(a,b,c))
        
        b = 80
        print('fun_xyz()에서 2 a = {}, b = {}, c = {}'.format(a,b,c))
        
        c = 90
        print('fun_xyz()에서 3 a = {}, b = {}, c = {}'.format(a,b,c))
        
    fun_xyz()
    print('fun_abc()에서의 a = {}, b = {}, c = {}'.format(a,b,c))
    
fun_abc()
print()
print('최종값 : a = {}, b = {}, c = {}'.format(a,b,c))

<출력결과>

최초값 : a = 10, b = 20, c = 30

 

fun_xyz()에서 1 a = 40, b = 50, c = 30

fun_xyz()에서 2 a = 40, b = 80, c = 30

fun_xyz()에서 3 a = 40, b = 80, c = 90

fun_abc()에서의 a = 40, b = 80, c = 90

 

최종값 : a = 10, b = 20, c = 90

: 위의 코드를 보자. 최종값에서 a와 b는 함수 내에서 선언된 지역변수 밖에 없기 때문에 처음 전역변수로 선언해준 10, 20이 그대로 나온다. 하지만, c는 global 변수로 선언했기 때문에 c = 90 이후의 값이 계속 바뀐 90으로 설정된다.

 

[ import ]

- import는 무기를 가져오는 거라고 생각 (예를들어 배틀그라운드에서 파밍하는거랑 같은 개념이라고 생각하면 편함)

- Terminal이나 Jupyter에서 pandas 라이브러리를 설치해보자

# Terminal
pip install pandas

# Jupyter
! pip install pandas

- pandas 라이브러리를 설치했으면 다음과 같이 import해서 사용하면 된다.

import pandas

- 기본적으로 설치되어있는 라이브러리도 있다. 그럴때는 그냥 import만 해오면 됨

import random

random.randint(1,30)

※ 파이썬은 객체 지향 언어이다. ※

- 객체지향언어

- 사람의 동작을 프로그래밍할 때 객체지향이 아니면 어떠한 동작을 전부 처음부터 끝까지 코딩해주어야 한다.

- 객체지향이라고 한다면 부분을 나눌 수 있어 만약 코딩에서 실수가 있더라도 처음부터 끝까지 다 살펴보면서 에러가 어디 있는지 확인할 필요가 없다

- 예를들어 유재석의 몸을 코딩한다고 생각해보자.

    유재석.눈()

    유재석.팔.오른쪽.검지손가락()

    유재석.다리()

=> 이처럼 세분화해서 프로그래밍 할 수 있는 것이 객체지향이다.

 

- 라이브러리를 import해오는데 나만의 별칭을 만들어서 편하게 사용하고 싶다? 

- import 라이브러리 as 별칭

import random as rd

- import 예시를 한번 보자.

import random as rd
# random 라이브러리를 import해오는데, rd라는 별칭을 만들어준다

a = rd.randint(1,30)
b = rd.randint(1,30)
# randint()라는 함수를 호출한다
# 1부터 30까지 아무 숫자나 뽑아라

print(a, '+', b, '=')

x = input("입력값>>>>>>>>>")
c = int(x)
# 만약 input창에 문자를 쓰면 ValueError가 발생한다
# x변수에 숫자값이 아닌 문자, 글자를 입력하면
# int(x)는 x변수 자체가 글자이므로 정수형으로 변경 불가능
# 때문에 에러가 발생한다.

print("a+b =", a+b)

if a+b==c :  
    print("천재")
else : 
    print("바보")

 

[ 0822 총정리 ]

1. if문을 복습

2. while 문을 복습

3. 이때 중요한 것은 자료형... 리스트, 튜플, 세트, 딕셔너리

4. 이걸 사용하는 이유는 1차원 배열, 2차원 배열을 저장하는 스타일 때문에 알 필요성이 있다.

5. for 문 학습

6. 지정한 횟수만큼 반복해주는 것이 for문

7. for i in range() => 범위를 지정해주는 것도 가능

8. i의 초깃값을 지정할 경우 초깃값이 for문의 i에 영향을 미칠 수 있다.

9. for i in ['대전', '서울', '부산'] => 글자의 갯수로 불러와서 for문을 사용하는 것도 가능

10. for _ in range() => 별도의 변수를 사용하고 싶지 않으면 _(언더바)를 사용한다

11. 사용자 정의 함수

12. def 함수명(인자) :

13. def a(5) => 소셜 네트워크 분석

14. def b(5) => 지도 분석

15. def c(5) => 네이버 뉴스 크롤링 분석

16. 저장한 스타일이 사람마다 다를 수 있다. 사용자가 저장하는 스타일이 다 다르니까 개인마다 다르게 사용할 수 있도록 정의해주는 것이 사용자 정의 함수

def a_save():
    a = "관계법령"
    b = "병원유형"
    c = "주소"
    d = "설립연월일"
    to_csv(a,b,c,d)
    to_csv(b,c,d,a)
    # 6행과 7행은 저장하는 스타일이 다르다

17. 삼항연산자 : 한줄로 깔끔하게 for문을 구현할 수 있다.

18. 그런데 프로그래밍 지식이 초보이면 해석이 어려울 수 있으니 삼항연산자를 처음부터 사용하는 것보다 내가 이해갈 될 수준이 되었을 때 삼항연산자를 사용하는 것이 굉장히 편할것이다.

[a+10 for a in [1,2,3]]

19. 사용자 정의 함수에서

20. 지역변수와 전역변수가 존재

21. global 변수와 nonlocal 변수

22. 객체지향언어? : 각각의 객체를 따로 프로그래밍할 수 있다. (부분동작이 가능하다) 오류가 나면 그 잘못된 동작만 수정하면 된다.

23. 절차지향언어 라는 것도 있는데 이는 순서에 맞게 프로그래밍하는 것을 말한다. 순서가 틀리거나 하나라도 틀리면 처음부터 다 다시해야한다.

반응형