더북(TheBook)

'3.1.3 변수를 사용하는 이유'에 나온 원의 넓이와 둘레, 구의 겉넓이를 구하는 코드도 다시 한번 살펴볼까요? 반지름을 입력받는 부분에서 오류가 났습니다. 오류 내용을 직접 해석해 봅시다.

p = 3.141592
r = input('반지름은? ')

result1 = p * r ** 2
result2 = 2 * p * r
result3 = 4 * p * r ** 2

print('원의 넓이 =', result1, '원의 둘레 =', result2, '구의 겉넓이 =', result3)
실행결과
반지름은? 999 
--------------------------------------------------------------------------- 
----> 4 result1 = p * r ** 2
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

4번째 줄에서 오류가 발생했습니다. 마지막 줄의 오류 내용을 해석해 보면 “타입오류: ** 또는 거듭제곱에서 지원하지 않는 연산자 타입: ‘문자열’과 ‘정수형’”입니다. 문자와 숫자 간에는 제곱 연산이 불가능하다는 뜻입니다. 그럼 p * r ** 2 중 어떤 변수가 str(문자열)일까요? 변수 p는 프로그램 첫 줄에서 실수 형태의 원주율을 저장했기 때문에 float입니다. 그러면 rstr이겠네요. 그런데 조금 이상하죠. 입력 값으로 999를 넣었으니 int(정수) 타입이어야 하는데 왜 str일까요? 다음 코드로 확인해 봅시다.

a = input()
print(type(a))
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.