1. 랜덤값 맞추기
랜덤 값을 생성하는 코드를 알려드릴게요.
import random
random_num = random.randint(0, 10)
print(random_num)
위 코드는 0이상 10이상의 정수 중 하나를 랜덤으로 생성합니다.
이를 이용하여 아래 프로그램을 만들어주세요.
< 랜덤 값 맞추기 프로그램 >
1. 점수를 0점으로 초기화 해주세요.(score 변수에 저장해 주세요)
2. 사용자로 부터 0이상 10이하 정수를 입력받으세요.
3. 사용자의 입력을 파라미터로 주면 정답을 함수 내부에서 랜덤값을 생성하여 사용자가 맞추면 +1 점 틀리면 -1점 해주세요.
4. 점수를 출력해 주세요
< 정답 코드 >
import random
score = 0
def random_num_quiz(user_num):
random_num = random.randint(0, 10)
if random_num == user_num:
score += 1
else:
score -= 1
user_input = int(input())
random_num_quiz(user_input)
print(score)
라고 구현 하셨을 때.

이 오류를 만나셨나요?
오늘 해당 오류가 왜 생겼는지, 어떻게 해결하는지 배워 봅시다.
2. 변수의 종류
사실 변수의 종류는 2가지 있습니다.
- 함수 밖 변수
- 함수 안 변수
이를 조금 더 전문 용어로 말하면 함수 밖 변수는 Global 변수(전역 변수) 라고하고 함수 안 변수는 Local 변수(지역변수) 라고합니다.
local 변수와 global 변수에 대해 자세히 알아봅시다.
3. Local 변수
조심 스럽게 변수가 어디에 저장 되는지 기억 나시나요?

바로 RAM(램) 이란 컴퓨터 부품에 저장됩니다.
로컬 변수(지역변수)는 함수가 실행 되는 순간에만 램에 저장되었다가 함수가 return 을 만나 종료 되는 순간 램에서 지워집니다.
def local_var_test():
num = 10
print(num)
return None
local_var_test()
print(num)
위 코드를 실행하면 아래 에러를 만나게 될 것입니다.

함수 안에서 print(num)의 실행 결과인 10은 잘 출력이 되었는데 함수 밖에서 명령한 print(num)에서 에러가 발생한 모습입니다.
오류 내용을 자세히 보면 “num 이란 변수를 찾을 수 없다”라는 오류입니다.
변수를 찾을 수 없다라는 말을 좀 더 풀어보면 “램에 num이란 변수명을 가진 데이터는 없습니다” 라고 알려주는 오류입니다.
이런 오류가 발생한 이유는 num이 함수가 종료 되면서 램에서 지워졌기 때문입니다.
결론적으로 로컬 변수는 함수 안에서만 사용 할 수 있습니다.
💡local 변수를 함수 밖에서도 사용하는 방법local 변수를 함수 밖에서 사용하는 방법은 간단 합니다…
해당 local 변수를 return 을 이용해서 출력 해주시면 됩니다.
4. Global 변수
함수 밖에 정의가 되어 있으면 글로벌 변수(전역 변수)라고 합니다.
해당 변수가 정의된 부분부터 프로그램이 끝날 때까지 램에 저장되어 있습니다.
따라서 함수에서 해당 변수를 출력할 수 있습니다!
num = 10
def print_global_var():
print(num)
print_global_var()
print(num)
실제로 위 코드를 실행 해보면 아래 그림처럼 출력이 나왔을 것입니다.

이것은 함수 안에서도 출력하고 함수 밖에서도 출력했기에 두번 출력됩니다.
그런데 아차 싶은게 있죠??
랜덤값 맞추기 문제에서는 오류가 발생했는데 왜지?? 라는 의문이 드셨다면 정말 똑똑하십니다!!
전역 변수(글로벌 변수)는 함수 내부에서 읽기는 할 수 있습니다.
단, 전역 변수를 함수 내부에서 다른 값으로 수정할 수 없습니다!
이를 확인해 보기위해 아래 코드를 실행해 봅시다.
num = 10
def print_global_var():
num += 1
print(num)
print_global_var()
print(num)
실행해 보면 오류가 발생 할 것입니다.
해당 오류는 랜덤값 맞추기 문제에서 발생한 문제와 동일 할 것입니다.

이렇듯 함수 내부에서 전역 변수를 수정 하는 것은 안됩니다.
5. 함수 내부에서 전역 변수를 수정 하는 방법
함수 내부에서 전역 변수를 수정하는 방법이 있습니다.
바로 global 명령어를 사용하면 됩니다.
아래 코드를 실행 해봅시다.
num = 10
def print_global_var():
global num
num += 1
print(num)
print_global_var()
print(num)
실행 결과 아래 그림처럼 나올 것입니다.

이를 활용해서 랜덤값 맞추기 문제를 다시 풀어봅시다.
< 랜덤 값 맞추기 프로그램 >
1. 점수를 0점으로 초기화 해주세요.(score 변수에 저장해 주세요)
2. 사용자로 부터 0이상 10이하 정수를 입력받으세요.
3. 사용자의 입력을 파라미터로 주면 정답을 함수 내부에서 랜덤값을 생성하여 사용자가 맞추면 +1 점 틀리면 -1점 해주세요.
4. 점수를 출력해 주세요
< 정답 코드 >
import random
score = 0
def random_num_quiz(user_num):
global score
random_num = random.randint(0, 10)
if random_num == user_num:
score += 1
else:
score -= 1
user_input = int(input())
random_num_quiz(user_input)
print(score)
6. 연습문제
문제 1
다음 코드의 실행 결과로 올바른 것을 고르세요.
def test():
x = 5
print(x)
test()
print(x)
A) 5와 5가 순서대로 출력된다.
B) 5가 출력된 후 오류가 발생한다.
C) 오류가 발생하며 아무것도 출력되지 않는다.
D) x의 값이 출력되지 않고 None이 출력된다.
문제 2
다음 코드에서 num 변수는 어떤 종류의 변수로 간주되나요?
num = 10
def print_num():
print(num)
print_num()
A) 로컬 변수(Local 변수)
B) 전역 변수(Global 변수)
C) 함수 내부에서만 수정 가능한 변수
D) 함수 호출 시 사라지는 변수
문제 3
다음 코드의 실행 결과로 올바른 것을 고르세요.
score = 0
def update_score():
score = 10
print(score)
return score
update_score()
print(score)
A) 10과 10이 순서대로 출력된다.
B) 10과 0이 순서대로 출력된다.
C) 오류가 발생한다.
D) 0과 10이 순서대로 출력된다.
문제 4
다음 코드에서 오류를 해결하기 위해 추가해야 하는 명령어는 무엇인가요?
count = 0
def increment():
count += 1
print(count)
increment()
A) return count
B) global count
C) local count
D) print(count)를 함수 밖으로 이동
문제 5
다음 코드의 실행 결과로 올바른 것을 고르세요.
def set_value():
value = 20
return value
result = set_value()
print(result)
A) 20이 출력된다.
B) 오류가 발생한다.
C) value가 출력된다.
D) None이 출력된다.'파이썬 기초' 카테고리의 다른 글
| [ 파이썬 기초 ] 19. 클래스 (0) | 2025.03.21 |
|---|---|
| [ 파이썬 기초 ] 17. 함수 (0) | 2025.03.21 |
| [ 파이썬 기초 ]16. while 문 (0) | 2025.03.14 |
| [ 파이썬 기초] 15. for문 핵심 문제 (0) | 2025.03.14 |
| [ 파이썬 기초 ] 14. for문 (0) | 2025.03.06 |