2010-08-10 5 views
5

이상한 요청이지만 버그가있는 Python 코드를 찾고 있습니다. 버그와 디버거에 대해 더 알고 싶습니다. 버그가있는 코드가 필요합니다. 불행히도, 필자가 작성한 모든 코드는 짧고 버그가 없습니다 (지금까지).의도적으로 버그가있는 코드 (Python)

GUI 물건이 아닌 것이 좋습니다. (배우기 만하면됩니다.)하지만 좋은 점이 있습니다. 사전에

감사

+13

그냥 프로그래밍을 유지하십시오. 이 질문은 되돌아 보면 어리석은 것처럼 보일 것입니다.) – aaronasterling

+2

(직접 버그를 식별해야하지만) : http://pypi.python.org/pypi?:action=browse&c=3&c=8 – msw

+1

사실, 그것은 바보입니다. 지금도. "버그가있는 코드"또는 디버거에 대해 배우지 마십시오. 계속 좋은 코드를 작성하십시오. –

답변

6

을 찾아 버그 소스 코드에 대해 "의도적으로"정찰 할 수 있지만 (너무하고 덜 널리 사람) 주요 파이썬 프로젝트의 버그 트래커로 볼 수 있는지 확실하지 보고서에서 참조하고 버그를 디버그합니다. 그것은 윈 - 윈 상황입니다. 당신은 디버그 스킬을 획득하고 버그 (희망을 갖고)가 버그 패치를 이깁니다 :-)

0

디버깅은 취약점에 대한 보고서에서 버그를 찾아 내고 파악하기 전에 70 %이며, 30 % 그것을 고칠 때 성의 카드를 내리지 않는 방법을 알아내는 것. 코드에서 코드를 지적했거나 코드가 주어진 상태에서 버그가 있다고 말하면 시작한 곳보다 더 나쁜 장소에 있습니다.

로렌스의 의견은 추적되고 기록 된 무언가를 추적하고이 연습에 의미가 있기를 원한다면 현실적인 제약과 충분한 코드베이스가있는 프로젝트에서 다시 시도하십시오. 외계인 코드베이스도 퍼즐을 풀어야 할 때도 읽기 학습에 좋은 운동을합니다. 전에 나에게 몇 년을 비트 코드의

그냥 비트),

0

여기에 버그를 발견하는 좋은 예입니다.

methods = []      
for i in range(10):       
    methods.append(lambda x: x + i)   

print methods[0](10)      
+0

아, 조금 까다 롭습니다. 나 자신과 같은 문제가 너무 많아졌고, 나는이 특별한 실수로부터 결코 배워 보이지 않는다. :) OP가 프로그래밍에 익숙하지 않으므로 힌트 : 클로저/범위 지정에 대해 읽으십시오. – bcat

+0

그것은 내 머리 위로 조금지나 갔다 : P. 그러나 나는 당신이 그와 같은'lambda '를 사용할 수 있다는 것을 결코 알지 못했습니다. 나는 단지 그것을 아주 제한적으로 사용했다. 그러나 나는 모든 방법에 대해 모든 방법을 안다. 19). – avacariu

+1

문제는'i'가'lambda'의 지역 변수가 아니라는 것입니다. 따라서 상위 범위에서'i'가 나오고, 마지막 범위는'range (10)'이 반환 할 마지막 수입니다. 스코어링이 어떻게 작동하는지 배우는 것이 중요한 교훈입니다. 한 가지 방법은'methods.append ((lambda y : (lambda x : x + y)) (i))'대신에 이것을하는 것입니다. 그런 식으로 래핑 람다 함수의 로컬 범위에 값을 추가합니다. – Wolph