2010-08-10 1 views
5

Это странный запрос, но я ищу багги код Python. Я хочу узнать больше об ошибках и отладчиках, и мне нужен какой-то багги-код для работы. К сожалению, весь код, который я написал, короткий и без ошибок (до сих пор).Преднамеренно код Buggy (Python)

Предпочтительно это не GUI-материал (b/c, я только начинаю его изучать), но все хорошо.

Заранее спасибо

+13

Просто продолжайте программирование. этот вопрос будет казаться глупым в ретроспективе;) – aaronasterling

+2

Имейте это (хотя вам нужно будет идентифицировать ошибки самостоятельно): http://pypi.python.org/pypi?:action=browse&c=3&c=8 – msw

+1

Собственно, это немой даже сейчас. Не узнайте о «глючном коде» или отладчике. Продолжайте писать хороший код. –

ответ

6

Не знаете, как разведчик «преднамеренно» для исходного кода с ошибками, но вы можете посмотреть в баг-трекеров основных проектов Python (и менее распространенные из них, тоже), обратите внимание на ошибки, на которые ссылаются отчеты и их отладка. Это беспроигрышная ситуация. Вы выигрываете умение отлаживать, и они (надеюсь) выигрывают патч для ошибки :-)

0

Отладка 70% об обнаружении и выяснении ошибки из отчетов об аномалиях, прежде чем вы сможете что-нибудь сделать, и 30% о том, как не забрать замок карточек при его фиксации. Если вы указали это в коде для вас или просто получили код, и вам сказали, что он глючит, вы находитесь в худшем месте, чем там, где вы начали.

Комментарий Лоуренса - это место на IMO, выслеживайте что-то, что отслеживается и регистрируется, и вы выполняете шаги в проекте, где у вас есть реалистичные ограничения и достаточная база кода для работы, если вы хотите, чтобы это упражнение имело какое-либо значение. Будут удвоены, как хорошее упражнение в обучении, чтобы читать, когда вам нужно разгадать чужой код.

0

Вот хороший пример, место ошибка;)

Просто немного кода, который укусил меня пару лет назад.

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

print methods[0](10)      
+0

А, это немного сложно. У меня возникло слишком много таких проблем, и я никогда не учился на этой конкретной ошибке. :) Подсказка, так как OP новичок в программировании: прочитайте о закрытии/области действия. – bcat

+0

Это пошло немного над моей головой: P. Но я никогда не знал, что вы можете использовать «лямбду». Я только очень ограничил его использование. Но я вижу, что каждое число для каждого метода [n] (10) 'дает 19 ... Не знаю. – avacariu

+1

Проблема в том, что 'i' не является локальной переменной для' lambda'. Таким образом, он получает 'i' из родительской области, которая будет последним числом, возвращаемым' range (10) '. Это важный урок, чтобы узнать, как работает обзор. Один из способов сделать это: «methods.append ((lambda y: (lambda x: x + y)) (i))'. Таким образом вы добавляете значение в локальную область оберточной функции лямбда. – Wolph