티스토리 뷰


파이썬으로 코딩테스트를 풀다 최종적으로 정리해두면 좋겠다 싶어 적는다.


<입력 중심>

파이썬의 입력은 간단하다. 굳이 변수 앞에 타입을 쓰지 않아도 된다.

그래서 그냥 아래와 같이 적어도 출력이 된다.

a = input()	#4
print(a)	#4

그러나 간과해선 안되는 점. 

input()의 디폴트 값의 타입은 string이다.

참고로 파이썬 오브젝트의 타입을 알고싶으면 type(오브젝트)를 쓰자.

a = input()	#4
print(a)	#4
print(type(a))	#<class 'str'>

원하는 타입으로 변수를 저장하고 싶으면 아래와 같이 하면 된다.

총 3개. 물론 여기서 진수변환을 하고싶으면 더 다양한 것 들이 있으나 보통 쓰이는것은 세개.

# 각각의 입력 값은 순서대로 1, 2, 3 임.
a = float(input())	#실수형
b = int(input())	#정수형
c = str(input())	#문자열 
print(type(a), type(b), type(c))	#<class 'float'> <class 'int'> <class 'str'>

눈으로 보기에 1, 2, 3 정수형인 값도 위의 방법처럼 형변환을 진행하게 되면 바뀐다.

 

그러면, 띄어쓰기를 기준으로 한 줄에 여러 변수값을 입력받고 싶다면?

split()함수를 쓴다. 

split()은 문자열을 분리하는 함수. 괄호 안에는 어떤 문자를 기준으로 분리할지 정한다.

띄어쓰기를 기준으로 두 개의 숫자를 받아오자.

a, b = int(input().split(' '))
x, y = int(input()).split(' ')
print(a, b, x, y)	#error

우리가 알았던 방법 대로 해봤다. 그러나 에러가 뜸.

이유는 split함수가 string 전용인것과 int()는 list이면 안되는 이유다.

아래와 같이 수정하면 받아올 수 있다.

a, b = input().split(' ')	#띄어쓰기 기준으로 a, b 분리 저장
print(int(a), int(b))	#1 3
a, b = input().split(' ')
a = int(a)
b = int(b)	#여기서 형변환
print(a, b)	#1 3

<출력 중심>

이제 출력에 좀 더 집중을 해보자.

1. % 이용하기

c언어 느낌 가득한 출력 방법이다.

a, b = input().split(' ')
print("result: %d %d" % (int(a), int(b)))
# result: 1 3

어떤 타입을 출력할 것 인지에 따라 %d, %s, %f 등이 있다. 이 외에도 존재하지만 가장 많이 쓰임.

하지만 이는 가독성이 떨어지는 방법이다.

 

2. str.format()

이 방법은 출력시 문자열이다.

때문에, 숫자를 출력하고 싶으면 print 전에 형 변환을 해 주는 것이 좋다.

a, b = input().split(' ')
print('{} is {} years old'.format(int(a), b))	#1 is 2 years old
print(type(a))	#<class 'str'>
a, b = input().split(' ')
a = int(a)
b = int(b)
print('{} is {} years old'.format(a, b))	#1 is 2 years old
print(type(a))	#<class 'int'>

그런데 생각해보니 출력할때는 형이 딱히 상관이 없네?

그 전에 계산 할거 하고 출력시키면 되니까...

여튼 위의 방법이 C언어 식 방식보다 확실히 가독성이 좋다.

 

3. f-Strings

가장 최신식의 출력방법이다.

출력 맨 앞에 f를 넣기 때문에 이름이 저렇게 지어진듯함.

a, b = input().split(' ')
a = int(a) #1
b = int(b) #2
print(f'{a} + {b} = {a + b} years old')
# 1 + 2 = 3 years old

놀랍도록 간편하다.

여기서 형 변환을 먼저 진행하지 않고 a + b를 출력하면 1 + 2 = 12가 나오게 된다.

왜냐면 문자열 1과 문자열 2이기 때문에 그냥 붙여주는거임.


오류가 나면 어떤 변수가 어떤 형인지 인지하는 것 과, 어떤 상황에서 원하는 형을 이용할 수 있는지가 가장 중요한 것 같다.

자바스크립트만 쓰다가 파이썬 쓰자니 헷갈려서 힘들었는데 역시 사람은 적응의 동물이다.

익숙해지고 있는 중.


참고:

zetcode.com/python/fstring/

dojang.io/mod/page/view.php?id=2286

velog.io/@ceres/Python-%EB%AC%B8%EC%9E%90%EC%97%B4-%ED%8F%AC%EB%A7%B7%ED%8C%85-String-Formatting

반응형
댓글