1. Python / Говнокод #7701

    −91

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    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)

    Всеми любимый Дениска (автор некоторых прошлых ГК на питоне) пошёл на поправку и написал не такое вонючее говно.
    Комментировать код до сих пор отказывается, но зато стал выбирать имена для переменных получше.

    Fai, 30 Августа 2011

    Комментарии (31)
  2. Python / Говнокод #7691

    −85

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    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

    Fai, 29 Августа 2011

    Комментарии (40)
  3. Python / Говнокод #7680

    −88

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    #-----------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

    дико, дико.

    alexeypav, 28 Августа 2011

    Комментарии (7)
  4. Python / Говнокод #7640

    −97

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    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=)

    KATAJIU3ATOP, 24 Августа 2011

    Комментарии (4)
  5. Python / Говнокод #7618

    −86

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    #Ханойские башни, для ручного решения.
    
    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. Оно работает.

    Fai, 23 Августа 2011

    Комментарии (5)
  6. Python / Говнокод #7568

    −85

    1. 1
    (1 if not i%2 else 2)

    Fai, 17 Августа 2011

    Комментарии (6)
  7. Python / Говнокод #7564

    −92

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    def clean_node(node, debug=False):
        """
            Этот пример скопипащен из книги
            "Как не должен выглядеть код"
        """
        if node['sub']:
            sub = []
            num = 1
            for item in node['sub']:
                i = clean_node(item, debug)
                if i:
                    sub.append(i)
                    num += i['num']
            node['sub'] = sub
            node['num'] = num
        else:
            node['num'] = 1
        if node['deleted']:
            if node['sub']:
                return node
        else:
            return node
    
        return None

    Мне достался в наследство большой проект, в котором порой встречается вот такое. Единственное, что радует это подобные комментарии )

    kvex, 17 Августа 2011

    Комментарии (3)
  8. Python / Говнокод #7559

    −88

    1. 1
    2. 2
    exec "a" * 300000000 + " = 'FUCKING_LONG_VARIABLE'" # Создание переменной с длиннннным именем
    exec "print " + ("a" * 300000000) # Выведет 'FUCKING_LONG_VARIABLE'

    Это был эксперимент (не повторять дома!). Хотелось узнать количество значащих символов в имени переменной, оказалось что все:).
    Первая строка кода ужирает около 270 МБ памяти.

    Niceblack, 17 Августа 2011

    Комментарии (8)
  9. Python / Говнокод #7557

    −83

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    def get(a='',x=-1):
        b,c,d,e,f=a.split('\n'),[],[],0,0
        for i in range(len(b)):
            if i==0: c+=[i]; e+=len(b[i])+1; f+=len(b[i]); d+=[f]
            elif i==len(b)-1: f+=len(b[i]); d+=[f]; c+=[e]
            else: f+=len(b[i])+1; c+=[e]; d+=[f]; e+=len(b[i])+1
        for i in range(len(c)):
            if range(c[i], d[i]+1).count(x): return i

    Это код чувака, который хочет получить индекс строки по индексу символа.
    >>> get('a\nb', 0) # 0 - позиция символа "а"
    0
    >>> get('a\nb', 1) # 1 - позиция символа "\n"
    0
    >>> get('a\nb', 2) # 2 - позиция символа "b" (уже вторая строка)
    1

    Простой эквивалент кода:
    GetNewlineCount = lambda s, p: s.count('\n', 0, p)

    Niceblack, 16 Августа 2011

    Комментарии (9)
  10. Python / Говнокод #7545

    −89

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    #weather.pyw
    
    from urllib import request
    from tkinter import *
    import tkinter
    import threading
    from threading import *
    import time
    
    i = 0
    active = True
    
    def timerTick( toSleep ):
      global active
      while active:
        refreshCall(0)
        time.sleep(toSleep)
    
    
    def refreshCall(event):
      t = Thread(target = refresh)
      t.start()
    
    def refresh(*event):
      global i
      ref['text'] = str(i)
      i+=1
      r = request
      page = str(r.urlopen('http://realmeteo.ru/moscow/1/current/').read())
      temperature = page.split('</tr><tr id="num_data"><td>')[1].split(' ')[0]
      pressure = page.split('                    </td><td>')[1].split(' ')[0]
      wind = page.split('<tr id="num_data"><td></td><td>')[1].split(' ')[0]
      dest = page.split('<param name="movie" value="/.swf/wind_dir/')[1].split('.swf')[0]
      destination = ''
      for c in dest:
        if c is dest[-1]:
          destination += {'N':'Север','S':'Юг','W':'Запад','E':'Восток'}[c]
        else:
          destination += {'N':'Северо-','S':'Юго-','W':'Западо-','E':'Востоко-'}[c]
      #print( temperature, pressure, wind, destination )
      l1['text'] = 'Температура: '+temperature
      l2['text'] = 'Давление   : '+pressure
      l3['text'] = 'Сила ветра : '+wind
      l4['text'] = 'Направление: '+destination
    
    r = request
    page = str(r.urlopen('http://realmeteo.ru/moscow/1/current/').read())
    temperature = page.split('</tr><tr id="num_data"><td>')[1].split(' ')[0]
    pressure = page.split('                    </td><td>')[1].split(' ')[0]
    wind = page.split('<tr id="num_data"><td></td><td>')[1].split(' ')[0]
    dest = page.split('<param name="movie" value="/.swf/wind_dir/')[1].split('.swf')[0]
    destination = ''
    for c in dest:
      if c is dest[-1]:
        destination += {'N':'Север','S':'Юг','W':'Запад','E':'Восток'}[c]
      else:
        destination += {'N':'Северо-','S':'Юго-','W':'Западо-','E':'Востоко-'}[c]
    
    
    form = tkinter.Tk()
    l1 = Label(form,text='Температура: '+temperature,justify='left'); l1.pack()
    l2 = Label(form,text='Давление   : '+pressure,justify='left'); l2.pack()
    l3 = Label(form,text='Сила ветра : '+wind,justify='left'); l3.pack()
    l4 = Label(form,text='Направление: '+destination,justify='left'); l4.pack()
    ref = Button(form, text = 'Обновить'); ref.pack()
    
    ref.bind('<Button-1>',refreshCall)
    
    timerThread = Thread(target = timerTick, args=(5,))
    
    timerThread.start()
    
    form.mainloop()
    
    active = False

    Угадайте, с какого языка пересел автор. (не пэхапэ)

    Fai, 15 Августа 2011

    Комментарии (33)