-
[Python] 입력편 심화 학습프로그래밍/Python & Ruby 2020. 3. 4. 00:11
진짜 군더더기 없는 설명을 하고 싶었지만
입출력 만큼은 너무나도 중요하기에 sim hwa 학습을 준비했습니다.
레츠고
1. 정수로 입력받기
앞에서 말씀드렸다시피 input() 을 사용해서 입력을 받으면 무조건 string(문자열) 로 인식합니다.
예제를 보기전에 type( "변수명" ) 함수를 보겠습니다. type 함수는 () 안에 들어있는 변수의 자료형을 출력해줍니다.
정수면 'int', 실수면 'float', 문자열이면 'str' 이 출력됩니다. 이 함수를 통해서 저희가 입력받은 값이 어떠한 형태로 저장이되는지 확인해 봅시다.
x = input() # 입력 : 100 type(x) # 출력 : <class 'str'>
방금 입력받은 값을 확인해보니 str(문자열) 로 자료형이 정해졌습니다. 하지만 사칙연산을 하기위해서는 정수형이나 실수형이 되어야 합니다. 그러면 우리가 캐스팅(형변환)을 하면됩니다.
# 뒤에 오는 문자는 설명, 입력, 출력 중 하나입니다.
x = input() # 5 type(x) # 'str' x = int(x) # x 를 int 로 형변환해서 다시 x 에 넣어주는것 type(x) # 'int'
하지만 입력받을때 마다 이럴순 없죠. 그래서 이 과정을 한번에 하는 코드는 이렇습니다.
이걸 보시면 알겠지만 함수로 함수를 감싸는걸 잘이용하기만 해도 많은 활용이 가능합니다.
x = int(input()) # 5 type(x) # 'int'
2. 여러개 입력 한번에 받기
사실 이거 때문에 심화학습을 준비한겁니다. 변수 한두개로는 할수있는게 너무 한정적이기 때문이죠. 고작 더하기하는 프로그램 하나만 만들려고해도 변수가 두개 필요하니까요 ??
이제부터 조금 어려운 함수를 배워볼겁니다. split() 이라는 함수입니다.
split('기준문자열') : 기준문자열을 기준으로 데이터를 나눈다. 이때, split() 으로 사용할 경우 공백을 기준으로 나누게 됩니다.
우리는 이 함수를 사용해서 입력되어지는 데이터를 나누어서 각각의 변수에 저장할겁니다. 그리고 각각의 변수는 콤마를 사용하여 구분합니다. 세 가지의 경우를 봅시다.
- 변수1, 변수2 = input().split()
- 변수1, 변수2 = input().split('기준문자열')
- 변수1, 변수2, 변수3 = input('문자열').split()
경우 1 )
x, y = input().split() # 입력 : 5 4 print(x) # 5 print(y) # 4
경우 2)
x, y = input().split(',') # 입력 : 5,4 print(x) # 5 print(y) # 4
경우 3)
x, y, z = input("3개의 숫자를 입력해주세요").split() # 입력 : 5 4 3 print(x, y, z) # 5 4 3
3. 여러개 변수 정수로 입력 받기
이제 여러개 입력받는것도 알겠다 캐스팅도 알겠다. 그러면 무서울게 없습니다. 해봅시다.
x, y = int( input("2개의 숫자를 입력해주세요").split() ) # error : %^*^&(^&%
당연히 될것 같지만 캐스팅 함수인 int() 는 () 안에 변수 하나가 들어가야 합니다. 우리가 아직 배우지 않았지만 저렇게 하면 int의 과로안에 변수가 아닌 list(배열) 라고 불리는 형태의 데이터가 들어가게 됩니다. 그러면 우리는 하나하나 캐스팅을 해줄수밖에 없겠네요.
x, y = input("2개의 숫자를 입력해주세요").split() # 1 2 x = int(x) y = int(y)
한두개라면 가능하겠지만 100개 1000개라면 불가능합니다. 이런경우 사용하는것이 바로 map() 함수입니다. map() 함수를 사용하면 여러개의 입력을 원하는 자료형으로 한번에 바꾸는 것이 가능합니다.
map( '자료형' , input().split() ) : 들어오는 모든 데이터를 '자료형'으로 형변환 해줍니다.
x, y = map(int, input().split() ) # 1 2 print(x, y) # 1 2 print(x + y) # 3
이렇게 하지않고 그냥 더하기를 해버린다면 ???
x, y = input().split() # 1 2 print(x, y) # 1 2 print(x + y) # 12
오늘 type(), split(), map() 세가지의 함수를 새로 배웠습니다. 복잡하지만 필수요소이기때문에 기억해둡시다!!!
질문은 댓글에 ↓↓↓↓
'프로그래밍 > Python & Ruby' 카테고리의 다른 글
[Python] 벌써 백준문제 풀어보기 (0) 2020.03.04 [Python] 출력편 심화학습 (0) 2020.03.04 [Python] 비교 연산자, 논리 연산자, 조건문 (0) 2020.03.03 [Python] 선언, 사칙연산, 입출력 (0) 2020.03.03 [Python & Ruby] Ruby Download (0) 2019.10.18