23.7 질문입니다.
, kang jisu님이 작성
col, row = map(int, input().split())
matrix = []
for i in range(row):
matrix.append(list(input()))
import copy
count = 0
b=copy.deepcopy(matrix)
for i in range(row):
for j in range(col):
if matrix[i][j]=="*":
continue
else:
matrix[i][j]==int(0)
for k in range(i-1,i+2):
for y in range(j-1,j+2):
if (matrix[k][y]=="*"):
matrix[i][j]+=1
else:
continue
print(matrix)
이렇게 코딩을 짜 보았는데,
Traceback (most recent call last):
File "/Users/dungdi/Desktop/python/main.py", line 124, in <module>
matrix[i][j]+=1
TypeError: can only concatenate str (not "int") to str
이러한 오류가 떴습니다. 뭐가 문제였던걸까요?
Re: 23.7 질문입니다.
, 도장_ 관리자님이 작성Traceback (most recent call last):
File "/Users/dungdi/Desktop/python/main.py", line 124, in <module>
matrix[i][j]+=1
TypeError: can only concatenate str (not "int") to str
에러 메시지를 잘 보면 문제가 된 코드와 에러 유형을 알 수 있습니다.문자열에만 문자열을 더할 수 있다는 뜻입니다.
concatenate는 연결하는 뜻이고, str to str은 str에 str을 연결할 수 있다. can only이므로 str to str만 가능하다는 뜻이죠.
심지어 (not "int")라고 강조되어 있습니다.
따라서 행렬 안에서 저 데이터 안에는 문자가 있고 거기에 숫자를 더하는 상황일 수도 있고, 그 반대일 수도 있습니다. 어쨌거나 타입이 일치하지 않기 때문에 발생하는 문제입니다.
Thonny를 설치해서 파이썬 프로그램을 단계별로 실행하면 메모리 내부에서 벌어지는 과정과 변수의 값을 볼 수 있습니다. 이걸로 디버깅해보세요.