Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Socket, IP 
:(
    Опции темы
NRV
  Дата 25.9.2007, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 27.7.2007

Репутация: нет
Всего: нет



У меня система WinXP
PythonWin 2.3.5
--------------------
Вот пример простого сканера: 
(А проблема вот в чем что то он слишком медленно работает может можно как то по другому сделать. И почему он тормазит)
--------------------
Пример1: 
-----
import socket
def HostIP():
    for s in range(3):
        try:
            h = '192.168.0.%s' %s
            print socket.gethostbyaddr(h)            
        except:
            print h          
HostIP()
-----
Пример2:
(А вот так определяет быстро)
-----
import socket
def HostIP():
    for s in range(1,2):
        try:
            h = '192.168.0.%s' %s
            print socket.gethostbyaddr(h)            
        except:
            print h          
HostIP() ---- smile 
PM MAIL   Вверх
pythonwin
Дата 26.9.2007, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



в первом варианте цикл выполняется ТРИ раза, а во втором только один раз smile
читай документацию по range:

Цитата

4.3      Функции range() и xrange()
Если Вам необходимо перебирать последовательность чисел, то пригодится встроенная
функция range(). Она создает список, содержащий арифметическую прогрессию:
 >>> range(10)
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Указанная верхняя граница никогда не входит в созданную последовательность.
range(10) создает список из 10 значений, точно соответствующих допустимым ин-
дексам для элементов последовательности, имеющей длину 10. Можно указать другую
нижнюю границу или другое приращение (шаг), в том числе и отрицательное:
(в том числе и инструкция for) требует возможности получить произвольный элемент по индексу.
38                                            Глава 4. Средства управления логикой
 >>> range(5, 10)
 [5, 6, 7, 8, 9]
 >>> range(0, 10, 3)
 [0, 3, 6, 9]
 >>> range(-10, -100, -30)
 [-10, -40, -70]
     Для того, чтобы перебрать индексы последовательности, используйте совместно
range() и len():
 >>> a = [’У’, ’Марии’, ’есть’, ’маленькая’, ’овечка’]
 >>> for i in range(len(a)):
 ...       print i, a[i]
 ...
 0 У
 1 Марии
 2 есть
 3 маленькая
 4 овечка
     Дотошный читатель может заметить, что если нужно перебирать числа большого
диапазона, создание списка будет неоправданно, а в некоторых случаях просто не хватит
памяти:
 >>> l=range(10000000)
 Traceback (innermost last):
   File "<stdin>", line 1, in ?
 MemoryError
Действительно, если мы не собираемся изменять список, достаточно создать псевдоспи-
сок — объект, для которого мы можем получить значения “элементов”, но не можем
изменить их или порядок их следования. Для этих целей в языке Python предусмотрена
функция xrange():
 >>> xrange(5, 10)
 (5, 6, 7, 8, 9)
 >>> xrange(0, 10, 3)
 (0, 3, 6, 9)
 >>> xrange(-10, -100, -30)
 (-10, -40, -70)
 >>> a = [’У’, ’Марии’, ’есть’, ’маленькая’, ’овечка’]
 >>> for i in xrange(len(a)):
 ...       print i, a[i]
 ...
 0 У
 1 Марии
 2 есть
 3 маленькая
 4 овечка

PM WWW GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема »


 




[ Время генерации скрипта: 0.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.