Python error
TypeError: unsupported operand type(s) for +: 'int' and 'str' ...
시작 전 테스트환경 살피기
Time
2017년 08월 18일
OS
Linux(Ubuntu 16.04 LTS)
Language
Python 2.7
일단 문제의 원인은 보통 문장을 연결해 줄 때 발생한다.
문자열 + 정수형 문자를 연산하면 문자열로 만들어 줬던 다른 언어체계와 헷갈리기 시작하는게 주 원인같다.
예를 들어 아래와 같은 문장 사용시에 Python은 error를 뱉는다.
>>> print "hi" + 2017 + "nice to meet you" + 1004 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects |
Python은 문자열과 정수형의 + 연산을 허용하지 않는다. 따라서 이를 해결하기 위한 방법은 총 4가지로 나뉘게 된다.
1. int형을 문자열형태로 감사준다.
우리는 str ( ) 내장함수를 이용하여 숫자형태의 data를 문자열로 만들수 있다. 이를 적용해보자.
>>> print "hi" + str(2017) + "nice to meet you" + str(1004) hi2017nice to meet you1004 |
2. +로 묶지 말고 ,를 이용한다.
+연산자가 아닌 콤마( , )를 이용하면 int형과 str형을 묶을 수 있다.
왜인지는.. 아직 미궁이다.. 추측하건데 print에 ,를 기준으로 인수로 끊어져 들어가면서 자동으로 문자형태로 바뀌는것이 아닐까 한다..
알면 가르쳐주길..
str( )을 사용했을 때와 다르게 콤마를 이용하면 각 인수들 사이가 띄워서 저장된다.
인수사이의 간격을 띄우고 콤마를 찍을 때와 (인수1, 인수2) 콤마만 찍을 때 (인수1,인수2) 모두 사이간격이 띄워져서 나온다.
>>> print "hi", 2017, "nice to meet you", 1004 hi 2017 nice to meet you 1004 >>> print "hi",2017,"nice to meet you",1004 hi 2017 nice to meet you 1004 |
3. 포맷코드를 이용한 포매팅
포맷코드( 잘 모르겠으면 문자열 포맷팅 부분을 보자, 굵은글씨 click후 page 중간 쯤에 있다! )를 이용하여 위치를 지정해준다.
>>> print "%s %d %s %d" %("hi", 2017, "nice to meet you", 1004) hi 2017 nice to meet you 1004 >>> print "hi" "%d" "nice to meet you" "%d" %(2017, 1004) hi2017nice to meet you1004 |
4. 고급포맷을 이용한 포매팅
고급포맷을 모르겠다면 위의 문자열 포매팅( 굵은 글씨 ) 에 걸려있는 링크를 따라가서 문자열 포매팅 밑에 있는 Plus 고급 문자열 포매팅을 클릭하여 내용을 참조하자!
>>> print "{0} {1} {2} {3}".format("hi", 2017, "nice to meet you", 1004) hi 2017 nice to meet you 1004 |
'개발자 레니는 지금 - > 소프트웨어와 함께' 카테고리의 다른 글
[ Python ] 시스템 명령어 실행하기 (0) | 2017.08.18 |
---|---|
👻[ Python ] File 혹은 Dir 삭제하기 (0) | 2017.08.18 |
👻[ Python ] 한글 인코딩이 안될 때 < 해결방법 > (0) | 2017.08.18 |
[ Python ] Switch case문 사용하기 (0) | 2017.08.18 |
👻[ Python ] 문자 ↔ 아스키코드 변형하기 (0) | 2017.08.18 |