변수 값 바꾸기 문제 해답👌
저번시간 복습
유명한 스왑 코드 중 하나
a = 10, b = 20 일 때, 'temp' 변수를 사용해서 a와 b의 값을 바꾸시오
a, b = b, a
temp = a
a = b
b = temp 를 입력하세요
a = 10, b = 20 일 때, 'temp' 변수를 사용해서 a와 b의 값을 바꾸시오
a, b = b, a
temp = a #temp를 임시값으로 사용
a = b
b = temp
1. 메모리에서 a의 주소에는 값 10이 저장되고, b의 주소에는 값 20이 저장됩니다.
temp = a 실행:
2. temp에 a의 값(10)이 저장됩니다. 이제 temp의 주소에는 값 10이 있습니다.
a = b 실행:
3. a는 이제 b의 값(20)을 저장합니다. 따라서 a의 주소에는 값 20이 저장됩니다.
b = temp 실행:
4. b는 이제 temp의 값(10)을 저장합니다. 따라서 b의 주소에는 값 10이 저장됩니다.
def 함수명: [함수 내용]
...
긴 코드를 한 단어로 축약할 때 그냥 def 쓰고 작명하고 (): 붙이고, indent 넣으면 함수 하나 뚝딱
ㆍ 함수에서 return은
1. 값을 반환할 때
2. 특정 조건을 빠져나갈 때 (함수를 종료시킬 때)
def 함수2() :
return 10
함수2() #출력 안됨
def 함수2() :
return 10
print(함수2()) #이렇게 해야 출력됨
2-1 함수 만들 때 주의할 점
2-1-1. 들여쓰기를 해야 한다. (설정이나 도구에 따라 다를 수 있다)
- vscode는 기본적으로 PEP 8 스타일 가이드라인을 따르도록 되어 있어 4개의 들여쓰기를 사용
- 그러나 colab는 웹 기반 환경으로, 들여쓰기에 조금 더 유연하게 대응할 수 있다. 따라서 1개의 공백 으로
들여쓰기를 할 수 있으며, 이는 코드 실행에 문제 x
다만, 가독성과 코드의 일관성을 위해서 대부분의 경우 4개의 공백을 사용하는 것을 권장한다. 특히 여러 명이 협업하는 프로젝트에서는 이러한 일관성을 유지하는 것이 중요함.
2-1-2. 함수를 만든 후, 한 행 띄워주기 (가독성을 위해)
ex)
def great():
print('Hello World")
great() << x
great() << 0
ㆍ def add (a, b): # (a, b) 함수의 인자 혹은 파라미터
sum = a + b
return sum
add(3, 5) # 함수 호출(call, revoke라고 부르기도 함)
- def add(a, b):
return int(sum(a, b))
add(1, 3)
OR
def add(a, b):
sum = a + b
return sum
print(add(1, 3))
OR
def add(a, b):
return a + b
print(add(1, 3))
2-1-3. 함수를 호출 할 때, 초기화된 변수를 제외한 나머지 인수에 맞게 값을 전달해야 한다.
ex)
def add(x, y, z = 3):
sum = x + y
sum += z
return sum
print(1) # Type Error
2-1-4. 함수 인자에서 변수를 초기화 할 때, 항상 마지막 자리에 배치해야 한다. (인수의 모호성을 피하기 위함)
ex)
def add (x, y = 2, z): < x
def add (x, y, z = 2): < o
2-1-5. 함수(변수) 이름 작명
5-1 스네이크 표기법
- 식별자를 뱀의 모양처럼 만든다 해서 붙여진 표기법
- 단어 사이의 underscore(_)를 활용하는 표기법, 주로 Python에서 사용함
ex} user_name, retention_score
5-2 낙타(camel) 표기법
- 대문자와 소문자의 조합이 낙타의 혹처럼 솟았다가 내려갔다가 하는 모양 같다해서 붙여진 표기법
- 첫 번째 단어는 소문자로, 이어지는 단어들의 시작은 대문자로 작성
- 주로 Java 언어 에서 사용함
ex) getUserName, findByUserName
파이썬 에서만 제공되는 함수 기능
3-1. 함수 파라미터에서 변수를 초기화 할 수 있다.
ex)
def say_myself(name, age, man=True):
print(name, '입니다')
print('나이:', age)
print('남자입니까', man)
say_myself('홍길동', 27)
# 홍길동 입니다.
# 나이: 27
# 남자입니까 True
3-2. 리턴값이 두 개 이상 일 수 있다.
ex)
def example():
return 1, 2, 3
a, b, c = example()
print(a, b, c) # 1, 2, 3
3-3. 왜 함수를 사용해야 할까?
코드의 재사용성을 높이기 위해
가독성 향상
유지보수가 용이함
5-2 문자열 덧샘
num = '31' + '32'
print(num) # 3132
'31'과 '32' 각각 고유한 메모리 주소가 할당된다.
'+' 연산자는 문자열을 연결하는 역할을 한다. 그래서 '31'과 '32'는 '+' 연산자를 통해 새로운
문자열 '3132'가 만들어지고, '3132'도 메모리에 할당되며 고유한 메모리 주소를 갖는다.
변수 num이 생성되고 문자열 '3132'의 메모리 주소를 참조한다. 즉, num 변수는 문자열 '3132'
를 가리키는 포인터 역할을 한다.
print(num) 함수가 호출되면, num 변수가 가리키는 문자열 '3132' 의 값을 출력한다.
5-3 for문
ㆍ for i in [0, 1, 2]:
print(i)
0
1
2
리스트 안에 있는 값들을 순서대로 i에게 넘긴다.
print는 i 값을 받고, 콘솔에 출력한다
ㆍ sum = 0
for i in range(1, 11):
sum += i
print(i)
55
def say_myself(name, age = 27, man):
pass
pass는 나중에 작업하려고 그냥 생략해두는것
man 파라미터에 초기값을 부여하거나 ex) def say_myself(name, age = 27, man=true ):
or age랑 순서를 바꿔준다. def say_myself(name, man, age = 27)
x,y = result(5,2)
print(x,y) # 7 3
def result(num1, num2):
add = num1 + num2
sub = num1 - num2
return add, sub
x, y = result(5,2)
print(x,y) # 7 3
함수 종결을 의미
값을 처음으로 할당하는것
a = 1 # 초기화임
a = 2 #-> 두번재 할당은 초기화라 하지 않음
sum = 0 #변수 지정
for i in range(1,1001): #범위 지정
sum = sum + i #함수식 적용
print(sum) #출력
주석 종류
ㆍ #, ### : 한 줄 작성할 때 쓰는 주석
ㆍ ''' ''' OR """ """ : 여러 줄을 작성할 떄 쓰는 주석, 보통 클래스 안에서 설명할 때 쓰임
ㆍJava 에서는 // 와 / / 로 씀
gugudan=5 # 내가 짠거 이렇게 하면 구구단을 매번 변경해야함
for i in range(10):
print("5 *",i,"=", gugudan*i)
def gugudan(dan): #이렇게 만들면 변경이 쉬움
for i in range(1,10):
print(dan, "*", i, "=", dan*i)
gugudan(5)
print()
gugudan(6)
for i in range(1,10):
for j in range(1,10):
print(i, "*", j , "=", i*j)
print("-----")
str = input("1234");
for i in range(10) :
print("Hello world" + str(i))
문제점
1.str = input("1234"); <- 이부분의 마지막에 ';' 이 있음
2.예약어(str)가 변수명으로 저장이 되어있음. 변수명으로 예약어 설정 X
ㆍ num1 = 1.000000000000001
num2 = 1.1
print(num1 + num2)
2.1000000000000014
#rec_area(3,4) 사각형 넓이 구하는 함수
def rec_area(x,y):
area = x * y
print(area)
rec_area(3,4)
tri_area(2,5) # 삼각형 넓이 구하는 함수
def tri_area(2,5):
area = (x * y)/2
print(area)
tri_area(2,5)
circle_area(2,5) # 원의 넓이를 구하는 함수
def circle_area(x):
area = x*x*3.14
print(area)
circle_area(2)