Python/파이선과 친해지기

[Python] - Python과 친해지기-입출력(콘솔)

우리는 성공적으로 첫 번째 프로그램인 학생관리 프로그램을 개발했다. 이번 개발의 잘생긴 발주자는 다행히도 학생의 리스트와 분기별 성적을 주었지만, 문제는 얼마 가지 않아 발생한다. 

새로운 정보를 입력할 수는 없는 거야?

아... 우리의 치부를 들켰다. 아직 우리는 Python의 입력과 출력에 대해서 자세히 모르는 거 같다. 하지만 걱정 마시라, 이번 강의가 끝나면 새로운 정보의 콘솔 입력, 출력을 자유자재로 할 수 있을 것이다.


입력 - input

일단 입력 또한 함수로 진행된다. 변수 my_val을 사용자의 입력을 받아서 저장하는 예시로 이를 실험해보자

>> a = input("정보를 입력하세요 : ")
정보를 입력하세요 : 나는 최고의 Python 프로그래머

>> print(a)
"나는 최고의 Python 프로그래머"

와우 이렇게 간단할 수가. 그럼 이번에는 사용자에게 정수를 입력받아서 저장해보자

>> a = input("정수를 입력하세요 : ")
정보를 입력하세요 : 3

>> print(a)
"3"

어? 이건 문자열 3이다. 이를 a = int(a)로 캐스팅해도 되지만, 좀 더 Pythonic 하게 받는 순간 캐스팅을 해보자

>> a = int(input("정수를 입력하세요 : "))
정보를 입력하세요 : 3

>> print(a)
3

좋아 이제 완벽하다. 

* 눈치 빠른 사람들은 알겠지만, input의 parameter로 전달된 "~를 입력하세요"는 입력 직전 콘솔 창에 띄워줄 정보이다. 물론 파라미터를 전달하지 않고 a=input()처럼 사용할 수 있다. 이런 경우 입력 직전 아무말도 없이 입력받는다.

 

출력 - print 심화

우리가 평소 사용하던 print함수, 돋보기로 들여다보자 print함수는 사실 복수개의 파라미터를 전달받을 수 있다.

>> my_val = 3

>> print(my_val)
3

>> my_list = [1,2]

>> print("우리의 정수는",my_val,"우리의 배열은",my_list)
우리의 정수는 3 우리의 배열은 [1,2]
## 복수개의 파라미터 전달 가능

이렇게 파라미터를 사실상 제한 없이 전달받을 수 있다. 우리도 이런 함수를 만들 수 있지 않을까??(물론 가능하다 Python과 매우 친해지기까지 열심히 공부하자)

 

또한 print에는 다음과 같은 추가적인 파라미터들이 있다.

>> my_val = 3

>> print(my_val)
3

>> my_list = [1,2]

>> print("우리의 정수는",my_val,"우리의 배열은",my_list,sep="W")
우리의 정수는W3W우리의 배열은W[1, 2]
## sep="X"를 하면 복수개의 파라미터를 전달했을 때 구분자를 "X"로 한다.

>> print("우리의 정수는",my_val,"우리의 배열은",my_list,end="W")
우리의 정수는 3 우리의 배열은 [1, 2]W
## end="X"로 하면 출력의 마지막 글자를 W로 한다. 기본적으로 \n가 지정이 되어있는데,
## \n은 New Line이라는 지정된 문자열이다. print후 자동으로 다음줄로 넘어가는것은,
## print에 기본적으로 end="\n"이 되어있기 때문이다. end="X"등으로 \n를 바꾸면 
## 다음줄로 넘어가지않고 콘솔(>>>)이 이어서나오는것을 확인할 수 있다.

이 외에도 어디로 출력을 지정할지 선택하는 file(기본값 : std.stdout)이나 출력 후 버퍼를 플러싱할지를 선택하는 flush(기본값 : False)등이 있다.

* 파라미터 중에는 함수가 정의될 때 생략되면 기본으로 정해지는 형태도 있다. 우리가 print를 출력할 값만으로 사용할 수 있는 이유도 원래 전달되어야 하는 end, sep, file 등의 파라미터는 default 값(생략될 시 선택되는 값)을 가지고 있기 때문이다.

 


이렇게 사용자로부터 입력을 받는 방법인 input함수와 Python의 print함수의 조금 더 깊은 이해를 가질 수 있게 된 시간이었다. 다음 시간에는 파일 입출력에 들어가기전에 문자열 기본을 다지고, 모듈에 대해서 알아보도록하자