21.12.28 AIFFEL 2일째 - LMS 6장 파이썬으로 코딩 시작하기 (Part.1)

yakasan·2021년 12월 28일
0

AIFFEL!

목록 보기
2/3
post-thumbnail

일자: 2021.12.28

목차


학습 목표

  • 파이썬을 통해 프로그래밍의 기본 개념들을 이해하고 사용할 수 있다.
  • 오류 메시지를 읽고 이해할 수 있다.
  • 학습한 개념들을 토대로 이해하고 수정할 수 있다.

6. 파이썬 시작하기

6-2 함수 호출하기

함수란 ?

수학 : 입력값에 대해 출력값을 가지는 관계
프로그래밍 : 불려진 시점에 특정한 작업을 수행 / 입/출력값은 있을수도 있고 없을수도 있음.

6-3 인자로 들어갈 수 있는 것과 그 특징

  • 숫자 (int/float)
    • () 안에 숫자나, 소수점 수로 그대로 표기

      print(23) / print(34.5)
  • 문자(str)
    • () 안에 기입 시, 반드시 ''나 ""로 감싸서 표기

      print("hello world") 
      print('Goodbye world')
    • 숫자를 따옴표로 감싸면 그 숫자는 문자로 타입이 바뀐다.

    • 문자열은 더할 순 있지만 뺄 순 없다.

      print('hello' + 'world') => hello
      print('hello' - 'world') => 오류!

  • 변수
    • 변수는 변수명 = 변수값 의 형태로 이루어짐.

    • 변수 이름과 값은 내가 정의 해 줄 수 있다.

    • 변수명을 재사용 하게 되면 제일 마지막 줄의 값을 나타낸다.

name = '아무개'
name = '지우개'
print(name)
      

6-4 새로운 함수 정의하기 - def

  • def(define) : 함수를 정의 할 때 사용하는 예약어.
  • def 다음에 뭔가 입력됬다? == 아 그것은 새로 만들 함수인것이여
def say_hi():
    print('안녕!')
  • 여기서 주의점! 작업 표시는 띄어쓰기 4번 or 탭 1번으로 해 줘야함. 안해주면..!
    • 오류가 짜잔~
    • 파이썬을 사용하는 경우엔 윗줄에서 엔터만 눌러주면 자동으로 줄 바꿈이 되지만, 타 언어를 사용하게 될 경우나, 줄이 틀려서 새로 들여쓰기 해 줄 땐 꼭 탭 1번 해주자. 띄어쓰기 4번보다 깔끔하고, 헷갈릴 일이 없다. (TAB 1번 = 띄어쓰기4번)

6-5 변수의 유효범위 = 변수의 스코프 (scope)

  • 스코프 : 어느 한 곳에서 정의된 변수가 일 할 수 있는..? 유효한 범위.

  • 지역 스코프 (local scope)

def apple():
    phone = '13max'

print(apple)

※ 변수 phone 는 함수 안에서만 허용되는 변수이므로 함수 외 지역에선 불러낼 수 없음.
→ 따라서 변수 phone 은 지역 스코프.

  • 전역 스코프 (global scope)
smart_phone = 'galaxy note 10'

def samsung():
	print(smart_phone)

samsung()
print(smart_phone)

※ 변수 smart_phone 은 함수에서도 쓸 수 있는 변수이며, 함수 밖에서도 사용 가능한 변수.
→ 따라서 변수 smart_phone 은 전역 스코프.

6-6,7 주어진 인자를 받는 변수 = 매개변수(parameter)

  • 함수 정의 시, () 안에 변수 이름을 넣어, 함수 아래 작업에 사용할 수 있게 선언하는 변수.
def want(thing):
	print('나는',thing,'을(를) 가지고 싶어요..!')

want('많은 돈')
want('번듯한 직장')

→ 위 코드에서 thing매개변수가 되고, '많은 돈'인자가 된다.
※ 이렇듯, 함수를 실행할 때 입력값을 전달해 주는 변수를 매개변수라 한다.
매개 변수를 정해주면 함수 실행시 꼭 매개변수를 넣어줘야한다. 안그럼? 오류난다 ㅎ

  • 매개변수를 2개 선언해 줄 수도 있다.
    def want(thing1,thing2):
    	print('나는',thing1,'랑',thing2,'을(를) 가지고 싶어요..!')
    
    want('많은 돈','번듯한 직장')
  • 매개변수를 지정해서 선언해 줘도 된다.
    def want(thing1,thing2):
    	print('나는',thing1,'랑',thing2,'을(를) 가지고 싶어요..!')
    
    want(thing2 = '많은 돈',thing1 ='번듯한 직장')
  • 입력값이 여러개 일 때도 매개변수의 기본값을 지정 해 줄 수 있다.
    def fruit (n1,n2 = 'else'):
    	print(n1+','+ n2 + ' 맛있음..!')
    
    fruit('딸기','사과')
    
    >>딸기,사과 맛있음..!
    위와 같이 해 주기 위해선, 기본값이 있는 인자들이 기본값이 없는 필수 인자 뒤에 와야한다. 이게 무슨말이냐.. 돌려보고 알았다..
    # 기본값이 있는 인자가 없는 인자보다 먼저 왔을 경우
    
    def wrong_fruit (n3 = 'noway', n4):
    	print(n3+' 랑 '+ n4 + ' 상했음..!!')
    wrong_fruit('딸기','사과')
    이 경우, 기본값이 있는 인자가 먼저 왔다고 문법 오류(SyntaxError)가 떠버렸다. 그래서 기본값이 없는 인자를 먼저 선언 해 주었더니.
    # 기본값이 없는 인자가 먼저 왔을 경우
    def wrong_fruit3 (n5, n6 = 'noway'):
    	print(n5+' 랑 '+ n6 + ' 상했음..!!')
    wrong_fruit('딸기','사과')
    
    >>딸기,사과 맛있음..!
    원하는 대로 나왔다..! 즉, 입력값을 여러개 지정해 줄 때, 기본값을 미리 지정 해 주고싶다면
    1. 둘 다 하던가

    2. 지정 하지 않을 값만 앞에, 지정 할 값은 뒤에 적어주자..!

      파이썬이 입력한 인자를 앞에 넣을지 뒤에 넣을지 불분명 해서 생기는 오류라 하니깐..

6-8 함수의 결과로 값을 반환하기 - return

  • return 은? 함수가 실행 된 후, 그 결과를 가지고 활용 하고 싶을 때 출력값으로써 반환 해 주는 기능.
    def num (no1,no2):
    	print(no1 + no2)
    num이란 함수는 no1 과 no2 값을 받으면, no1과 no2를 합쳐서 출력해준다.
    num(12,34)
    >>46 
    값이 46이라 나왔으니, 여기에 숫자를 더해서 출력하면 되겠지! 하고 생각해서
    print(num(12,34) + 10)
    
    >>TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'  
    이라 입력 한 후 출력하면 에러가 뜬다. num(12,34) 는 NoneType 이고 10이 int 인데, 둘은 더할 수 없단 얘기 같다.. 즉 함수의 결과를 명시하지 않아서 뜬 문제라 한다. 🤔 진짜 많이 해봤을법 한 문제라 정리하지않곤 넘어갈 수 없었다.. 그래서 꼭 더해주고 싶다면 함수의 값을 return으로 반환해서 명시해 줘야 한다...!
    def num (no1,no2):
    	print(no1 + no2) #출력도 하고
    	return no1 + no2 #return 도 하고~ 
    
    print(num(12,34) + 10)
    
    >>46
    >>56
    이때, print는 num(12,34) 를 먼저 실행하여 print를 하여 46이 출력되고, return 되어 함수의 값을 명시한 후, + 10과 더해져서 56이 출력된다. 수학식에서 괄호 안의 계산식이 먼저 되듯, 파이썬에서도 괄호안의 함수가 먼저 실행된다 한다. 아는걸 하나씩 대입해서 결과값으로 치환..? 🤔
  • 어려웠던 문제.... 어떤 순서로 표시할 지 예측해 보시오.
def print_two(word1, word2):
    print(word1)
    print(word2)

def print_and_return(word1, word2, word3):
    print_two(word3, word2)
    return word1

print_two('A', print_and_return('B', 'C', 'D'))
  1. 괄호 안의 함수가 먼저 실행되어야 하기 때문에 후열의 함수부터 실행.

  2. print_and_return 내에서 w1 = B , w2 = C , w3 = D

  3. 그 다음줄인 print_two(word3, word2) 가 실행되기 때문에 D,C 순으로 출력

  4. return word1 로 B 값이 print_two('A', 함수자리인 후열에 명시됨. )

  5. 고로, A B 순으로 출력.

  6. 토탈 → D C A B 순으로 출력된다.

아 하나하나 풀어보니 알것같다

6-9 제어문

if : 진실 혹은 거짓

  • if 는 명제가 참일 때만 실행된다.

📗 비교 연산자

연산자설명
a == ba 와 b 는 같다. (값만 평가해서 참인지 거짓인지 판단) / 대입 연산자(=)랑 헷갈리지 말것.
a ! = ba 와 b 는 같지 않다.
a < ba 는 b 보다 작다. (미만)
a > ba 는 b 보다 크다. (초과)
a < = ba 는 b 보다 작거나 같다. (이하)
a > = ba 는 b 보다 크거나 같다. (이상)

📙 논리 연산자

연산자설명
a and ba 그리고 b ( 두 조건이 모두 참)
a or ba 또는 b (두 조건 중 하나라도 참)
not참이면 거짓, 거짓이면 참 (조건 뒤집기)

📘 대입 연산자

연산자사용 예설명
+=a +=3a = a + 3 과 동일
-=a -= 3a = a - 3 과 동일
*=a *= 3a = a * 3 과 동일
/=a /= 3a = a / 3 과 동일 (나누기)
//=a //= 3a = a // 3 과 동일 ( 몫 만)
%=a %= 3a = a % 3 과 동일 (나머지 만)
**=a **= 3a = a ** 3 과 동일 (제곱 )
  • if 친구 else , elif
    • 둘 다 조건문을 추가할 때 쓰는거지만, elif 는 조건문을 더 추가해 줄 수 있고, else는 한번만 이란 차이가 있음.

일단 오늘은 요까이.. 후기?

첫날 페이스 그대로 유지해서 쭉 꾸준하게 열심히 하고싶다..

오늘은 잘 몰라서 보는것 마다 다 정리하려 들었지만,

내가 모르고, 정말 중요한 부분만 체크하면 된다 하셔서.. 내일은 진도가 좀 나가지 않을까..?

되도록 밀리지 말고, 마감에 쫒기며 허덕이는 교육 생활은 되지 않아야한다... 정말루..

그래도 하나하나 따져 보면서 몰랐던 부분을 깨우쳐 나간다는건 너무 재밌고 즐겁다..

노션 , velog 마크다운 기능 찾느라 약 30분 소모해 충격..!

와..... 근데 마크다운 기능 오늘 첨 알았는데 텍스트로 이렇게 표시할 수 있단 점이 너무나도 놀라웠다. 사실 휴대폰의 베어 라는 어플로 종종 생각을 정리하거나, 울분(?)을 풀곤 했었는데, 비슷한 기능 (## 으로 제목 정한다거나, *을 입력하면 리스트가 된다거나 등) 이 있어서 이게 마크다운이구나 싶었다.. 정말 뭐든 내가 해 보고 배워나가는 과정은 정말정말 재밌다..

찾아가면서 배웠던 마크다운 이지만, 익숙해지면 좀 더 능숙하구 블로그 오래 하는 사람 처럼 적을 수 있게 되지 않을까?

profile
시-작!

0개의 댓글