JY Tech

파이썬 TypeError: can only concatenate str (not "list") to str 본문

Programming/Error Solution

파이썬 TypeError: can only concatenate str (not "list") to str

J.Dragon 2023. 4. 4. 11:25

파이썬으로 코딩을 하던 중 제목과 같은 오류가 발생했다.

이번 오류는 파이썬의 형변환을 통해 해결 할 수 있다.

 

먼저 코드는 이렇다

 

for k in range(how):
	tool=input(str(k+1)+"번째 예약의 이름을 정확하게 입력하세요: ") #입력을 받음
    toolBox=[] #tool에서 입력받은 것을 저장하기 위한 변수
    tool=tool.replace(" ","") #정확도를 위해 입력받은 후 공백제거           
    book(person, tool, phone) #book 함수로 이동
    toolBox.append(tool) #toolBox 리스트에 tool추가
    print(person+"님의"+toolBox+"예약이 완료됐습니다")

 

실행을 하면...

TypeError: can only concatenate str (not "list") to str

이런 오류가 발생한다.

 

해당 오류는 str이 들어가야 하는 곳에 str이 아닌 다른것(여기서는 'list')가 들어가서 그렇다

 

print(person+"님의"+toolBox+"예약이 완료됐습니다")

이 부분에서 toolBox라는 list를 그대로 출력하려고 해서 발생한 것이다.

 

즉 list를 str로 형변환을 해줘야 한다.

파이썬의 형변환은 어렵지 않다

 

변환하려는 형태(변수)의 꼴이면 된다.

 

a=15 #int형
b=str(a) #정수 a의 형태를 str로 바꿔줌
c=float(a)#정수 a의 형태를 float으로 바꿔줌

print(a) #15 출력
print(b) #a와 같은 15가 출력되지만 '형태'가 다르다!
print(c) #15.0 출력

print(type(a)) #실행 하면 <class 'int'> 출력됨
print(type(b)) #실행 하면 <class 'str'> 출력됨
print(type(c)) #실행 하면 <class 'float'> 출력됨

이런 식으로 형변환을 할 수 있다.

 

 

그래서 위 예시를 적용하여 아래와 같이 코드를 수정하면 정상작동한다.

for k in range(how):
	tool=input(str(k+1)+"번째 예약공구의 이름을 정확하게 입력하세요: ")
    toolBox=[]
    tool=tool.replace(" ","")           
    book(person, tool, phone)
    toolBox.append(tool)
    print(person+"님의"+str(toolBox)+"예약이 완료됐습니다")

(toolBox에 str을 씌워서 형변환을 해준 것이다)

 

해당 코드는 지금 만들고 있는 프로그램의 일부 코드로 추후 MiniProject 카테고리에서 포스팅 할 것이다.

 

 

느낀점: 항상 내가 쓰고있는 변수가 어떤 타입을 갖는지 인지하고 코딩을 해야 한다...