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

    −105

    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
    #!/usr/bin/env python3
    #-*- coding: utf-8 -*-
    
    import socket
    print('Please wait... i think ;)')
    #port = 443
    a = range(200)
    b = list(a)
    hosts = ['mrim'+str(iter_host)+'.mail.ru' for iter_host in b]
    host_list = []
    ix = 0
    for host in hosts:
    	try:
    		host_list.append(socket.gethostbyname_ex(host))
    		sl=[('IP: ',hostl[2],' Host: ',hostl[0]) for hostl in host_list]
    	except socket.error:
    		pass
    while host_list != []:
    	try:
    		print(sl[ix])
    		ix += 1
    	except IndexError:
    		break
    print('Done! Good luck ;)')
    waiting = input() #for mustdie

    я старался ;)

    Запостил: fess, 15 Октября 2012

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

    • Синтетика? Нафиг.
      Ответить
      • мне в керио агент рубануть понадобилось...
        Ответить
        • ['mrim'+str(iter_host)+'.mail.ru' for iter_host in b]
          ...
          except IndexError:
          	break

          Кхм, ты хочешь сказать что знаешь про генераторы и исключения, но не знаешь про цикл "for item in iterable"?
          Не верю.
          Ответить
          • прочитал пол книги Луца, с программированием до этого никак связан не был, хз мож чето недопонял.
            Ответить
            • import socket
              for i in xrange(200):
                  host = 'mrim{0}.mail.ru'.format(i)
                  try:
                      info = socket.gethostbyname_ex(host)
                  except socket.error as E:
                      pass
                  else:
                      for ip in info[2]:
                          print 'IP: {ip} Host: {host}'.format(ip=ip, host=host)


              Я бы написал так, вот только один фиг mrim*.mail.ru не резолвится.
              Резолвится только mrim.mail.ru
              Ответить
              • такой вариант решения я не знал, и раз input() ненравиться тогда и выводить ничего не надо в терминал, сразу в файл пускай сливает, просто я не стал загоняться, так как скрипт был расчитан на одноразовое использование и реализация вполне удовлетворила потребность.
                Ответить
                • а суть примерно та же, только заверни весь код в работу с файлом
                  with open("filename.txt", "wt") as f:
                  ....
                  да поправь print на f.write('IP: {ip} Host: {host}\n'.format(ip=ip, host=host))
                  Ответить
                  • Виндовый шел тоже может в перенаправление стандартного вывода, так что можно не оборачивать
                    Ответить
                  • Извините за оффтоп, но как тут расценивать плюсы/минусы поста? чем гавёней код тем больше плюсов? либо расценивать все буквально?
                    Ответить
                    • Я понимаю так:
                      минус - значит код либо нормальный, либо баян, либо выглядит искуственно, как выхлоп кодо-генератора или попытка сделать нарочито плохо.
                      плюс - значит код прекрасен в своем уродстве.

                      Ну и стадный эффект никто не отменял...
                      Ответить
                      • я придерживался приблизительно такого же мнения.
                        Ответить
              • это руками питонера?
                Ответить
                • питонисты бы одобрили
                  Ответить
                  • но мы находимся на проекте, где приветствуется код, специфического содержания, но я не против критики, делаю выводы.
                    Ответить
        • Там нет правил со звёздочками?
          Ответить
          • Есть, но в данном случае - это не выход!
            Ответить
    • Хотя input для паузы позабавил, да.
      Equivalent to eval(raw_input(prompt)). It expects a valid Python expression as input; if the input is not syntactically valid, a SyntaxError will be raised.
      Ответить
      • альтернативу в студию, пожалуйста
        Ответить
        • <EBП>В визуал-студию?</EBП>
          Ответить
        • ну хотя бы raw_input(). Он не парсит вводимую строку, а тупо запоминает её. Т.е. если скормить 2+2 input()'у, получишь на выходе 4, а если raw_input()'у - '2+2'.
          Если надо ждать именно нажатия клавиши, то можно залезть в дебри (вроде msvcrt.getwch() под винду или библиотеки curses).

          А вообще я такие вещи стараюсь по возможности возложить на шелл.
          Все равно потом во многих случаях требуется вызывать скрипт в пакетном режиме с перенаправлением, и все эти ожидания пользовательского ввода будут только мешать.
          Ответить
          • row_input() на сколько я осведомлен - это Python2 , я учу Python3 и там рекомендуют забыть про роу... благодарю за столь пристальное внимание и корректировку.
            Ответить
            • А. В третьем да, там input() работает как во втором raw_input(). Я просто пишу на втором.
              Нафига так извратились во втором я сам не знаю.
              Ответить
              • сейчас этот код в песочнице на хабре (НЛО не посмело ;) ), если вышлют инвайт, будет реально интересно , что люди от туда напишут...
                Ответить
    • >я старался ;)
      Молоца.
      Ответить
    • > #!/usr/bin/env python3
      это таки самий кошегний способ, да?
      Ответить
    • while host_list != []:
      try:
      print(sl[ix])
      ix += 1
      except IndexError:
      break

      убило просто
      Ответить
      • сам балдею)
        Ответить
      • странно , что как раз на этом блоке никто изначально не заострил внимание)
        Ответить

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