'2011/11/21'에 해당되는 글 3건

  1. 2011.11.21 [Python challenge Level15] - uzi(whom?) 2
  2. 2011.11.21 [Python challenge Level14] - italy(walk around)
  3. 2011.11.21 파이썬 – sys 모듈
2011. 11. 21. 17:36

[ Problem ]

http://huge:file@www.pythonchallenge.com/pc/return/uzi.html

§ 그림에 1월 26에 표시된 달력이 보입니다.

하지만 년도는 구멍이 나있어 정확한 년도는 보이지 않고 1xx6년 이라는 추측만 할수 있습니다.

또한 우측하단에 12월과 2월이 보이는데 정확한 숫자는 알수 없으나 2월에 29칸에 차있으므로,

이해는 윤년(leap year)임을 짐작할 수 있습니다.

 

즉, 1xx6년 1월 26일이 월요일 이며 윤년인 해로 요약할 수 있습니다

그럼 해당하는 해를 찾아 봅시다.

 

♧ 필요 메소드

 

calendar.isleap(year)

- 해당 년도가 윤년(leapyear)인지 판별 합니다.

calendar.weekday(year, month, day)

- year(1970-...), month(1-12), day(1-31)에 해당하는 요일을 반환합니다.

- 해당 요일은 월요일(0) ~ 일요일(6)로 0~6까지 'int'형을 반환.

 

♧ Source

 

[출력 결과]

 

출력결과를 보면 5개의 년도가 출력 되었다.(1176, 1356, 1576, 1756, 1976)

해당 HTML 페이지 소스에서 실마리를 찾아보자.

 

§ HTML 페이지 소스에서 힌트 찾기

 

힌트를 주석을 보면...

<!-- he ain't the youngest, he is the second -->

- 그는 최연소가 아니며 두 번째 이다?

즉 해당 년도중 가장 작은수가 아니고 끝에서 두번째인 1756년.

<!-- todo: buy flowers for tomorrow -->

- 내일을 위해 꽃을 사라? (내일... 27일)

 

해당 결과와 힌트를 조합해 보면 1756년 1월 27일이 된다.

▷ 검색해 보면 모차르트(mozart) 탄생일 이라는것을 알수 있다.

 

next challenge : mozart.html

[ Solution ]

http://huge:file@www.pythonchallenge.com/pcc/return/mozart.html

 

Posted by devanix
2011. 11. 21. 13:33

[ Problem ] - http://huge:file@www.pythonchallenge.com/pc/return/italy.html

♧ 타이틀은 walk around 이고 빵 한 개와 바코드와 비슷하게 보이는 사진이 있다.

   

▷ 소스를 보자!

   

▷ 소스를 보면 'italy.jpg'는 빵 사진이고 'wire.png'는 바코드처럼 보이는 사진이다.

'wire.png'를 클릭해보면 '10000 x 1 pixels' 이라 아무것도 보이지 않는데

이것을 잠시 size를 '100 x 100'로 바꿔 보면 (크롬의 개발자 모드)

메인과 같은 바코드와 같은 그림이 보이는 것을 알 수 있다.

   

위에 소스에서 remember 주석을 참조해 보면 아래의 그림과 같이

바깥에서 부터 100+99+99+98+98+97...과 같이 2회당 1씩 감소한다.

즉, 위의 바코드 이미지를 아래와 같이 Pixel값을 회전하면서 재배치 한다.

   

w 이를 바탕으로 소스를 짜보면 다음과 같습니다.

   

[결과 이미지]

[ 'cat.html' 접속 화면 ]

   

▷ 마지막으로 'uzi.html' 접속하면 끝.

   

[ Solution ] - http://huge:file@www.pythonchallenge.com/pcc/return/uzi.html

(※ 문제에 대한 다양한 해결법은 링크 참조.)

Posted by devanix
2011. 11. 21. 01:13

sys모듈은 파이썬 인터프리터와 관련된 정보와 기능을 제공하는 모듈이다.

 

sys.argv

 

파이썬 스크립트로 넘어온 입력인자(argument)들의 리스트.

- 아래 예제와 같이 0번째는 스크립트 이름이 있으며, 그 이후부터 인자들이 설정

[ test_argv.py 예제코드 ]

import sys

print("argv size :", len(sys.argv))

for i, arg in enumerate(sys.argv):

        print(i, arg)

 

[ 실행 결과 ]

>test_argv.py arg1

argv size : 2

0 C:\Python30\test_argv.py

1 arg1

 

 

sys.exc_info()

 

현재 발생한 예외정보를 튜플로 반환 (예외가 없는 경우 None을 반환)

[ 예외가 없는 경우 ]

>>> import sys

>>> sys.exc_info()

(None, None, None)

 

[ 예외가 발생한 경우 ]

>>> try:

    1/0

except:

    exc_class, val, tb_ob = sys.exc_info()

    print(exc_class)

    print(val)

    print(tb_ob)

    print(dir(tb_ob))

    print(tb_ob.tb_lineno)

 

    

<class 'ZeroDivisionError'>

division by zero

<traceback object at 0x00FFAAF8>

['tb_frame', 'tb_lasti', 'tb_lineno', 'tb_next']

2

 

 

sys.prefix, sys.exec_prefix, sys.executable

 

파이썬이 설치된 경로와 실행파일을 나타냅니다.

>>> sys.prefix # 파이썬이 설치된 경로

'C:\\Python3'

 

>>> sys.exec_prefix

'C:\\Python3'

 

>>> sys.executable # 파이썬 인터프리터의 실행파일 경로

'C:\\Python3\\pythonw.exe'

 

sys.exit([arg])

 

프로세스를 종료시킵니다. (arg가 0인 경우에는 정상 종료되며, 0이 아닌 경우에는 비정상종료 처리)

 

sys.getrefcount(object)

 

객체의 참조 카운트 값을 반환합니다.

일반적으로 이 값은 임시객체가 참조하는 경우도 포함되어서 1보다 크다.

>>> t = "test refcount"

>>> sys.getrefcount(t)

2

>>> t1 = t

>>> sys.getrefcount(t)

3

 

sys.getwindowsversion()

 

현재 윈도우의 버전을 튜플로 반환.

>>> sys.getwindowsversion()

sys.getwindowsversion(major=5, minor=2, build=3790, platform=2, service_pack='Service Pack 2')

 

sys.modules

 

현재 로딩되어있는 모듈들을 사전 형태로 나타냅니다.

>>> sys.modules

{'heapq': <module 'heapq' from 'C:\Python3\lib\heapq.py'>, 'tkinter.filedialog':

<module 'tkinter.filedialog' from 'C:\Python3\lib\tkinter\filedialog.py'>, 'functools':

<module 'functools' from 'C:\Python3\lib\functools.py'>, 'random': <module

'random' from 'C:\Python3\lib\random.py'>, ...<생략>...

 

sys.path

 

모듈을 찾을 때 참조하는 경로를 나타냅니다.

>>> sys.path

['C:\\Python3\\Lib\\idlelib', 'C:\\WINDOWS\\system32\\python32.zip',

'C:\\Python3\\DLLs', 'C:\\Python3\\lib', 'C:\\Python3', 'C:\\Python3\\lib\\site-packages']

 

sys.copyright, sys.version

 

설치된 파이썬의 저작권, 버전을 나타냅니다.

>>> sys.copyright

'Copyright (c) 2001-2011 Python Software Foundation.\nAll Rights Reserved.\n\nCopyright

(c) 2000 BeOpen.com.\nAll Rights Reserved.\n\nCopyright (c) 1995-2001 Corporation for

National Research Initiatives.\nAll Rights Reserved.\n\nCopyright (c) 1991-1995

Stichting Mathematisch Centrum, Amsterdam.\nAll Rights Reserved.'

 

>>> sys.version

'3.2.2 (default, Sep 4 2011, 09:51:08) [MSC v.1500 32 bit (Intel)]'

 

sys.getdefaultencoding()

 

현재 사용중인 기본 문자열 인코딩을 반환합니다.

>>> sys.getdefaultencoding()

'utf-8'

 

sys.stdin, sys.stdout, sys.stderr

 

표준 입력, 출력, 에러 스트림에 대응되는 파일 객체들을 나타냅니다.

>>> sys.stdout.write("hi python") # 표준 출력 스트림

hi python

>>> sys.stderr.write("hi python") # 표준 에러 스트림

hi python

 

'Programming > Python' 카테고리의 다른 글

파이썬 – 시간(time) 모듈  (1) 2011.11.26
파이썬 – os 모듈  (2) 2011.11.22
파이썬 – os.glob 모듈  (0) 2011.11.20
파이썬 – os.path 모듈  (2) 2011.11.20
파이썬 – 정규식표현식(Regular Expression) 모듈  (8) 2011.11.20
Posted by devanix