///
Search
Duplicate
🎴

디버깅 실습

[문제가 있는 코드]
>>> print(Day 1 - String Manipulation") >>> print("String Concatenation is done with the "+" sign.") >>> print('e.g. print("Hello " + "world")') >>> print(("New lines can be created with a backslash and n.")
Python
복사
[출력해야 하는 값] Day 1 - String Manipulation String Concatenation is done with the "+" sign. e.g. print("Hello " + "world") New lines can be created with a backslash and n.
[해설] 1번 에러
File "main.py", line 1 print(Day 1 - String Manipulation") ^ SyntaxError: invalid syntax
Python
복사
익숙한 SyntaxError를 만났습니다. 에러를 확인해보니 1번 Line에 "(더블 쿼트)로 묶지 않아서 문자열로 인식을 못해 발생한 에러입니다.
3번 에러
File "main.py", line 3 print('e.g. print("Hello " + "world")') ^ IndentationError: unexpected indent
Python
복사
이것도 익숙한 IndentationError를 만났습니다. 바로 들여쓰기 에러인데요. 3번 Line을 보면 들여쓰기가 문제가 있는것을 금방 알 수 있습니다.
4번 에러
File "main.py", line 5 ^ SyntaxError: unexpected EOF while parsing
Python
복사
위 에러는 직관적으로 확인이 어렵네요. 파싱을 못했다는 의미로 구글링에서 찾아보면 코드 블록이 완성되기 전에 소스의 끝에 도달했다는 내용을 찾았습니다. 그러면 코드 블록은 어떤 의미일까요? 코드 블록은 print("Hello World") print 함수가 있고 시작점이 있고 끝점도 있는 것을 의미합니다. 그러면 다시 돌아와서 코드 블록이 완성이 안됐다는 의미는 시작점 또는 끝점 중에 코드 완성이 안된 거 같다는 생각을 해볼 수 있을 거 같습니다. 실제로 4번 Line 끝에 보면 ) (괄호)가 하나만 있습니다. 이렇게 되면 컴퓨터 입장에서는 입력이 끝나지 않은 것으로 판단할 수 있습니다.
2번 에러 마지막으로 2번 Line은 에러가 발생하지 않지만 출력해야 하는 값과 비교하면 + 표시가 안 되어 있는 것을 알 수 있습니다. 코드가 파싱한 내용을 뜯어보면 "String Concatenation is done with the " 까지 읽고 나서 " sign." 까지 읽었습니다. 그 사이에 + 기호가 있는데 이는 앞서 설명한 내용으로 String Concatenation에 해당됩니다. 그래서 출력값을 보면 String Concatenation is done with the sign. 두 개의 문자열을 합친 결과만 나오게 됩니다. 해결 방법은 "+" 특정 역할로 동작을 못하도록, 즉 문자 그대로 출력할 수 있는 코드를 작성해야 합니다. 그래서 '(싱글 쿼트)로 시작 문자열과 끝 문자열을 막아주면 됩니다.