#!/usr/bin/python
# -*- coding: cp949 -*-
s = "Hello, world!"
s2 = "안녕하세요?"
#########################################
t = s[::-1] # 문자열 거꾸로 하기
t2 = s2[::-1] # 문자열 거꾸로 하기
#########################################
u = ''.join(reversed(s)) # reversed(string) 함수 사용(Python 2.4 이상 가능)
u2 = ''.join(reversed(s2)) # reversed(string) 함수 사용(Python 2.4 이상 가능)
print( "s = " + s )
print( " ---> " + "s[::-1] = " + t )
print( " " + "''.join(reversed(s)) = " + t )
print( "s2 = " + s2 )
print( " ---> " + "s2[::-1] = " + t2 )
print( " " + "''.join(reversed(s2)) = " + t2 )
#########################################
# 출력 결과(Python 2.5의 경우):
# s = Hello, world!
# ---> s[::-1] = !dlrow ,olleH
# ''.join(reversed(s)) = !dlrow ,olleH
# s2 = 안녕하세요?
# ---> s2[::-1] = ?岳세逑楹횡
# ''.join(reversed(s2)) = ?岳세逑楹횡
#########################################
# 출력 결과(Python 3.0의 경우):
# s = Hello, world!
# ---> s[::-1] = !dlrow ,olleH
# ''.join(reversed(s)) = !dlrow ,olleH
# s2 = 안녕하세요?
# ---> s2[::-1] = ?요세하녕안
# ''.join(reversed(s2)) = ?요세하녕안
위의 예제에서 보듯이
멀티바이트 유니코드의 문자열을 거꾸로 하기가 Python 3.0의 경우에는 잘 동작하지만,
Python 2.5의 경우에는 잘 동작하지 않는다.
이를 대화형 모드(inttractive mode) 파이썬에서 다시 한번 확인해 보자.
[Python 3,0의 경우]---------------------
명령 프롬프트> python
Python 3.0 (r30:67507, Dec 3 2008, 20:14:27) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> s = "한글"
>>> print( s[::-1] )
글한
>>> ^Z
----------------------------------------
[Python 2,5의 경우]---------------------
명령 프롬프트> python
Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> s = "한글"
>>> print( s[::-1] )
旁饑
>>> ^Z
----------------------------------------
[참고]
IronPython에서 실행시킬 경우 첫줄의 유닉스 shebang(#!) 줄을 제거하여 인코딩 선언
# -*- encoding: cp949 -*-
이 첫 줄에 오도록 고치면 한글도 (정상적으로) 역순으로 변환되어 출력된다.
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
'프로그래밍 > Python' 카테고리의 다른 글
Pollard's rho method 소개: 정수의 인수분해(factorizing integers) with Python (0) | 2009.03.23 |
---|---|
손으로 계산하는 긴자리 곱셈표 만들기 with Python (0) | 2009.03.06 |
손으로 만드는 나눗셈 계산표 with Python (0) | 2008.05.16 |
클래스 상속(subclassing) 예제 with Python (or Jython or IronPython) (0) | 2008.04.05 |
삼각형 출력 예제를 통한 여러 가지 소스 비교 with Python (0) | 2008.04.05 |