학습 정리 - 함수와 반복문 (2025.01.02)

수아·2025년 1월 2일
0

학습 정리

목록 보기
3/51
post-thumbnail

오늘 배운 것

1. 함수 선언

2. 주석, 들여쓰기

3. 반복문

4. int와 float

회고리스트

1. 아래의 함수를 완성하시오.

x,y = result(5,2)
print(x,y) # 7 3

def result(num1, num2) :
	return (num1+num2), (num1-num2)

2.아래의 함수에서 에러가 나는 이유는?

def say_myself(name, age = 27, man):
	pass

parameter를 초기화할 때엔 초기화한 parameter를 제일 마지막으로 빼놔야 한다.
기본값이 있는 파라미터는 함수 호출 시 인자로 값을 전달하지 않아도 기본값이 사용되므로, 해당 파라미터는 선택적인 값을 의미한다.
기본값이 없는 파라미터는 필수적으로 값을 제공해야 하는 인자이므로, 이들보다 뒤에 올 수 없다.

3. return 이 결과값 없이 단독으로 쓸때의 의미는?

return값 없이 단독으로 쓰이면 함수의 실행을 종료시키는 것이다.
함수의 실행을 중단하고 함수 밖으로 제어를 반환한다.
return 뒤에 아무것도 없다면 None을 반환하게 되어 즉시 실행을 멈추고 호출한 곳으로 돌아가간다.
함수 내에서 더이상 실행할 필요가 없을 때 사용된다.

4. 초기화란?

값을 처음으로 할당 하는것

a = 1	# 초기화 임
a=  2	#-> 두번째 할당은 초기화라 하지 않음  

5. 다음 함수에 대하여 설명하시오.

  • eval
    : 문자열로 된 표현식을 실행하여 결과값을 반환한다.
    하지만 강사님께서 가급적 사용하지 않는 것을 추천하셨다.
print(eval("2 + 3"))	# 출력 : 5
  • input
    : 사용자로부터 입력을 받는 함수로 문자열 형태로 반환된다.
name = input("이름을 입력하세요 : ")
  • id
    : 메모리 주소를 출력하는 함수이다.
x = 1
print(id(x))	# 출력 : x의 주소
  • type
    : 데이터 타입을 반환한다.
print(type(1))	# 출력 : <class 'int'>
print(type(7.14)	# 출력 : <class 'float>
print(type("수아"))	# 출력 : <class 'str'>
  • range
    : 범위 안에서 연속된 숫자들을 만들어주는 함수이다.
    range(start, stop, step)
    주로 for문이랑 같이 사용되고 start부터 (stop-1)까지 step은 숫자가 증가하는 간격을 뜻한다.
    숫자가 하나일 경우 0~(n-1)까지 모든 정수
    숫자가 두 개일 경우 n~(m-1)까지 모든 정수
  • int
    : 값을 정수형으로 변환한다.
  • float
    : 값을 실수형으로 변환한다.

6. 1부터 1000까지의 합을 구하시오.

sum = 0

for i in range (1, 1001) :
	sum += i

print(sum)	# 출력 : 500500

7. 파이썬에서의 주석의 종류는?

# 한 줄짜리 주석
``` 여러 줄짜리 주석 ```

8. 아래 구구단을 짜시오.

gugudan(5) -> 5단이 나오도록

def gugudan(n) :
  for i in range(1, 10) :
    print(f"{n} * {i} = {n*i}")

gugudan(5)

9. 아래 1단부터 9단까지 나오도록 하시오.

gugudan()

def gugudan() :
  for i in range(1, 10) :
    for j in range(1, 10) :
      print(i, "*", j, "=", i*j)
    print()

10. 아래가 에러가 나는 이유를 설명하시오.

str = input("1234");
for i in range(10) :
print("Hello world" + str(i))

str(i)에서 str이 이미 문자열로 정의되어있어서 내장함수 str()을 덮어쓰고 있기 때문이다.
그래서 str(i)를 함수로 인식하지 못하고 문자열인 str을 호출하려고 하기 때문에 에러가 난다.
str()을 사용하려면 변수이름을 변경해야 한다.
(그래서 저번에 변수명으로 예약어를 사용하지 말라고 했었다.)

11. 컴퓨터에서 실수에 오차가 있는 이유는?

부동소수점 숫자가 이진수로 정확하게 표현되지 않기 때문이다.
컴퓨터는 숫자를 이진수로 표현하는데 일부 실수는 이진수로 정확하게 나타낼 수 없어 무한히 반복되는 소수로 변환된다.

12.아래를 코딩 하시오

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

1. 함수 선언

- 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

input() 함수에 대해서도 배웠다.
사용자에게 입력을 받는 함수로 기본적으로 문자열 형태로 입력값을 반환한다.
입력받은 값은 문자열로 처리되기 때문에 숫자나 다른 데이터 형식으로 사용하려면 타입 변환이 필요하다.

str1 = input("How old are you? : ")

print(type(str1))  # 데이터 타입을 확인하는 함수
print(str1)

2. 주석, 들여쓰기

# 한 줄짜리 주석
# 여러 줄 쓰려면 #을 계속 붙여줘야 한다.

``` 여러 줄짜리 주석 ```

3. 반복문

오늘은 반복문 중에서 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)까지 넣으면 된다.

4. int와 float

  • int는 정수만 저장할 수 있는 타입이고 소수점이 없기 때문에 이진수로 정확한 값을 저장하고 계산할 수 있다.
  • float는 소수점이 있는 실수를 저장할 수 있는 타입이다.
    부동소수점은 소수점을 이동할 수 있는 방식으로 저장하므로 int보다 더 큰 범위의 값과 소수점을 표현할 수 있지만 정밀도가 떨어질 수 있다.

-> int는 정수만 저장해서 빠르고 정확하게 연산이 가능하고 float는 소수점이 있는 실수를 저장해서 더 넓은 범위의 값을 저장 가능하지만 정확도가 떨어질 수 있다.

num1 = 1.000000000000001
num2 = 1.1
print(num1 + num2)	# 출력 : 2.1000000000000014
오차를 줄이기 위해서는 round() 함수를 사용하거나 decimal 모듈을 사용하면 된다.
  1. round()
    : 연산 후 결과를 원하는 자릿수로 반올림해서 출력할 수 있다.
    간단히 소수점 자릿수를 제한할 때 유용하지만, 부동소수점 오차가 여전히 존재할 수 있습니다.
num1 = 1.000000000000001
num2 = 1.1
result = num1 + num2
print(round(result, 15))
# 소수점 15자리까지 반올림
# 출력 : 2.100000000000001
  1. decimal 모듈
    :decimal 모듈을 사용하면, 임의의 정밀도를 설정할 수 있어 정확한 실수 연산을 할 수 있다.
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

1개의 댓글

comment-user-thumbnail
2025년 1월 2일

고생 하셨습니다. ^^;

답글 달기