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

    −167

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    def word(long):
       s=''
       for j in range(0,long):
          lit =  struct.unpack('c',plik.read(1))[0]
          if ord(lit)!=0:
             s+=lit
             if len(s)>300:
                break
       return s

    Запостил: WGH, 06 Июня 2011

    Комментарии (11) RSS

    • Щито делает этот код?
      Ответить
      • Питонью только начал изучать.
        s - строка. lit - как я понимаю, литерал. строка забивается символами, если это не нулевой байт.
        Если длина строки после изменения больше 300 символов, то выходим из цикла. Как-то так.
        Хочу узнать как на самом деле - пойду почитаю.
        Ответить
      • Как я понял, считывает не более чем 300 ненулевых байт из файла, да ещё так, чтобы считать не более long байт вообще.
        Ответить
    • float и int там не переопределён?
      Ответить
      • Нет, а почему возник такой вопрос?
        Ответить
        • Может, потому что "переопределён" word и long?
          Ответить
    • ''.join([item for e, item in enumerate(CHARS) if (e < 300 or e < long) and not ord(item)])

      Вот как-то так
      Ответить
      • e<300 or e<long порадовало)))))
        Ответить
      • А что такое CHARS? Вся фишка кода была в том, чтобы не прочесть больше, чем нужно, и оставить таким образом файлоподобный объект plik в конкретном состоянии. Оттуда весь изврат. Правда, я не нашел во "внешнем" коде никакого намека на необходимость этого...
        И not лишний.
        Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий