Змея / Говнокод #11922 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 fess, (Updated )

Комментарии (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.
    Ответить
      • ну хотя бы raw_input(). Он не парсит вводимую строку, а тупо запоминает её. Т.е. если скормить 2+2 input()'у, получишь на выходе 4, а если raw_input()'у - '2+2'.
        Если надо ждать именно нажатия клавиши, то можно залезть в дебри (вроде msvcrt.getwch() под винду или библиотеки curses).

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

    убило просто
    Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8