이상한 요청이지만 버그가있는 Python 코드를 찾고 있습니다. 버그와 디버거에 대해 더 알고 싶습니다. 버그가있는 코드가 필요합니다. 불행히도, 필자가 작성한 모든 코드는 짧고 버그가 없습니다 (지금까지).의도적으로 버그가있는 코드 (Python)
GUI 물건이 아닌 것이 좋습니다. (배우기 만하면됩니다.)하지만 좋은 점이 있습니다. 사전에
감사
이상한 요청이지만 버그가있는 Python 코드를 찾고 있습니다. 버그와 디버거에 대해 더 알고 싶습니다. 버그가있는 코드가 필요합니다. 불행히도, 필자가 작성한 모든 코드는 짧고 버그가 없습니다 (지금까지).의도적으로 버그가있는 코드 (Python)
GUI 물건이 아닌 것이 좋습니다. (배우기 만하면됩니다.)하지만 좋은 점이 있습니다. 사전에
감사
을 찾아 버그 소스 코드에 대해 "의도적으로"정찰 할 수 있지만 (너무하고 덜 널리 사람) 주요 파이썬 프로젝트의 버그 트래커로 볼 수 있는지 확실하지 보고서에서 참조하고 버그를 디버그합니다. 그것은 윈 - 윈 상황입니다. 당신은 디버그 스킬을 획득하고 버그 (희망을 갖고)가 버그 패치를 이깁니다 :-)
디버깅은 취약점에 대한 보고서에서 버그를 찾아 내고 파악하기 전에 70 %이며, 30 % 그것을 고칠 때 성의 카드를 내리지 않는 방법을 알아내는 것. 코드에서 코드를 지적했거나 코드가 주어진 상태에서 버그가 있다고 말하면 시작한 곳보다 더 나쁜 장소에 있습니다.
로렌스의 의견은 추적되고 기록 된 무언가를 추적하고이 연습에 의미가 있기를 원한다면 현실적인 제약과 충분한 코드베이스가있는 프로젝트에서 다시 시도하십시오. 외계인 코드베이스도 퍼즐을 풀어야 할 때도 읽기 학습에 좋은 운동을합니다. 전에 나에게 몇 년을 비트 코드의
그냥 비트),
여기에 버그를 발견하는 좋은 예입니다.
methods = []
for i in range(10):
methods.append(lambda x: x + i)
print methods[0](10)
아, 조금 까다 롭습니다. 나 자신과 같은 문제가 너무 많아졌고, 나는이 특별한 실수로부터 결코 배워 보이지 않는다. :) OP가 프로그래밍에 익숙하지 않으므로 힌트 : 클로저/범위 지정에 대해 읽으십시오. – bcat
그것은 내 머리 위로 조금지나 갔다 : P. 그러나 나는 당신이 그와 같은'lambda '를 사용할 수 있다는 것을 결코 알지 못했습니다. 나는 단지 그것을 아주 제한적으로 사용했다. 그러나 나는 모든 방법에 대해 모든 방법을 안다. 19). – avacariu
문제는'i'가'lambda'의 지역 변수가 아니라는 것입니다. 따라서 상위 범위에서'i'가 나오고, 마지막 범위는'range (10)'이 반환 할 마지막 수입니다. 스코어링이 어떻게 작동하는지 배우는 것이 중요한 교훈입니다. 한 가지 방법은'methods.append ((lambda y : (lambda x : x + y)) (i))'대신에 이것을하는 것입니다. 그런 식으로 래핑 람다 함수의 로컬 범위에 값을 추가합니다. – Wolph
그냥 프로그래밍을 유지하십시오. 이 질문은 되돌아 보면 어리석은 것처럼 보일 것입니다.) – aaronasterling
(직접 버그를 식별해야하지만) : http://pypi.python.org/pypi?:action=browse&c=3&c=8 – msw
사실, 그것은 바보입니다. 지금도. "버그가있는 코드"또는 디버거에 대해 배우지 마십시오. 계속 좋은 코드를 작성하십시오. –