CS/Python

1. 파이썬의 입출력

bonggang 2019. 7. 11. 00:59

파이썬 코딩을 할 때 가장 많이 사용하는 출력함수는 아마 print() 함수일 것이다. 이 print()함수는 표준 출력과 파일 출력을 가능하게 해주는 함수이다. 아래 사진은 help(print)를 통해 본 print() 함수에 대한 정보이다.

 

print를 사용할 때는 print(출력 값, 출력 값, ...)으로 적어준다. 출력 값과 출력 값 사이에 특정 값을 넣어주고 싶다면 sep='' 속성을 사용해서 입력해 줄 수 있다. 만일 아무것도 입력해주지 않는다면 기본 값인 빈 공간이 입력된다. 마지막 값 뒤에 특정 값을 입력해주고 싶을 경우 end='' 속성을 이용하면 된다. 이 속성의 default 값은 줄바꿈이다.

print를 파일 출력에 사용하기 위해서는 file에 대한 정보를 지정해줘야한다. 이 부분에 대한 것은 좀 더 이후에 파일 입출력 예제를 보며 이해하는 것이 좋을 것 같다.

그렇다면 지금부터 print()를 사용해보겠다.

 

print("SamsungLions Team is the best team")
print("\"SamsungLions\" team is one of the best team in Korea")
print("구자욱","원태인","양창섭",sep='-')
print("-"*40)
print("\n")

player = "구자욱"
print('65 player is',player)

 

위 예제에서 첫번째 print는 가장 기본적인 문자열의 출력 모습이다.

두번째 줄에서 첫번째 줄과의 차이점은 \" 문자가 추가되었다는 것이다.(\과 역슬래쉬는 같은 글자를 입력한 모습이다.)

잠시 아래의 출력화면을 살펴보자. 코드에는 \"라고 적혀있지만 실제 구현화면에서는 "의 글자만 남아있다. 이것은 문자열을 표시하기 위한 "(쌍따옴표)와 구분해주기 위해 \(백슬래쉬) 후 "를 적어주는 것이다. 그렇기때문에 실제 출력화면에서는 \는 표시되지 않는 것이다. 이것은 "과 ' 모두 동일하게 사용된다.

세번째 줄에서는 sep의 활용을 확인할 수 있다. 첫 번째 값인 "구자욱"과 두 번째 값인 "원태인" 사이에 sep에서 지정해준 - 문자가 들어가있다. 이것은 두 번째 값과 세 번째 값 역시 마찬가지다.

네번째 줄에서 "문자"*숫자의 형식은 문자를 숫자 번 만큼 반복해준다는 의미이다.

\n는 코딩을 하던 사람들에 너무나 익숙한 줄바꿈이다.

 

 

 

다음은 입력 함수 input() 함수다. input은 표준 입력장치로부터 문자열을 입력 받는 함수다. input 또한 help(input)을 통해서 설명서를 살펴볼 수 있다.

 

input()의 괄호 안에 "문자열"을 넣어줄 경우 문자열을 출력하고 표준 입력장치로부터 문자열을 입력 받는다. 만약 사용자가 EOF를 입력하면 EOFError을 발생시킨다.

 

print("선수 이름을 입력하세요", end=" ")
name = input();
print(name,"등번호를 입력하세요.",end=" ")
number = input("")
print(name,"의 등번호는",number,"입니다")

 

 

print("숫자 계산 예제, 숫자를 2개 입력해주세요.")
num1 = input()
num2 = input()
print(num1+num2)

num1 = int(input())
num2 = int(input())
print(num1+num2)

 

 

이것은 위의 코드를 실행한 결과 화면이다. 첫번째 print도 num1+num2고 두 번째 print도 num1+num2인데 값이 다르다. 누가봐도 3+7은 37이 아닌 10이라는 것을 알 수 있다. 그렇다면 첫번째 print의 +는 숫자의 + 의미가 아닌 문자열을 연결해준 +라는 것은 쉽게 추측할 수 있다. 하지만 print 함수 내부의 코드는 똑같다. 그렇다면 문제는 바로 input() 함수에서 발생했다는 것을 바로 알 수 있다.

이것은 input 함수가 기본적으로 문자열로 입력이 된다는 특징때문에 발생한 문제이다. 그래서 입력받은 값을 정수형으로 변환해서 사용해야 한다.

 

이것으로 모든 문제가 해결됐을까? 그렇다면 아래의 오류는 무엇일까? 아주 간단한 문제이다. int형 변수에 실수를 입력하려했기때문이다.

 

그렇다면 이것을 해결하기 위해서는 어떻게 해야할까? eval() 함수를 이용하면 이 문제를 해결할 수 있다. eval() 함수는 인수를 유효한 파이썬 표현식으로 리턴한다

print("숫자 계산 예제, 숫자를 2개 입력해주세요.")
num1 = input()
num2 = input()
print(num1,"+",num2,"=",num1+num2)

num1 = int(input())
num2 = int(input())
print(num1,"+",num2,"=",num1+num2)

num1 = eval(input())
num2 = eval(input())
print(num1,"+",num2,"=",num1+num2)

 

 

 

파일 입출력

파일 출력은 앞에서 말했듯이 print 함수로 파일 입력은 readline 함수로 할 수 있다.

 

print("선수 이름을 입력하세요", end=" ")
name = input();
print(name,"등번호를 입력하세요.",end=" ")
number = input("")
print(name,"의 등번호는",number,"입니다")

file = open("test.txt","r+t")
print(name,number, file=file)
inputLine = file.readline()
print("inputLine",inputLine)
file.close()