2019. 5. 25. 15:06ㆍ파이썬
<문제>
변수 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으로 나눈 나머지 라는 뜻이다.
'파이썬' 카테고리의 다른 글
파이썬 문자열에 입력한 글자가 몇개 포함되어 있는지 출력하시오 (0) | 2019.05.25 |
---|---|
파이썬 다중 if문 예 (0) | 2019.05.25 |
파이썬 문자열 포매팅, % 코드 활용 (0) | 2019.05.25 |
파이썬 연산자 우선 순위 (0) | 2019.05.14 |
파이썬 리스트 메서드 (파이썬 리스트 함수) (0) | 2019.05.14 |