목록개인공부(WEB, Python, DB)/Python (176)
ChainSmoker’s Block

[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -2. 사용자의 입력과 출력 ===================print 자세히 알기 : print문을 수행할 때 일은 입력한 자료형을 출력하는 것이었다. print의 사용 예는 아래 예시와 같다. 뒤에서 print문을 사용하여 할 수 있는 일에 대해 조금 더 자세히 알아볼 예정이다.

[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -2. 사용자의 입력과 출력 ===================사용자 입력 : -프롬프트 값을 띄워서 사용자 입력받기 사용자에게 입력받을 때 '숫자를 입력하세요'라든지 '이름을 입력하세요'라는 안내 문구 또는 질문이 나오도록 하고 싶을 때가 있다. 그럴 대는 input()의 괄호 안에 질문을 입력하여 프롬프트를 띄워주면 된다. 'input("질문 내용")' 다음 예시를 직접 입력해 보자. 위와 같은 질문을 볼 수 있을 것인데 숫자를 입력하라는 프롬프트에 105를 입력하면 변수 numb에 대입된다. print(numb)로 출력해서 제대로 입력되었는지 여부를 확인해보는 확인작업을 거치자.

[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -2. 사용자의 입력과 출력 ===================사용자 입력 : 사용자가 입력한 값을 어떤 변수에 대입하고 싶을 때는 어떻게 해야하는가? -input의 사용 input()함수는 입력되는 것을 문자열로 취급하게 된다.

[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -2. 사용자의 입력과 출력 ===================개요 : 우리들이 사용하는 대부분의 완성된 프로그램은 사용자 입력에 따라서 그에 맞는 출력을 내보낸다. 대표적 예시로 게시판에 글을 작성 후 '확인'버튼을 눌러야만 우리가 작성한 글이 게시판에 올라가는 것을 들 수 있다. 우리는 이미 함수 부분에서 입력과 출력이 어떠한 의미를 가지는지 알아보았다. 지금부터는 좀 더 다양하게 사용자의 입력을 받는 방법과 출력하는 방법을 알아보도록 하자.

[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================lambda(람다) : lambda는 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다. 보통 함수를 한 줄로 간결하게 만들 때 사용한다. 한국말로 '람다'라고 읽고 def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 주로 쓰인다. 사용법은 아래와 같다. 'lambda 매개변수1, 매개변수2, 매개변수3, ...' : 매개변수를 사용한 표현식 add는 두 개의 인수를 받아 서로 더한 값을 돌려주는 lambda 함수이다. 다음 예제는 def를 사용한 예제이다. 위 예제와는 하는 일이 완전히 동일하다.

[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================매개변수에 초깃값 미리 설정하기 : -2. global 명령어 사용하기 두 번째 방법으론 global명령어를 사용하는 방법이다. 예시에서 볼 수 있듯이 vartest함수 안의 global a 문장은 함수 안에서 함수 밖의 a 변수를 직접 사용하겠다는 뜻이다. 하지만 프로그래밍을 할 때 global명령어는 사용하지 않는 것이 좋다. 왜냐하면 함수는 독립적으로 존재하는 것이 좋기 대문이다. 외부 변수에 종속적인 함수는 그다지 좋은 함수가 아니다. 그러므로 가급적 global 명령어를 사용하는 이 방법은 피하고 첫 번재 방법을 사용하기를 권하고 싶다.

[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================함수 안에서 선언한 변수의 효력 범위 : -함수 안에서 함수 밖의 변수를 변경하는 방법 vartest함수를 사용해서 함수 밖의 변수 a를 1만큼 증가시킬 수 있는 방법은 있는가? 이에 대한 해결책은 두가지 해결 방법이 있다. 첫 번째 방법으로 'return'의 사용. vartest함수는 입력으로 들어온 값에 1을 더한 값을 돌려준다. 따라서 a = vartest(a)라고 대입하면 a가 vartest함수의 결괏값으로 바뀐다. 앞에서 얘기했듯이 이 상황에서도 물론 vartest함수 내의 a 매개변수는 함수 밖의 a와는 다른 것이다.

[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================함수 안에서 선언한 변수의 효력 범위 : 1_26에 이어 설명. 예시를 살펴보자. vartest(3)을 수행하면 vartest함수 내에서 a는 4가 되지만 함수를 호출하고 난 뒤에 print(a)문장은 오류가 발생한다. 이유는 print(a)에서 입력받아야 하는 a변수를 어디에서도 찾을 수가 없기 때문이다. 함수 내에서 선언한 매개변수는 함수 내에서만 사용될 뿐 함수 밖에서는 사용되지 않는다. 앞의 내용을 꼭 이해해두길 바란다.

[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================함수 안에서 선언한 변수의 효력 범위 : 1_25에 이어 설명. vartest함수에서 당연히 매개변수 a의 값에 1을 더했으니 2가 출력될 것으로 예상되지만, 값은 1로 출력된다. 이유은 함수 내에서 새로 만든 매개변수는 함수 안에서만 사용하는 '함수만의 변수'이기대문이다. 즉, def vartest(a)에서 입력값을 전달받는 매개변수 a는 함수 안에서만 사용하는 변수이지 함수 밖의 변수 a가 아니라는 뜻이다. 따라서 vartest함수는 아래 예시처럼 변수 이름을 b로 한 vartest 함수와 동일하다. 즉, 함수 내에서 사용하는 매개변수는 함수 밖의 변수 이름과는 전혀 상관 없다는 뜻이다.

[04. 프로그램의 입력과 출력은 어떻게 해야 할까?] -1. 함수 ===================함수 안에서 선언한 변수의 효력 범위 : 함수 안에서 사용할 변수의 이름을 함수 밖에서도 동일하게 사용한다면 어떻게 될까? 해당 궁금증에 대한 답변은 아래 예시로 볼 수 있다. 먼저 a라는 변수를 생성 후 1을 대입한다. 다음 입력으로 들어온 값에 1을 더해주고 결괏값은 돌려주지 않는 vartest함수를 선언한다. 그 이후 vartest함수에 입력값으로 a를 주었다. 마지막으론 a의 값을 출력하는 print(a)를 입력하면 값은 어떻게 출력될까?