본문 바로가기
컴퓨터 언어/Python

[ Python ] input() 사용하기

by SuperMemi 2022. 6. 13.
반응형

[ Python ] input() 사용하기

 


이전글에서는 python을 이용한 출력에 대해서 다루었는데요. 

이번에는 python을 이용한 입력에 대해서 다루어 보겠습니다.

 

[ Python ] print 함수 사용하기 - 기초 (문자열, sep, end)

[ Python ] print 함수 사용하기 - 기초 (문자열, sep, end) 글의 목차 print() 의 기본구조 출력 문자열 (작은 따옴표, 큰따옴표, 삼중따옴표) 다중 출력 문자열 sep=' ' 의 역할 end='\n'의 역할 prin..

supermemi.tistory.com


input()

 

아래의 코드를 직접 따라해보세요. 

이해가 훨씬 빠릅니다.

 

input()이라는 함수를 사용하면,

프롬프트에서 사용자에게 입력값을 받을 수 있습니다.

 

이렇게 받아온 데이터를 어딘가에 저장을 해야겠지요.

그래서 아래와 같은 구조로 사용됩니다.

i = input()       # 입력 받은 것을 i에 저장

print(i, type(i)) # 확인

 

input 함수의 입력값으로 어떤 문자열을 넣게 되면,

아래와 같이 사용자의 프롬프트에 입력받은 문자열을 출력하게 됩니다.

i = input("i 에 들어갈 숫자를 적어주세요! : ") # 입력받을때 문자열 출력
print(i, type(i))

 


input을 통해 입력받은 값은 모두 문자열(str)로 저장된다

 

위의 예시를 자세히 보세요.

입력을 숫자로 했지만, type(i)가 항상 str 문자열 인 것을 볼 수 있습니다.

 

예를들어 입력받은 것을 다시 연산이 가능한 숫자로 어떻게 바꿀 수 있을까요?

 

입력받을때 int() 또는 float() 등으로 변수 타입을 재설정해주면됩니다.

i = int(input()) # int 변수로 변경
print(i, type(i))

 


한번에 여러개의 입력을 받을 수 있을까요?

 

가능합니다.

 

다만, 하나의 문자열 객체로 저장이 됩니다. 

i = input()
print(i, type(i))

 

정확히 말하면, 여러개의 입력을 받는 것은 아니지요.

띄어쓰기가 된 str 문자열을 입력 받는 것입니다.

 

따라서, 숫자로 변형하기 위해 int(input()) 을 실행하게 될 경우 아래와 같은 문제가 발생합니다.

 


여러개의 입력을 받아서 숫자로 바꾸기

 

한가지 간단한 방법으로는 하나씩 입력 받아서 int로 바꾼 후 저장하는 겁니다. 

flag = 'Keep going'
data = []
while flag=='Keep going':
    i = input("정수를 하나 입력하고 엔터를 눌러주세요!")
    
    if i == 'end':
        flag = 'stop'
    else:
        i = data.append(int(i))
        print("만약 입력을 마무리 하고 싶다면, end 를 입력해주세요")

print(data, type(data[0]))​

 

그러나 이렇게 하면 귀찮죠.. 매번 하나씩 언제 다 입력을 할까요

그냥 한번에 여러개의 숫자를 입력을 받을 수는 없는 걸까요?

 

이때 split과 map 이라는 함수를 사용하면 간단하게 구현할 수 있습니다.

 

i = list(map(int,input("숫자를 원하는 만큼 띄어쓰기로 구분하여 입력해 주세요").split(' ')))
print(i)

1. input 으로 받아온 문자열을 split 이라는 함수를 바탕으로 구분지을 수 있습니다.

(split() 안쪽에 들어가는 문자열에 따라 문자열이 구분되어 집니다)

2. 공백을 기준으로 구분지어진 문자열을 map이라는 함수를 통해 element 마다 int라는 변수 타입 전환 함수를 적용하게 됩니다.

3. 이를 list()로 표현하게 되면 위와 같은 코드가 됩니다.

 

위의 방식을 이용하여 입력받은 수의 합을 쉽게 구할 수 있습니다.

i = sum(list(map(int,input().split(' '))))
print(i)


 

반응형