본문 바로가기

연오의 파이썬

연오의 파이썬 3주차 리뷰 및 퀴즈 정답

SMALL

3주차 스터디는 ALL 독학으로 이루어졌습니다.

 

스터디원들이 독학으로 학습하는 것을 잘 따라오고 있는지 확인하기 위해 중간 점검 퀴즈를 10시 30분에 실시하였고, 12시에 최종 점검 퀴즈까지 총 2개의 퀴즈를 풀었습니다.

 

중간점검 퀴즈 링크 http://naver.me/GHsUkKAx

 

3주차 파이썬 스터디 중간 점검

 

form.office.naver.com

우선 여러분들의 답을 보겠습니다.

 

1번 학생 중간점검 코드

def print_add(num1,num2): #매개변수는 2개
	"""사용자로부터 num1, num2를 입력받아 두 숫자의 합을 출력한다"""
	print("첫번째 숫자를 입력해주세요")
	num1 = int(input())
	print("두번째 숫자를 입력해주세요")
	num2 = int(input())
	print(num1 + num2)

print_add(1,2) #여기에 print_add(num1, num2) 입력하면 왜 오류가 날까요?

이 경우 print_add 함수의 매개변수는 2개입니다. 그런데, print_add(1,2)를 해주었습니다. 사용자에게 def 안에서 num1과 num2를 입력받아야하는데, print_add(1, 2)를 통해 이미 값을 입력해줬습니다.

 

1과 2라는 숫자가 이미 num1 = 1, num2 = 2 처럼 채워진 것이죠.

 

하지만 함수를 호출하면서 새로운 숫자의 입력을 받아(eg. 7과 3을 입력) num1 = 7, num2 = 3으로 채워집니다.

 

결과는 7+3인 10을 출력하지만, 굳이 1,2라는 값이 num1, num2 처음을 채워야 했을까요?

 

우리가 코드를 작성할 때 def print_add를 먼저 쓰지만, RUN을 하면 print_add(1, 2)를 먼저 읽습니다. 그리고 나서 위에서 매개변수 2개짜리 print_add 함수가 있는지를 찾습니다.

print_add 함수가 호출되기 전에는 def로 정의된 부분이 모두 가려져있다고 생각해보세요.

함수가 호출되면 그제서야 가려진 함수가 드러납니다.

 

어떤 작용과 비슷하냐면, 만약 우리가 베스킨 라빈스에 가서 아이스크림 맛 3가지를 말했다고 가정해봅시다. 그런데 직원이 알아서 파인트 컵에 3가지 맛 아이스크림을 채워주는 것이지요.

 

그렇게 때문에 매개변수 2개를 이용하려면 아래와 같이 작성해야 합니다.

def print_add(num1, num2): #매개변수가 2개인 경우
    print("두 수의 합: ")
    print(num1 + num2)

print("첫 번째 숫자: ")
a = int(input())
print("두 번째 숫자: ")
b = int(input())

print_add(a, b)

이 경우 프로그램을 돌리면 print("첫 번째 숫자: ") 부분부터 프로그램이 인식하고, print_add(a,b) 에 도달하였을 때가 되어야 def 들여쓰기에 해당하는 부분이 호출됩니다.

 

만약 매개변수를 다로 설정하지 않고 싶다면 아래와 같은 코드로 작성해도 됩니다.

def print_add(): #매개변수가 없는 경우
    print("첫 번째 숫자: ")
    num1 = int(input())
    print("두 번째 숫자: ")
    num2 = int(input())
    print("두 수의 합: ")
    print(num1 + num2)

print_add()

2번 학생 중간점검 코드

def print_add (number1,number2) : #매개변수는 2개
return int(number1)+int(number2) # --> return number1+number2
 
print('첫번째 숫자를 입력해주세요')
number1 = input() # --> number1 = int(input())
print('두번째 숫자를 입력해주세요')
number2 = input() # --> number2 = int(input())

print(print_add(number1,number2))

이 코드는 정상적으로 돌아가기는 하지만 input으로 사용자에게 입력받는 숫자는 문자라고 인식하기 때문에 여기서 integer 정수 타입으로 변환해주는 것이 좋습니다.


3번 학생 중간점검 코드

def print_add(n1,n2):
    결과 = n1+n2
    return 결과

입력1 =int(input())
입력2 =int(input())

print(print_add(입력1,입력2))

잘 작성하였습니다. 결과= n1 + n2 로 설정하여 return 결과라고 한 부분이 좋은 아이디어네요.

 

 


최종점검 퀴즈 링크 http://naver.me/GZnX4kjM

 

3주차 파이썬 스터디 최종 점검

 

form.office.naver.com

이 코드의 경우 진짜 짱은 지목 이라고 출력됩니다.

Line 3에서 zzang = '대영' 이라고 정의되었지만, Line 5에서 '지목'으로 재정의됩니다.

def mapo() 블럭 안에서 zzang은 '효진' 이지만 여기에 해당하는 zzang 은 지역변수(local variable)입니다. '지목' 이라는 값을 담는 zzang은 전역변수(global variable)이기에 print(zzang)을 하면 '지목'이 출력됩니다.

 


이 코드에서는 print 함수가 지역변수 zzang만 출력합니다. 그러므로 마포 짱은 효진 이라고 출력됩니다.

 


 

이 경우는 2줄이 출력됩니다.

마포 짱은 효진

진짜 짱은 지목

 

다들 수고하셨습니다.

반응형
LIST