오늘 배운 것
1. 함수 선언
2. 주석, 들여쓰기
3. 반복문
4. int와 float
x,y = result(5,2)
print(x,y) # 7 3
def result(num1, num2) :
return (num1+num2), (num1-num2)
def say_myself(name, age = 27, man):
pass
parameter를 초기화할 때엔 초기화한 parameter를 제일 마지막으로 빼놔야 한다.
기본값이 있는 파라미터는 함수 호출 시 인자로 값을 전달하지 않아도 기본값이 사용되므로, 해당 파라미터는 선택적인 값을 의미한다.
기본값이 없는 파라미터는 필수적으로 값을 제공해야 하는 인자이므로, 이들보다 뒤에 올 수 없다.
return값 없이 단독으로 쓰이면 함수의 실행을 종료시키는 것이다.
함수의 실행을 중단하고 함수 밖으로 제어를 반환한다.
return 뒤에 아무것도 없다면 None을 반환하게 되어 즉시 실행을 멈추고 호출한 곳으로 돌아가간다.
함수 내에서 더이상 실행할 필요가 없을 때 사용된다.
값을 처음으로 할당 하는것
a = 1 # 초기화 임
a= 2 #-> 두번째 할당은 초기화라 하지 않음
print(eval("2 + 3")) # 출력 : 5
name = input("이름을 입력하세요 : ")
x = 1
print(id(x)) # 출력 : x의 주소
print(type(1)) # 출력 : <class 'int'>
print(type(7.14) # 출력 : <class 'float>
print(type("수아")) # 출력 : <class 'str'>
sum = 0
for i in range (1, 1001) :
sum += i
print(sum) # 출력 : 500500
# 한 줄짜리 주석
``` 여러 줄짜리 주석 ```
gugudan(5) -> 5단이 나오도록
def gugudan(n) :
for i in range(1, 10) :
print(f"{n} * {i} = {n*i}")
gugudan(5)
gugudan()
def gugudan() :
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))
str(i)에서 str이 이미 문자열로 정의되어있어서 내장함수 str()을 덮어쓰고 있기 때문이다.
그래서 str(i)를 함수로 인식하지 못하고 문자열인 str을 호출하려고 하기 때문에 에러가 난다.
str()을 사용하려면 변수이름을 변경해야 한다.
(그래서 저번에 변수명으로 예약어를 사용하지 말라고 했었다.)
부동소수점 숫자가 이진수로 정확하게 표현되지 않기 때문이다.
컴퓨터는 숫자를 이진수로 표현하는데 일부 실수는 이진수로 정확하게 나타낼 수 없어 무한히 반복되는 소수로 변환된다.
rec_area(3,4) # 사각형 넓이 구하는 함수
tri_area(2,5) # 삼각형 넓이 구하는 함수
circle_area(2,5) # 원의 넓이를 구하는 함수
import math
def rec_area(width, height) :
return (width * height)
def tri_area(width, height) :
return (width * height / 2)
def circle_area(rad) :
return (math.pi * rad**2)
print(rec_area(3,4)) # 출력 : 12
print(tri_area(2,5)) # 출력 : 5.0
print(circle_area(2)) # 출력 : 12.566370614359172
print(circle_area(5)) # 출력 : 78.53981633974483
- Parameter
parameter가 있는경우도 있고 없는 경우도 있다.
parameter가 하나인 경우도 있고 여러가지인 경우도 있다.
def 함수명() : # parameter가 없는 경우
code1
def 함수명(x) : # parameter가 하나 있는 경우
code2
def 함수명(x, y, z) : # parameter가 여러 개 있는 경우
code3
Parameter 초기화
: Python에서는 Parameter를 초기화할 수 있는데 초기화할 경우 맨 뒤로 보내야 한다.
초기화하지 않은 parameter의 경우 개수를 맞춰줘야한다.
def say_myself(name, age, man = True) :
print(name + "입니다.")
print("나이 :", age)
print("남자입니까?", man)
say_myself("홍길동", 27)
say_myself("홍길동", 27, True)
say_myself("홍길동", 27, False)
say_myself("홍길동") # 오류
# def say_myself(name, age = 27, man) : # 초기화할 경우엔 맨 뒤로 보내야 하기 때문에
# def say_myself(name, man, age = 27) : # 이렇게 수정해야 한다.
- Return
Python은 return 값도 없을수도 있고 하나 또는 여러 개 있을 수 있다.
def 함수명() : # return값이 없는 경우
code1
def 함수명() : # return값이 하나 있는 경우
code2
return x
def 함수명() : # return값이 여러 개 있는 경우
code3
return [x, y, z]
- 들여쓰기
C언어나 Java에서는 함수를 중괄호{}로 묶는데
python에서는 콜론(:)을 사용하기 때문에 들여쓰기를 잘 해야 한다.
그렇지 않으면 에러가 날 수 있다.
def greet() :
print("반갑습니다")
print("파이썬의 세계로 오신 것을 환영합니다")
greet()
# 이 경우 greet()함수에서 greet()함수가 호출되고 있어 재귀 호출이 무한반복되므로 오류가 난다.
greet() # greet() 함수를 호출하고 싶은 경우엔 이렇게 해야한다.
input() 함수에 대해서도 배웠다.
사용자에게 입력을 받는 함수로 기본적으로 문자열 형태로 입력값을 반환한다.
입력받은 값은 문자열로 처리되기 때문에 숫자나 다른 데이터 형식으로 사용하려면 타입 변환이 필요하다.
str1 = input("How old are you? : ")
print(type(str1)) # 데이터 타입을 확인하는 함수
print(str1)
# 한 줄짜리 주석
# 여러 줄 쓰려면 #을 계속 붙여줘야 한다.
``` 여러 줄짜리 주석 ```
오늘은 반복문 중에서 for을 사용한 반복문을 배웠다.
for 반복문 안에 for 반복문이 있는 이중 반복문을 배웠고 구구단 함수를 만들어 봤다.
반복문에서 범위를 정하는 방법에 대해서도 배웠다.
for i in [a, b, c] : # i에 a, b, c를 넣으면 된다.
for i in range(a, b) : # i에 a부터 (b-1)까지 넣으면 된다.
for i in range(a) : # i에 0부터 (a-1)까지 넣으면 된다.
-> int는 정수만 저장해서 빠르고 정확하게 연산이 가능하고 float는 소수점이 있는 실수를 저장해서 더 넓은 범위의 값을 저장 가능하지만 정확도가 떨어질 수 있다.
num1 = 1.000000000000001
num2 = 1.1
print(num1 + num2) # 출력 : 2.1000000000000014
num1 = 1.000000000000001
num2 = 1.1
result = num1 + num2
print(round(result, 15))
# 소수점 15자리까지 반올림
# 출력 : 2.100000000000001
from decimal import Decimal
# 부동소수점 대신 Decimal을 사용
num1 = Decimal('1.1')
num2 = Decimal('2.2')
result = num1 + num2
print(result) # 3.3
1.1 + 0.1 == 1.2
고생 하셨습니다. ^^;