- 1
- 2
def removeDuplicate(store):
return [x for x in store if x not in locals()['_[1]']]
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−90
def removeDuplicate(store):
return [x for x in store if x not in locals()['_[1]']]
Удаление дубликатов в списке, set(store) религия не позволила сделать:)
−85
def captions_and_translations_to_srt(captions_and_translations):
output = StringIO.StringIO()
for i in range(len(captions_and_translations)):
translation_to_srt(captions_and_translations[i][1],
captions_and_translations[i][0],
i, output)
srt = output.getvalue()
output.close()
return srt
def translation_to_srt(translation, video_caption, index, output):
subtitle_to_srt_impl(video_caption.caption_text if translation is None \
else translation.translation_text,
video_caption, index, output)
def subtitle_to_srt_impl(text, video_caption, index, output):
output.write(str(index + 1))
output.write("\n")
write_srt_time_line(video_caption, output)
output.write(text)
output.write("\n\n")
def write_srt_time_line(video_caption, output):
write_srt_time(video_caption.start_time, output)
output.write(" --> ")
write_srt_time(video_caption.end_time, output)
output.write("\n")
def write_srt_time(seconds, output):
seconds_int = int(seconds)
write_padded_num((seconds_int / 3600) % 60, 2, output)
output.write(":")
write_padded_num((seconds_int / 60) % 60, 2, output)
output.write(":")
write_padded_num(seconds_int % 60, 2, output)
output.write(",")
write_padded_num(int(seconds * 1000) % 1000, 3, output)
def write_padded_num(num, numchars, output):
strnum = str(num)
numzeros = numchars - len(strnum)
for i in range(numzeros):
output.write("0")
output.write(strnum)
Генератор SRT субтитров.
−182
HOME_DIR = "/home/user"
LAST_DIR = HOME_DIR + "/.habralast"
HTML_DIR = HOME_DIR + "/.habr.html"
SHOW_FIRST_TIME = 5
n = 1
new_addr = 0
count = 0
if os.path.isfile(LAST_DIR):
fp = open(LAST_DIR, "r")
topic1 = fp.readline()
fp.close()
last_existed = 1
else:
fp = open(LAST_DIR, "w")
topic1 = ""
fp.close()
last_existed = 0
while(1):
if n == 1:
url = "habrahabr.ru"
else: url = "habrahabr.ru/page" + str(n) + "/"
wget = "wget " + url + " -O " + HTML_DIR
try:
os.system(wget)
except:
print "Cannot connect to server"
sys.exit()
index = open(HTML_DIR, "r")
s = ' <a href="http://habrahabr.ru/'
ss = ' <a'
sss = ' <div class="published"><!-- Дата в формате ISO пихается в title -->'
for i in range(2000):
line = index.readline()
if s in line:
blog_s = line.find('">')
blog_e = line.find("</a>")
blog = line[blog_s+2:blog_e]
for j in range(50):
line = index.readline()
if ss in line:
topic_s = line.find('">')
topic_e = line.find("</a>")
topic = line[topic_s+2:topic_e]
if topic.find("</span>") != -1:
topic = topic[topic.find("</span>")+7:]
if topic != topic1:
if new_addr == 0:
fp = open(LAST_DIR, "w")
fp.write(topic)
fp.close()
new_addr = 1
print "Blog:\t" + blog
print "Topic:\t" + topic
for k in range(100):
line = index.readline()
if sss in line:
line = index.readline()
time_s = line.find("<span>")
time_e = line.find("</span>")
date = line[time_s+6:time_e]
print "Date:\t" + date + "\n"
notify = "notify-send 'Habrahabr.ru: " + blog + "' '" + topic + "\n<i>" + date + "</i>'"
os.system(notify)
count += 1
if count == SHOW_FIRST_TIME and last_existed == 0:
os.system("rm -f " + HTML_DIR)
sys.exit()
break
break
else:
os.system("rm -f " + HTML_DIR)
sys.exit()
n += 1
index.close()
http://habrahabr.ru/blogs/python/127806/
Мне нравится, когда программа/код полностью своя… понимаешь назначение каждой буквы и почему решение именно такое. В данном топике хочу предложить свой парсер топиков Хабрахабра на Python без сторонних библиотек.
При появлении нового топика — всплывающее окошко сообщает об этом.
−181
d = dialog.Dialog(dialog = "dialog")
Ехал Грека через реку
−91
def delta( listToDelta ):
result = []
lastItem = listToDelta[0]
for i, item in enumerate(listToDelta):
if i == 0:
result.append(item)
else:
result.append(item-lastItem)
lastItem = item
return result
l = [2, 4, 6, 9, 7]
print(l)
l = delta(l)
print(l)
Всеми любимый Дениска (автор некоторых прошлых ГК на питоне) пошёл на поправку и написал не такое вонючее говно.
Комментировать код до сих пор отказывается, но зато стал выбирать имена для переменных получше.
−85
m = 1
for i in range(100):
for j in range(100):
for k in range(100):
m *= i*j*k
#Почему m = 0?
Ещё один перл автора 7568 и 7545
−88
#-----------view:
def catalog(request):
subcatalog_list = SubCatalog.objects.all().order_by('index')
objects_list = Object.objects.all().order_by('subcatalog')
t = loader.get_template('catalog.html')
c = RequestContext(request, {
'subcatalog_list': subcatalog_list,
'objects_list': objects_list,
})
return HttpResponse(t.render(c))
#-----------template:
{% if subcatalog_list %}
{% for subcatalog in subcatalog_list %}
<div class="section_name clear">{{ subcatalog.name }}</div>
<div class="clear"></div>
{% if objects_list %}
{% for obj in objects_list %}
{% if obj.subcatalog.id == subcatalog.id %}
<div class="section">
<a class="clear" href="{{ obj.link }}/">{{ obj.name }}</a>
{% if obj.description %}
<div class="description">{{ obj.description|safe }}</div>
{% endif %}
{% if forloop.counter0|divisibleby:3 %}
{% endif %}
{% endif %}
{% endfor %}
{% else %}
<h2>No objects available.</h2>
{% endif %}
{% endfor %}
{% else %}
<h1>No subcatalogs available.</h1>
{% endif %}
#-------И еще печенька напоследок:
<a onclick="window.location = '/create/' + {{ subcatalog.id }} + '/'"></a>
Django
дико, дико.
−97
i = 0
t = 12
r = 0
g = 0
while r!=1:
i = i + 1
if t%i==0:
g = g + 1
if i==5000:
print t, ' - ',g
i, g = 0, 0
t = t + 1
if t==203:
r = 1
Нахождение дилителей.
Вот так-вот, человек видимо на любит юзать цикл for=)
−86
#Ханойские башни, для ручного решения.
start = [3,2,1]
a, b, c = [s for s in start], [], []
def printTower( n ):
s = ''
if n.lower() == 'a':
s = a
elif n.lower() == 'b':
s = b
elif n.lower() == 'c':
s = c
else:
raise
print(n.upper()+':',s)
def printTowers():
printTower('a')
printTower('b')
printTower('c')
def getLast( n ):
if n.lower() == 'a':
return 1000 if len(a)==0 else a[-1]
elif n.lower() == 'b':
return 1000 if len(b)==0 else b[-1]
elif n.lower() == 'c':
return 1000 if len(c)==0 else c[-1]
else:
raise
def getTower( n ):
if n.lower() == 'a':
return a
elif n.lower() == 'b':
return b
elif n.lower() == 'c':
return c
else:
raise
def moveTower():
fromP = input('С какой башни двигать?').lower()
toP = input('На какую башню двигать?').lower()
lastF = getLast(fromP)
lastT = getLast(toP)
if lastT>lastF:
getTower(toP).append(getTower(fromP).pop())
else:
raise
printTowers()
printTowers()
while b!=start:
moveTower()
Принял слабого снотворного и сел читать Корнилова (Программирование шахмат и других логических игр) (думал быстро усну, книга очень скучная).
Когда пришёл в себя увидел на экране ЭТО.
P.S. Оно работает.
−85
(1 if not i%2 else 2)