21.12.28 AIFFEL 2일째 - LMS 6장 파이썬으로 코딩 시작하기 (Part.1)
일자: 2021.12.28
목차
학습 목표
- 파이썬을 통해 프로그래밍의 기본 개념들을 이해하고 사용할 수 있다.
- 오류 메시지를 읽고 이해할 수 있다.
- 학습한 개념들을 토대로 이해하고 수정할 수 있다.
6. 파이썬 시작하기
6-2 함수 호출하기
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('딸기','사과') >>딸기,사과 맛있음..!
-
둘 다 하던가
-
지정 하지 않을 값만 앞에, 지정 할 값은 뒤에 적어주자..!
파이썬이 입력한 인자를 앞에 넣을지 뒤에 넣을지 불분명 해서 생기는 오류라 하니깐..
-
6-8 함수의 결과로 값을 반환하기 - return
- return 은? 함수가 실행 된 후, 그 결과를 가지고 활용 하고 싶을 때 출력값으로써 반환 해 주는 기능.
num이란 함수는 no1 과 no2 값을 받으면, no1과 no2를 합쳐서 출력해준다.def num (no1,no2): print(no1 + no2)
값이 46이라 나왔으니, 여기에 숫자를 더해서 출력하면 되겠지! 하고 생각해서num(12,34) >>46
이라 입력 한 후 출력하면 에러가 뜬다. num(12,34) 는 NoneType 이고 10이 int 인데, 둘은 더할 수 없단 얘기 같다.. 즉 함수의 결과를 명시하지 않아서 뜬 문제라 한다. 🤔 진짜 많이 해봤을법 한 문제라 정리하지않곤 넘어갈 수 없었다.. 그래서 꼭 더해주고 싶다면 함수의 값을 return으로 반환해서 명시해 줘야 한다...!print(num(12,34) + 10) >>TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
이때, print는 num(12,34) 를 먼저 실행하여 print를 하여 46이 출력되고, return 되어 함수의 값을 명시한 후, + 10과 더해져서 56이 출력된다. 수학식에서 괄호 안의 계산식이 먼저 되듯, 파이썬에서도 괄호안의 함수가 먼저 실행된다 한다. 아는걸 하나씩 대입해서 결과값으로 치환..? 🤔def num (no1,no2): print(no1 + no2) #출력도 하고 return no1 + no2 #return 도 하고~ print(num(12,34) + 10) >>46 >>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'))
-
괄호 안의 함수가 먼저 실행되어야 하기 때문에 후열의 함수부터 실행.
-
print_and_return 내에서 w1 = B , w2 = C , w3 = D
-
그 다음줄인 print_two(word3, word2) 가 실행되기 때문에 D,C 순으로 출력
-
return word1 로 B 값이 print_two('A', 함수자리인 후열에 명시됨. )
-
고로, A B 순으로 출력.
-
토탈 → D C A B 순으로 출력된다.
아 하나하나 풀어보니 알것같다
6-9 제어문
if : 진실 혹은 거짓
- if 는 명제가 참일 때만 실행된다.
📗 비교 연산자
연산자 | 설명 |
---|---|
a == b | a 와 b 는 같다. (값만 평가해서 참인지 거짓인지 판단) / 대입 연산자(=)랑 헷갈리지 말것. |
a ! = b | a 와 b 는 같지 않다. |
a < b | a 는 b 보다 작다. (미만) |
a > b | a 는 b 보다 크다. (초과) |
a < = b | a 는 b 보다 작거나 같다. (이하) |
a > = b | a 는 b 보다 크거나 같다. (이상) |
📙 논리 연산자
연산자 | 설명 |
---|---|
a and b | a 그리고 b ( 두 조건이 모두 참) |
a or b | a 또는 b (두 조건 중 하나라도 참) |
not | 참이면 거짓, 거짓이면 참 (조건 뒤집기) |
📘 대입 연산자
연산자 | 사용 예 | 설명 |
---|---|---|
+= | a +=3 | a = a + 3 과 동일 |
-= | a -= 3 | a = a - 3 과 동일 |
*= | a *= 3 | a = a * 3 과 동일 |
/= | a /= 3 | a = a / 3 과 동일 (나누기) |
//= | a //= 3 | a = a // 3 과 동일 ( 몫 만) |
%= | a %= 3 | a = a % 3 과 동일 (나머지 만) |
**= | a **= 3 | a = a ** 3 과 동일 (제곱 ) |
- if 친구 else , elif
- 둘 다 조건문을 추가할 때 쓰는거지만, elif 는 조건문을 더 추가해 줄 수 있고, else는 한번만 이란 차이가 있음.
일단 오늘은 요까이.. 후기?
첫날 페이스 그대로 유지해서 쭉 꾸준하게 열심히 하고싶다..
오늘은 잘 몰라서 보는것 마다 다 정리하려 들었지만,
내가 모르고, 정말 중요한 부분만 체크하면 된다 하셔서.. 내일은 진도가 좀 나가지 않을까..?
되도록 밀리지 말고, 마감에 쫒기며 허덕이는 교육 생활은 되지 않아야한다... 정말루..
그래도 하나하나 따져 보면서 몰랐던 부분을 깨우쳐 나간다는건 너무 재밌고 즐겁다..
노션 , velog 마크다운 기능 찾느라 약 30분 소모해 충격..!
와..... 근데 마크다운 기능 오늘 첨 알았는데 텍스트로 이렇게 표시할 수 있단 점이 너무나도 놀라웠다. 사실 휴대폰의 베어 라는 어플로 종종 생각을 정리하거나, 울분(?)을 풀곤 했었는데, 비슷한 기능 (## 으로 제목 정한다거나, *을 입력하면 리스트가 된다거나 등) 이 있어서 이게 마크다운이구나 싶었다.. 정말 뭐든 내가 해 보고 배워나가는 과정은 정말정말 재밌다..
찾아가면서 배웠던 마크다운 이지만, 익숙해지면 좀 더 능숙하구 블로그 오래 하는 사람 처럼 적을 수 있게 되지 않을까?
Author And Source
이 문제에 관하여(21.12.28 AIFFEL 2일째 - LMS 6장 파이썬으로 코딩 시작하기 (Part.1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ratana3455/21.12.28-AIFFEL-2일째-LMS-6장-파이썬으로-코딩-시작하기-Part.1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)