Notice
Recent Posts
Recent Comments
Link
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 카테고리에서 포스팅 할 것이다.
느낀점: 항상 내가 쓰고있는 변수가 어떤 타입을 갖는지 인지하고 코딩을 해야 한다...
'Programming > Error Solution' 카테고리의 다른 글
[파이썬] raise KeyError(key) from err (1) | 2023.11.27 |
---|---|
[파이썬]xlrd.biffh.XLRDError(xlrd오류) (1) | 2023.11.10 |
[C#/윈폼]"도구상자 항목 '###'을(를) 로드하지 못했습니다. 해당 항목은 도구상자에서 제거됩니다. (0) | 2023.04.30 |
[파이썬,sqlite] incorrect number of bindings supplied. the current statement uses 1 and there are 3 supplied (0) | 2023.04.21 |
y must have at least two dimensions for multi-output regression but has only one. 오류 (1) | 2023.02.16 |