본문 바로가기
TIL

[정글 TIL] Week01 | 입출력, 산술연산자(/,//,%)

by Lizzie Oh 2022. 9. 26.

나의 TIL은 Today I Learned가 아닌 This week I Learned :-)

 

지난 기수 분들의 TIL을 보면, 대부분 10주차 정도까지만 TIL을 쓰시고 대부분 자취를 감추시더라. 하지만 정글에서 7일째를 보내고 있는 난 이제 알 것 같다. 그 분들이 초심을 잃거나 귀찮으셨던게 아니라 더이상 TIL을 쓸 시간조차 없으셨다는 것을..ㅎㅎ 나도 주차가 진행될 수록 바빠지겠지만 최대한 매주 배웠던 내용들을 정리하고 매 주마다의 깨달음과 마음가짐 등을 마지막 주차까지 꼭 적어보도록 노력해봐야지! 어쨌든 fresh한 마음으로 첫 TIL을 시작해본다! 

 

이번 주부터 4주 간은 자료구조와 알고리즘에 대해 공부하고, python 언어로 백준 알고리즘 문제를 푼다. 나는 주로 javascript로 개발을 공부해왔고, python은 이전에 KAIST CS101 수업 에서 접해본 게 다라 알고리즘 문제를 풀면서 기초 문법도 엄청 많이 검색해야 했다. 까먹지 않도록 잘 정리해보자

입력 

python에서는 input() 또는 readline()을 통해 입력값을 받을 수 있다. 

input()

input() 함수는 인수로 문자열을 받는다.e.g. input('문자열') 

코드가 실행되면 먼저 이 문자열을 출력하고, 엔터가 입력될 때 까지 값(문자형)을 입력받은 후, 이 값을 반환한다.  

a = input('숫자를 입력해보아라!')
print(f'우와 {a}이다!')

위의 코드를 실행하면, input()의 인수인 '숫자를 입력해보아라!' 라 출력되면서 키보드에서 값이 입력되기를 기다린다.

값이 입력되기를 기다리고 있다

이제 숫자를 입력하고 엔터를 치면 아래와 같이 입력값이 포함한 내용이 출력된다. 

 

알고리즘 문제를 풀 때는 특정한 형식을 갖춘 입력값들이 준비되어있기 때문에 이렇게 input()의 인수를 입력할 필요없이 input()으로만 쓰면 된다. 중요한 것은 input()은 입력값을 항상 문자열로 받는다. 입력값이 숫자더라도, input이 반환하는 값은 항상 string이다. 처음에 문제를 풀 때 이걸 모르고 계속 input() 결과로 사칙연산을 하는데 에러가 나와서 애먹었다.

# 입력값이 10 일 때

a = input()
print(a) # 출력값은 10
print(type(a))# 출력값은 <class 'str'>

정수로 된 숫자 입력값을 input()으로 받은 뒤 숫자로 출력하고 싶으면 int()를 사용하면 된다. int()의 인수로 숫자로 변환할 수 없는 문자열이 쓰이면 오류가 발생한다. e.g. 입력값이 '10'이 아닌 '1 0' 이라면 아래의 코드를 써서 정수로 변환할 수 없다. 

# 입력값이 10일 때

a = int(input())
print(a) # 출력값은 10
print(type(a)) # <class 'int'>

입력값이 공백으로 구분된 여러 개의 숫자라면 아래와 같이 split()을 사용할 수 있다. split()은 문자열을 잘라서 리스트로 바꿔주는 함수이다. '문자열'.split() 과 같이 사용할 수 있고, split의 인수로는 어떤 값을 기준으로 문자열을 자를지 입력할 수 있다. 아무 인수도 입력하지 않는 경우에는 공백(1개의 공백이나 n개의 공백이나 동일하게 처리)이나 탭, 엔터 를 기준으로 나눈다

# 입력값이 1 0 일 떄

a = input().split() 
print(a) #출력값은 ['1','0']

입력값이 여러 개일 때 각각을 여러 개의 변수에 저장하고 싶을 때는 아래와 같이 여러 변수를 ,로 구분하며 저장하면 된다.

# 입력값이 1 0 일 떄

a, b = input().split() 
print(a, type(a)) # 출력값은 1 <class 'str'>
print(b, type(b)) # 출력값은 0 <class 'str'>

위의 상황에서 이 입력값을 정수로 변환하여 여러 개의 변수에 저장하고 싶을 때는 map()을 사용할 수 있다. map함수는 첫번째 인수로 함수를 받고, 두번째 인수로 반복 가능한 자료형을 받아서 두번째 인수의 값을 하나씩 첫번째 인수의 함수에 넣어서 출력한다. 따라서 map함수의 첫번째 인수로 int를 쓰고, 두번째 인수로 input().split()이 변환하는 리스트를 쓰면, 리스트의 원소가 하나씩 int함수의 인수로 들어간다.

# 입력값이 1 0 일 때

a, b = map(int, input().split()) 
print(a, type(a)) # 출력값은 1 <class 'int'>
print(b, type(b)) # 출력값은 0 <class 'int'>

단, 위 처럼 map 함수의 반환값을 여러 변수에 저장하는 경우가 아니라면 이를 리스트나 튜플로 형 변환을 시켜줘야 한다. map함수는 map 객체를 반환하기 때문에 형 변환을 하지 않으면 아래와 같은 코드를 입력했을 때 map 객체가 반환되는 불상사가 생긴다. 

a = map(int,input().split())
print(a)

1 0 을 입력하니 아래와 같은 map 객체가 반환된다.

아래와 같이 map()함수를 list()함수의 인수로 넣으면, 입력값을 정수로 변환하여 리스트의 원소로 넣을 수 있게 된다. 

a = list(map(int,input().split()))
print(a)

이제 1 0을 입력하면 [1,0]이 출력된다.

 

출력

# 입력값: 10

a = int(input())
print(a) # 10
print(type(a)) # <class 'int'>
print(f'우와 {a}이다!') # 우와 10이다!


/, //, % 연산자

/ 연산자는 나눗셈으로, 소수점 이하까지 다 나눈 값을 반환한다. 

// 연산자는 정수 몫을 반환한다.

% 연산자는 정수 몫까지 나눈 나머지를 반환한다. 

print(7/3) # 출력값 2.3333333333333335
print(7//3) # 출력값 2
print(7%3) # 출력값 1

 

 

 

반응형

댓글