python도 복기할 겸 문제 풀다 사용법을 애매하게 아는 것이 있으면 이렇게 정리하고자 한다.
python에서 입력과 출력을 어떻게 하는지 알아보자.
먼저 input()을 통한 입력이다.
a = input() # hi 입력
print(a) # 출력 결과 : hi
위와 같이 input() 함수가 사용되는데 이때 input() 함수는 입력된 값이 숫자여도 이를 문자열(str)로 저장한다.
그렇다면 input으로 입력받은 값의 자료형을 바꾸는 방법에는 무엇이 있을까? input으로 1을 입력 받고 이를 int 형으로 바꾸는 것을 살펴보자.
a = input() # 1 입력
print(type(a)) # <class 'str'>
a = int(a)
print(type(a)) # <class 'int'>
b = int(input())
print(type(b)) # <class 'int'>
위 코드와 같이 int() 안에 변수나 input()을 넣어 문자열이 아닌 다른 자료형으로 바꿀 수 있다.
추가로 아래와 같은 같이 2진수, 8진수 등으로 input에서 제한을 둘 수도 있다.
a = int(input(), 2) # 2진수 입력
b = int(input(), 8) # 8진수 입력
c = int(input(), 16) # 16진수 입력
그렇다면 한번에 두개 이상의 변수에 입력을 받으려면 어떻게 해야할까? split과 map을 사용하면 된다. split은 문자열을 특정 문자 기준으로 나누어 리스트로 저장하는 기능을 한다. 이때 리스트의 각 원소는 문자열이기 때문에, 이를 자연수로 바꿀 때 map을 사용한다.
map은 map(변환 함수, 반복가능한 객체)의 형태로 사용한다. 변환 함수 부분에 int, float 등과 같은 것을 넣어주면 된다.
a = input() # 1 2
print(a) # 1 2
a = input().split() # 1 2
print(a) # ['1', '2']
a = map(int, input().split()) # 1 2
print(a) # <map object at 0x0000028823aed3f0>
a, b = map(int, input().split()) # 1 2
print(a) # 1
print(b) # 2
추가로 map은 map 타입의 객체를 반환하기 때문에 이를 리스트, 튜플 형태로 저장하려면 아래와 같이 하면 된다.
a = list(map(int, input().split()))
print(a) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = tuple(map(int, input().split()))
print(a) # (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
다음으로 출력에 대해 알아보자.
먼저 print()를 이용한 출력이다.
print("hi") # hi
a = b = 1
print(a, "is 1") # a is 1
print(a, b) # 1 1
위와 같이 print()는 콤마(,)를 통해 한 번에 여러 변수나 깂을 한 칸씩 띄워 출력 할 수 있고, "~"와 같이 따옴표 안에 무언가를 적으면 그 안에 적힌 것을 그대로 출력해 준다.
다음으로 서식 문자를 이용한 출력에 대해 살펴보자. 정수의 경우 %d, 실수의 경우 %f, 문자열의 경우 %s이다. 간단한 예는 아래와 같다. (백준 11022 일부)
a, b = map(int, input().split())
print("%d + %d = %d" %(a, b, a+b))
C언어와 다르게 "~"와 %~ 사이에 ,(콤마)가 없다.
다음으로는 format()을 이용한 출력문이다. format()은 {}로 들어갈 자리를 만들고 이를 할당하여 출력하는 방식이다. 이해하기 쉽게 아래 코드를 살펴보자.
print('{} my name is {}'.format('hi', 'miloul'))
# hi my name is miloul
이때 {} 안에 들어가는 숫자는 str.format() 메서드로 전달된 객체들의 위치를 가리키는데 사용될 수 있다.
print('{0} and {1}'.format('spam', 'eggs'))
spam and eggs
print('{1} and {0}'.format('spam', 'eggs'))
eggs and spam