파이썬 숫자 연산 100의 자리만 구하기

2019. 5. 25. 15:06파이썬

728x90

<문제>

 

변수 num값 중에서 백의 자리 이하를 버리는 코드이다.

만일 변수 num의 값이 456이라면 결과값이 400이 되고, num이 111 이라면 결과값이 100이 되도록 한다.

 

결과 확인 : 400

 

 

나는 결과값을 ans라는 변수에 담기로 하였다.

 

 

<틀린 예1>

 

num = 456

ans = 100 * num[0]

 

Traceback (most recent call last):
  File "<pyshell#188>", line 1, in 
    ans=100*num[0]
TypeError: 'int' object is not subscriptable

 

틀린 이유: 인덱싱은 문자열, 리스트, 튜플에서만 가능하다.

 

 

<틀린 예2>

 

num = "456"

ans = 100 * num[0] 

ans = 4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444

 

틀린 이유: num[0]은 "4"라는 문자열이다. 문자열과 정수를 곱하면, 정수 값만큼 문자열이 곱해져서 나온다.

그러니까 지금은 "4"라는 문자열이 100번 나온 것이다.

 

 

<옳은 예1>

 

인덱싱을 활용하고 싶다면 num을 먼저 문자열로 바꿔주고 시작한다.

 

num = "456"

num[0] = "4"

 

현재 num[0]의 값은 "4" 문자열이기 때문에, int()를 사용하여 정수로 만들어준다.

 

int(num[0]) = 4

 

ans = 100 * int(num[0])

ans = 400

 

 

 

<옳은 예2>

 

인덱싱 없이 num과 num의 나머지를 활용하여 값을 구한다.

 

num = 456

ans = num - (num%100)

ans = 456 - 56 = 400

 

num%100은 456을 100으로 나눈 나머지 라는 뜻이다.

728x90
반응형