C2-2 사각형의 둘레와 면적을 계산하라!
이 문제를 통해서 마침 운 좋게.. 변수에 띄어쓰기를 쓸 수 있는지 없는지 테스트해 볼 수 있었다. 그러고보니까.. 앞에서 변수 파트에서 배우기를
* 변수명에 특수문자가 들어가거나 숫자로 시작하면 안 된다.
그런데 내가 미처 보지 못하고 놓친 부분이 있었으니
변수명이 길어지면 다음과 같이 영어 단어 두개를 밑줄(_)이나 대소문자 조합으로 만들어 사용한다.
아하..
근데 언더바도 특수문자 아냐 -_-?
이건 특수문자로 안 치는 모양이다.
그래서 sq height를 sq_height로 바꿨다.
와 근데 주피터 노트북이 진짜 대단한 게 이렇게 어디가 틀렸는지를 살짝 알려주는구나? 지난 캡쳐들을 살펴보니까 늘 그랬는데 나는 지금에서야 발견했다. 와우 와우.. 저렇게 표시를 해주니까 뭐가 왜 틀렸는지 한 번에 파악할 수 있어서 참 좋다.
unsupported operand type(s) for %: 'NoneType' and 'str'
뭔 소리지
(와 아주 제대로 배우는 구나. 그래 이게 지지고 볶고지. 이 책 아주 좋은데? 지지고 볶을 수밖에 없게 만들어주고 있어.)
그래서 순순히 아래 나오는 에러에 대한 설명을 참고하기로 했다.
TypeError: %d format: a number is required, not str
아 기억났다. input으로 입력받은 데이터는 문자열이다. 그렇기 떄문에 이걸 %d로 받기 위해서는 이를 int를 이용해서 정수화 시켜주는 작업이 필요한 것이다.
TypeError: can only concatenate str (not "int") to str
연산을 시킨게 문제가 되는 것 같은데.. 그냥 변수를 추가해서 난관을 타개하기로 했다.
새로운 변수를 만들어서 그 안에 계산 결과를 담고, print 함수에는 그 변수를 집어넣는다.
이 작업을 통해서 input 함수, 문자열 포매팅, int함수에 대해서 공부할 수 있었다.
하지만 신기하게도 많이 까먹겠지 ㅎㅎ 그럼에도 불구하고 지치지 않는 게 진정한 저력이다.
아 근데 정답을 보고 약간 충격을 받았다.
근데 다시 잘 보니까 엄청 충격은 아니고.. 정답에서도 sq_lenth 변수를 선언하고 있다. 그러니까 변수 선언을 할 수밖에 없다는 건 내가 잘 본 것이다. 근데 애당초 sq_height와 sq_width 변수를 선언할 때부터 int를 써서 입력받은 숫자를 곧바로 정수화시켜서 사용하고 있는 건 아뿔사라는 생각이었다. 하여간 그렇게 정수화시킨 다음에 sq_lenth 변수를 만들고.. 쭉죽쭉쭉 프린트 해나가는 것인데.. 마지막에서 막혔다.
print("면적: %dcm2" % sq_height*sq_width)
이렇게 썼더니
sq_height가 10이고
sq_width가 20이니까
%d에 10을 넣고 이걸 20번 반복해버리는 것이다.ㅋㅋㅋ
그래서 이걸 어떻게 해결해야 할지.. 고민이다. 변수를 또 하나 선언해야 할까? 하고 정답을 보니까 한다 ㅋㅋ 에이 뭐야 결국 변수 선언이 답인가.
정답에서는 이렇게 sq_area_size 변수를 선언해서 뒤에 가서 prin("면적")으로 해서 해결하고 있었다.
하여간 이걸로 배운 것은 문자열 포매팅에서 정수의 계산결과를 대입하기 위해서는 그 계산 과정을 괄호로 묶어줘야 한다는 것이다. 그리고 그렇게 해도 작동을 한다는 것이다.
아니 그러면 lenth도 그렇게 되는 거 아냐?
'파이썬 독학일지' 카테고리의 다른 글
파이썬 독학일지-C2-3원의 둘레와 면적(주피터 노트북/인트로덕션 투 파이썬) (0) | 2021.07.18 |
---|---|
파이썬 주피터 노트북 단축키(keyboard shortcuts) (0) | 2021.07.18 |
파이썬 독학일지-코딩연습C2-1연월일에 '.'삽입(주피터 노트북/인트로덕션 투 파이썬) (0) | 2021.07.18 |
파이썬 독학일지-2.7주석문(주피터 노트북/인트로덕션 투 파이썬) (0) | 2021.07.18 |
파이썬 독학일지-2.5프로그래밍 맛보기(주피터 노트북/인트로덕션 투 파이썬) (0) | 2021.07.18 |
댓글