반응형

https://www.acmicpc.net/problem/25083

 

아래 모양의 텍스트를 출력만 하면 되는 매우 간단한 문제이다.

         ,r'"7
r`-_   ,'  ,/
 \. ". L_r'
   `~\/
      |
      |

 

Warning이 발생하는 정답 코드

print()를 여러 줄에 대해 호출하지 않기 위해 multiline string(""" """ 형태 문자열)을 사용할 수 있다.

print(
    """         ,r'"7
r`-_   ,'  ,/
 \. ". L_r'
   `~\/
      |
      |"""
)
 SyntaxWarning: invalid escape sequence '\.'

위 코드는 정답으로 동작은 하지만, SyntaxWarning이 발생한다. 그 이유는 역슬래시(\)의 존재 때문이다.

\. 는 파이썬 입장에서 볼 때 \n이나 \t 와 같은 유효한 escape sequence가 아니므로, 그냥 그 자체로 출력이 되버린다. 그러면서 만약 escape sequence를 의도한 코드라면 문제가 있다는 것을 개발자에게 알려주는 warning인 것이다.

이 문제는 아래 2가지 방법 중 하나를 택하면 풀 수 있었다.

 

정답 코드 1

print(
    """         ,r'"7
r`-_   ,'  ,/
 \\. ". L_r'
   `~\\/
      |
      |"""
)

출력될 역슬래시(\)들에 대해 제대로 escape sequence를 명시하는 방법이다(\\ 사용).

 

정답 코드 2

print(
    r"""         ,r'"7
r`-_   ,'  ,/
 \. ". L_r'
   `~\/
      |
      |"""
)

아예 모든 종류의 escape sequence를 무력화시키는 raw string 포맷을 사용하는 방법이다.

즉 역슬래시(\)가 escape character가 아닌 일반 문자로 간주된다.

반응형

+ Recent posts