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

    −109

    1. 1
    2. 2
    3. 3
    4. 4
    def remove_duplicates(seq):
        seen = set()
        seen_add = seen.add
        return [x for x in seq if x not in seen and not seen_add(x)]

    замечательная функция, возвращающая уникальные элементы списка.

    python_ninja, 16 Февраля 2015

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

    −109

    1. 1
    2. 2
    if form.cleaned_data.has_key('replace_id') and type(form.cleaned_data['replace_id']) == type(32):
        ...

    Логично, чо

    larikov, 11 Февраля 2015

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

    −113

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    def convert_get_to_post(header='HTTP_X_GET_DATA'):
        def decorator(function):
            @wraps(function)
            def wrapper(request, *args, **kwargs):
                if header in request.META:
                    request.method = 'GET'
                    request.GET = request.POST
                return function(request, *args, **kwargs)
            return wrapper
        return decorator

    Как избежать проблему с большим количеством параметров в URL при GET запросе...

    winter, 27 Января 2015

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

    −110

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    # количество гласных в строке
    vowelsCount = lambda s: sum([1 for x in s if x in ['i','a','e','o','u']])
    # Вхождение подстроки в строку
    substringOccurence = lambda S,s:sum([1 for i in range(len(S) + 1 - len(s)) if S[i:i + len(s)] == s])
    g = lambda S,s:'Number of times ' + substr + ' occurs is: ' + str(substringOccurence(S,s))
    # первая из упорядоченных подстрок максимальной длины
    alpha = lambda s:  [x for x in  
       [s[i:i + j] for j in range(len(s),0,-1)for i in range(len(s) - j + 1)]
        if x == ''.join(sorted(x))][0]
    # atoi без atoi
    stringToInteger = lambda s: sum([(ord(n) - ord('0')) * (10 ** i) for i,n in enumerate(s[::-1])])

    Питонячьи извращения для одного курса или не все однострочники одинаково полезны.

    wowsuchdoge, 27 Января 2015

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

    −109

    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
    class QuerysetResponse(object):
        """
            вариант респонса для фильтрации гридов или диктселекфилдов
            используя механизм инструкций
        """
        def __init__(self, queryset, application, root=None):
    
            self.root = root or "data"
    
        def __new__(cls, *args, **kwargs):
            return super(cls, cls).__new__(cls)(*args, **kwargs)
    
        def __call__(self, queryset, application):
            dict_list = []
            pack = get_pack_instance(application)
            for item in pack.list_columns:
                if isinstance(item, (list, tuple)):
                    dict_list.append(item[0])
                elif isinstance(item, dict) and item.get('data_index'):
                    dict_list.append(item['data_index'])
            self.dict_ = dict_list
            if not queryset:
                queryset = []
    
            return PreJsonResult(dict(rows=list(queryset),
                total=len(queryset)), dict_list=self.dict_).get_http_response()

    self.root не используется, ну, это видно. QuerysetResponse "инстанцируется" во всем проекте один раз.
    Мне бы такое даже в голову не пришло.

    pycz, 21 Января 2015

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

    −124

    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
    print ("Программа вычисления номера подъезда.\nБудьте внимательны при вводе данных.\n")
    
    n_kvartiry = input("Введите номер квартиры...\n")
    n_kvartiry = int(n_kvartiry)
    
    kol_etazhey = input("Введите количество этажей в доме...\n")
    kol_etazhey = int(kol_etazhey)
    
    kol_kvartir_etazh = input("Введите количество квартир на этаже...\n")
    kol_kvartir_etazh = int(kol_kvartir_etazh)
    
    kol_kvart_pod = kol_kvartir_etazh * kol_etazhey
    result = n_kvartiry / kol_kvart_pod
    
    if result <= 1:
        print ("Номер подъезда 1")
        x=1
    elif result <= 2:
        x=2
        print ("Номер подъезда 2")
    elif result <= 3:
        x=3
        print ("Номер подъезда 3")
    elif result <= 4:
        x=4
        print ("Номер подъезда 4")
    elif result <= 5:
        x=5
        print ("Номер подъезда 5")
    elif result <= 6:
        x=6
        print ("Номер подъезда 6")
    elif result <= 7:
        x=7
        print ("Номер подъезда 7")
    elif result <= 8:
        x=8
        print ("Номер подъезда 8")
    elif result <= 9:
        x=9
        print ("Номер подъезда 9")
    elif result <= 10:
        x=10
        print ("Номер подъезда 10")
    elif result <= 11:
        x=11
        print ("Номер подъезда 11")
    elif result <= 12:
        x=12
        print ("Номер подъезда 12")
    else:
        print("Карлсон живет на крыше!!!")
        
    print ("Все квартиры в этом подъезде:")
           
    for n in range(1, kol_kvart_pod+1 ):
        res = n + kol_kvart_pod*(x-1)
        print (int(res), end=" ")

    python 3
    чисто поржать...

    chooduck, 12 Января 2015

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

    −107

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    ****@****:~$ python
    >>> import this
    The Zen of Python, by Tim Peters
    <....>There should be one-- and preferably only one --obvious way to do it.<...>
    >>> exit
    Use exit() or Ctrl-D (i.e. EOF) to exit

    preferably only one

    heyzea1, 19 Декабря 2014

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

    −111

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    def parse(file):
        if 1==1: #вырвано из другого места, лень пробелы удалять
            if file:
                try:
                    doc = ET.parse(file)
                except IOError:
                    return HttpResponse(u'nofile')

    лол

    alexscrat, 18 Декабря 2014

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

    −118

    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
    from os import walk
    from time import time
    
    from abc import ABCMeta, abstractmethod
    
    class Reporter(object):
        __metaclass__=ABCMeta
        
        @abstractmethod
        def report(self, catalogs_cntr, files_ctnr, speed):
            """ output catalogs_cntr, files_ctnr, speed to somewhere """
            #pass
        
    class ConsoleIndicator(Reporter):
        def __init__(self, out_splitter):
            self.__out_splitter=out_splitter
            
        def report(self, catalogs_cntr, files_ctnr, speed):
            if self.__out_splitter and self.__out_splitter.pipes:
                _result = "\rcataloges:" + repr(catalogs_cntr).rjust(8) 
                _result += "\tfiles:" + repr(files_ctnr).rjust(13) 
                _result += "\tspeed: %12.3f"%speed + " files/s"
                
                self.__out_splitter.write(_result)
                self.__out_splitter.flush()        
                    
    class CatalogsWalker(object):
        """ """
        
        def __init__(self, catalogs, reporter=None):
            """ """
            
            self.__files_cntr, self.__catalogs_cntr, self.__start_time, self.__speed = 0, 0, 0, 0
            self.__reporter = reporter 
            self.__catalogs = catalogs if hasattr(catalogs, "__iter__") else [catalogs]
    
            
        def __iter__(self):
            self.__files_cntr, self.__catalogs_cntr, self.__start_time, self.__speed = 0, 0, 0, 0
            self.__start_time=time()
            for catalog in self.__catalogs:
                print catalog
                for p,d,ns in walk(catalog): 
                    _ = d;
                    self.__catalogs_cntr+=1
                    for n in ns:
                        self.__files_cntr+=1
                        self.__speed=self.__files_cntr/(time()-self.__start_time)
                        if self.__reporter:
                            self.__reporter.report(self.__catalogs_cntr, self.__files_cntr, self.__speed)
                        yield p,n
                        
        @property
        def reporter(self):
            return self.__reporter
        
        @property
        def catalog_counter(self):
            return self.__catalogs_cntr    
        
        @property
        def file_counter(self):
            return self.__files_cntr
        
        @property
        def start_time(self):
            return self.__start_time
        
        @property
        def speed(self):
            return self.__speed

    По мотивам http://govnokod.ru/17181 Учтены замечания некого Анонимус http://govnokod.ru/17181#comment256577. Надеюсь что будут еще замечания, такие же конструктивные и полезные.

    apgurman, 08 Декабря 2014

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

    −121

    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
    #!/usr/bin/env python
    # encoding: utf-8
    
    import os
    import sys
    
    from sets import Set
    
    class OutputSplitter(object):
        """ splitter """
        
        def __init__(self, out_splitter):
            self.__pipes=None
            if isinstance(out_splitter, OutputSplitter):
                    self.__pipes = Set(out_splitter.pipes)
            elif out_splitter:
                print out_splitter
                if type(out_splitter) == list : #
                    for pn in out_splitter:
                        self.add_pipe(pn)
                else:
                    self.add_pipe(out_splitter)
                       
        @property
        def pipes(self):
            return self.__pipes
        
        def add_pipe(self, pn):
            if isinstance(pn, basestring):
                if pn == 'stderr': x = sys.stderr
                elif pn == 'stdout': x = sys.stdout
                else: 
                    p = os.path.dirname(pn)
                    if p and not os.path.exists(p):
                        os.makedirs(p)
                    try: 
                        x = open(pn,'w+')
                    except IOError:
                        raise
                        
            else: x = pn
            
            if hasattr(x, 'write') and hasattr(x, 'flush'):
                if self.__pipes is None:
                    self.__pipes=Set()
                self.__pipes.add(x)
        
        def write(self,s):
            if self.__pipes:
                for p in self.__pipes:
                    p.write(s)
        
        def flush(self):
            if self.__pipes:
                for p in self.__pipes:
                    p.flush()
        
        #def __enter__(self):
        #    pass         
        #def __exit__(self, exc_type, exc_value, traceback):
        #    pass
    
    if __name__ == '__main__':
        cout=sys.stdout if True else sys.stderr
        o=OutputSplitter(cout)
        pass

    Испаравленная версия по монивам http://govnokod.ru/17181. Учтены замечания некого Анонимус http://govnokod.ru/17181#comment256577. Надеюсь что будут еще замечания, такие же конструктивные и полезные.

    apgurman, 08 Декабря 2014

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