Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 9, 2012 23:12:13

Dimazzzzzz
Зарегистрирован: 2012-05-06
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Простой вопрос(заклинило, не могу понять проблему)

Ed
Не торопитесь, все будет. Проанализируете. Там же тоже самое внутри, что и в ваших многочисленных переменных.

Так, следующее задание.
посмотреть на это:
1 if ty[0] == 1 or ty[1] == 1 or ty[2] == 1 or ty[3] == 1 or ty[4] == 1 else 0
И понять что же вы таким образом проверяете и как это можно записать короче. подсказка - у вас есть список ty с пятью числами. Вы проверяете есть ли в этом списке …
Есть ли в этом списке 1,2,3 и т.д.))) код сокращается вот так:
#-*- coding: cp1251 -*-
"""
Created on Tue Jun 05 19:35:11 2012
@author: Dimazzzzzz
"""#/usr/bin/python
import urllib
import numpy as np
rasnost = []
Data =[]
Blitz1 = []
Stavka2 = []
Igrok2 = []
Typs = [[]] * 10
for J in xrange(803311466, 803311500):
 url='http://www.vezetmne.ru/auctions/'+str(J)
 urllib.urlretrieve(url=url, filename='COD.html')
 infile = open('COD.html')
 lines = infile.readlines()
 print J
 for i in range(len(lines)):
    line = lines[i]# так короче
    if 'cbid=alterStep' in line:
       rasnost.append(np.float(line.strip()[24:28]))
    if 'item_bigcell' in line:
        type1 = lines[i+1].strip()[10:40]
        type2 = lines[i+2].strip()[10:40]
        type3 = lines[i+3].strip()[10:40]
        type4 = lines[i+4].strip()[10:40]
        type5 = lines[i+5].strip()[10:40]
    if 'Аукцион завершен' in line:
        Data.append(line.strip()[-28:-19])
    if 'Блиц-цена' in line:
        Origin = line.strip()[91:97]
        if '.' in Origin:
            Orig = Origin[0:5]
        else:
            Orig = Origin
        if '.' in Orig:
            AA = Orig[0:4]
        else:
            AA = Orig
        if '.' in AA:
            BB = AA[0:3]
        else:
            BB = AA
        if '.' in BB:
            Blitz1.append(np.int(BB[0:2]))
        else:
            Blitz1.append(np.int(BB))
    if '<div class="history" id="history">' in line:
       Stavka1 = lines[i+3].strip()[21:50]# stavka.append(line.strip()[21:30])
       Stavka2.append(np.float(Stavka1[0:Stavka1.find('р')]))
       Igrok1 = lines[i+3].strip()[21:-24]  # А вот для ника возьмем с минусом
       Igrok2.append(Igrok1[Stavka1.find('р')+26:])
       types = [type1, type2, type3, type4, type5]
       ty = []
       for q in range(len(types)):
           if 'Участ' in types[q]:
                ty.append(1) # Не требует свободных лотов (+)
           elif 'Кажд' in types[q]:
                ty.append(2) # Ограниченное количество ставок (+)
           elif 'Лог' in types[q]:
                ty.append(3) #'Логины зашифрованы'(+)
           elif 'Днев' in types[q]:
                ty.append(4) #'Дневной'(+)
           elif 'Один' in types[q]:
                ty.append(5) #'С блефом' (+) - Внезапно ОО
           elif 'Аукцион для' in types[q]:
                ty.append(6) #' Для новичков' (+)
           elif 'Ставк' in types[q]:
                ty.append(7) #'На понижение'
           elif 'Фикс' in types[q]:
                ty.append(8) #'Фиксированная цена'
           elif '100' in types[q]:
                ty.append(9) #'100% скидка'
           elif 'Бесп' in types[q]:
                ty.append(10) #'Бесплатные ставки'
           else:
             ty.append(0)
           
       Typs[0].append(1 if 1 in ty else 0)
       Typs[1].append(1 if 2 in ty else 0)
       Typs[2].append(1 if 3 in ty else 0)
       Typs[3].append(1 if 4 in ty else 0)
       Typs[4].append(1 if 5 in ty else 0)
       Typs[5].append(1 if 6 in ty else 0)
       Typs[6].append(1 if 7 in ty else 0)
       Typs[7].append(1 if 8 in ty else 0)
       Typs[8].append(1 if 9 in ty else 0)
       Typs[9].append(1 if 10 in ty else 0)
print rasnost, '\n', Blitz1, '\n', Stavka2, '\n', Igrok2, '\n', Data
W = np.array(rasnost)
Blitz = np.array(Blitz1) 
Stavka = np.array(Stavka2)
Mtyp1 = np.array(Typs)

Офлайн

#2 Июнь 9, 2012 23:16:40

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Простой вопрос(заклинило, не могу понять проблему)

Отлично. Можете еще сократить так:

Typs[0].append(int(1 in ty))
Если не поймете почему, то спрашивайте - объясню, но постарайтесь понять самостоятельно.

Следующее задание:
Заменить заполнение списка Typs циклом из десяти итераций. Мы подобное уже делали, попробуйте на этот раз самостоятельно.



Отредактировано Ed (Июнь 9, 2012 23:16:56)

Офлайн

#3 Июнь 9, 2012 23:30:49

Dimazzzzzz
Зарегистрирован: 2012-05-06
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Простой вопрос(заклинило, не могу понять проблему)

Ed
Отлично. Можете еще сократить так:
Typs[0].append(int(1 in ty))
Если не поймете почему, то спрашивайте - объясню, но постарайтесь понять самостоятельно.

Следующее задание:
Заменить заполнение списка Typs циклом из десяти итераций. Мы подобное уже делали, попробуйте на этот раз самостоятельно.
Почему так сократить можно - понял Потомучтно int(True) дает 1, а int(False) дает 0
По поводу цикла из 10 интераций, вот он:
#-*- coding: cp1251 -*-
"""
Created on Tue Jun 05 19:35:11 2012
@author: Dimazzzzzz
"""#/usr/bin/python
import urllib
import numpy as np
rasnost = []
Data =[]
Blitz1 = []
Stavka2 = []
Igrok2 = []
Typs = [[]] * 10
for J in xrange(803311466, 803311500):
 url='http://www.vezetmne.ru/auctions/'+str(J)
 urllib.urlretrieve(url=url, filename='COD.html')
 infile = open('COD.html')
 lines = infile.readlines()
 print J
 for i in range(len(lines)):
    line = lines[i]# так короче
    if 'cbid=alterStep' in line:
       rasnost.append(np.float(line.strip()[24:28]))
    if 'item_bigcell' in line:
        type1 = lines[i+1].strip()[10:40]
        type2 = lines[i+2].strip()[10:40]
        type3 = lines[i+3].strip()[10:40]
        type4 = lines[i+4].strip()[10:40]
        type5 = lines[i+5].strip()[10:40]
    if 'Аукцион завершен' in line:
        Data.append(line.strip()[-28:-19])
    if 'Блиц-цена' in line:
        Origin = line.strip()[91:97]
        if '.' in Origin:
            Orig = Origin[0:5]
        else:
            Orig = Origin
        if '.' in Orig:
            AA = Orig[0:4]
        else:
            AA = Orig
        if '.' in AA:
            BB = AA[0:3]
        else:
            BB = AA
        if '.' in BB:
            Blitz1.append(np.int(BB[0:2]))
        else:
            Blitz1.append(np.int(BB))
    if '<div class="history" id="history">' in line:
       Stavka1 = lines[i+3].strip()[21:50]# stavka.append(line.strip()[21:30])
       Stavka2.append(np.float(Stavka1[0:Stavka1.find('р')]))
       Igrok1 = lines[i+3].strip()[21:-24]  # А вот для ника возьмем с минусом
       Igrok2.append(Igrok1[Stavka1.find('р')+26:])
       types = [type1, type2, type3, type4, type5]
       ty = []
       for q in range(len(types)):
           if 'Участ' in types[q]:
                ty.append(1) # Не требует свободных лотов (+)
           elif 'Кажд' in types[q]:
                ty.append(2) # Ограниченное количество ставок (+)
           elif 'Лог' in types[q]:
                ty.append(3) #'Логины зашифрованы'(+)
           elif 'Днев' in types[q]:
                ty.append(4) #'Дневной'(+)
           elif 'Один' in types[q]:
                ty.append(5) #'С блефом' (+) - Внезапно ОО
           elif 'Аукцион для' in types[q]:
                ty.append(6) #' Для новичков' (+)
           elif 'Ставк' in types[q]:
                ty.append(7) #'На понижение'
           elif 'Фикс' in types[q]:
                ty.append(8) #'Фиксированная цена'
           elif '100' in types[q]:
                ty.append(9) #'100% скидка'
           elif 'Бесп' in types[q]:
                ty.append(10) #'Бесплатные ставки'
           else:
             ty.append(0)
       for u in range(len(Typs)):     
           Typs[u].append(int(u in ty))
print rasnost, '\n', Blitz1, '\n', Stavka2, '\n', Igrok2, '\n', Data
W = np.array(rasnost)
Blitz = np.array(Blitz1) 
Stavka = np.array(Stavka2)
Mtyp1 = np.array(Typs)
Данные вроде верные выводит
Я тут подумал пока: там не u+1 писать нужно?
Typs[u].append(int(u in ty))
незнаю откуда верные Оо может запомнил их тогда плохо))

Отредактировано Dimazzzzzz (Июнь 9, 2012 23:44:50)

Офлайн

#4 Июнь 9, 2012 23:35:17

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Простой вопрос(заклинило, не могу понять проблему)

Видите, как все хорошо складывается. То ли еще будет :)

Следующее задание - заменить использование переменных type1-type5 заполнением списка types.



Офлайн

#5 Июнь 9, 2012 23:43:53

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Простой вопрос(заклинило, не могу понять проблему)

Dimazzzzzz
Данные вроде верные выводит :)
Я тут подумал пока: там не u+1 писать нужно?
Да, совершено верно. Нужно u+1. Откуда тогда верные данные?



Офлайн

#6 Июнь 9, 2012 23:45:33

Dimazzzzzz
Зарегистрирован: 2012-05-06
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Простой вопрос(заклинило, не могу понять проблему)

Ed
Видите, как все хорошо складывается. То ли еще будет

Следующее задание - заменить использование переменных type1-type5 заполнением списка types.
Готово:
 urllib.urlretrieve(url=url, filename='COD.html')
 infile = open('COD.html')
 lines = infile.readlines()
 print J
 for i in range(len(lines)):
    line = lines[i]# так короче
    if 'cbid=alterStep' in line:
       rasnost.append(np.float(line.strip()[24:28]))
    if 'item_bigcell' in line:
        types = []
        types.append(lines[i+1].strip()[10:40])
        types.append(lines[i+2].strip()[10:40])
        types.append(lines[i+3].strip()[10:40])
        types.append(lines[i+4].strip()[10:40])
        types.append(lines[i+5].strip()[10:40])
    if 'Аукцион завершен' in line:
        Data.append(line.strip()[-28:-19])
    if 'Блиц-цена' in line:
        Origin = line.strip()[91:97]
        if '.' in Origin:
            Orig = Origin[0:5]
        else:
            Orig = Origin
        if '.' in Orig:
            AA = Orig[0:4]
        else:
            AA = Orig
        if '.' in AA:
            BB = AA[0:3]
        else:
            BB = AA
        if '.' in BB:
            Blitz1.append(np.int(BB[0:2]))
        else:
            Blitz1.append(np.int(BB))
    if '<div class="history" id="history">' in line:
       Stavka1 = lines[i+3].strip()[21:50]# stavka.append(line.strip()[21:30])
       Stavka2.append(np.float(Stavka1[0:Stavka1.find('р')]))
       Igrok1 = lines[i+3].strip()[21:-24]  # А вот для ника возьмем с минусом
       Igrok2.append(Igrok1[Stavka1.find('р')+26:])
       ty = []
       for q in range(len(types)):
           if 'Участ' in types[q]:
                ty.append(1) # Не требует свободных лотов (+)
           elif 'Кажд' in types[q]:
                ty.append(2) # Ограниченное количество ставок (+)
           elif 'Лог' in types[q]:
                ty.append(3) #'Логины зашифрованы'(+)
           elif 'Днев' in types[q]:
                ty.append(4) #'Дневной'(+)
           elif 'Один' in types[q]:
                ty.append(5) #'С блефом' (+) - Внезапно ОО
           elif 'Аукцион для' in types[q]:
                ty.append(6) #' Для новичков' (+)
           elif 'Ставк' in types[q]:
                ty.append(7) #'На понижение'
           elif 'Фикс' in types[q]:
                ty.append(8) #'Фиксированная цена'
           elif '100' in types[q]:
                ty.append(9) #'100% скидка'
           elif 'Бесп' in types[q]:
                ty.append(10) #'Бесплатные ставки'
           else:
             ty.append(0)
       for u in range(len(Typs)):     
           Typs[u].append(int(u+1 in ty))
print rasnost, '\n', Blitz1, '\n', Stavka2, '\n', Igrok2, '\n', Data
W = np.array(rasnost)
Blitz = np.array(Blitz1) 
Stavka = np.array(Stavka2)
Mtyp1 = np.array(Typs)

Отредактировано Dimazzzzzz (Июнь 9, 2012 23:45:54)

Офлайн

#7 Июнь 9, 2012 23:52:59

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Простой вопрос(заклинило, не могу понять проблему)

Ну в общем-то append там не нужен. Вы же пишете

a = [0,1,2,3]
, вот и здесь так же, только вместо цифр будет то, что вам нужно.



Офлайн

#8 Июнь 9, 2012 23:57:54

Dimazzzzzz
Зарегистрирован: 2012-05-06
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Простой вопрос(заклинило, не могу понять проблему)

Ed
Ну в общем-то append там не нужен. Вы же пишете
a = [0,1,2,3]
, вот и здесь так же, только вместо цифр будет то, что вам нужно.
Тогда вот так вроде:
#-*- coding: cp1251 -*-
"""
Created on Tue Jun 05 19:35:11 2012
@author: Dimazzzzzz
"""#/usr/bin/python
import urllib
import numpy as np
rasnost = []
Data =[]
Blitz1 = []
Stavka2 = []
Igrok2 = []
Typs = [[]] * 10
for J in xrange(803311466, 803311500):
 url='http://www.vezetmne.ru/auctions/'+str(J)
 urllib.urlretrieve(url=url, filename='COD.html')
 infile = open('COD.html')
 lines = infile.readlines()
 print J
 for i in range(len(lines)):
    line = lines[i]# так короче
    if 'cbid=alterStep' in line:
       rasnost.append(np.float(line.strip()[24:28]))
    if 'item_bigcell' in line:
        types = [lines[i+1].strip()[10:40], lines[i+2].strip()[10:40], lines[i+3].strip()[10:40], lines[i+4].strip()[10:40], lines[i+5].strip()[10:40]]
    if 'Аукцион завершен' in line:
        Data.append(line.strip()[-28:-19])
    if 'Блиц-цена' in line:
        Origin = line.strip()[91:97]
        if '.' in Origin:
            Orig = Origin[0:5]
        else:
            Orig = Origin
        if '.' in Orig:
            AA = Orig[0:4]
        else:
            AA = Orig
        if '.' in AA:
            BB = AA[0:3]
        else:
            BB = AA
        if '.' in BB:
            Blitz1.append(np.int(BB[0:2]))
        else:
            Blitz1.append(np.int(BB))
    if '<div class="history" id="history">' in line:
       Stavka1 = lines[i+3].strip()[21:50]# stavka.append(line.strip()[21:30])
       Stavka2.append(np.float(Stavka1[0:Stavka1.find('р')]))
       Igrok1 = lines[i+3].strip()[21:-24]  # А вот для ника возьмем с минусом
       Igrok2.append(Igrok1[Stavka1.find('р')+26:])
       ty = []
       for q in range(len(types)):
           if 'Участ' in types[q]:
                ty.append(1) # Не требует свободных лотов (+)
           elif 'Кажд' in types[q]:
                ty.append(2) # Ограниченное количество ставок (+)
           elif 'Лог' in types[q]:
                ty.append(3) #'Логины зашифрованы'(+)
           elif 'Днев' in types[q]:
                ty.append(4) #'Дневной'(+)
           elif 'Один' in types[q]:
                ty.append(5) #'С блефом' (+) - Внезапно ОО
           elif 'Аукцион для' in types[q]:
                ty.append(6) #' Для новичков' (+)
           elif 'Ставк' in types[q]:
                ty.append(7) #'На понижение'
           elif 'Фикс' in types[q]:
                ty.append(8) #'Фиксированная цена'
           elif '100' in types[q]:
                ty.append(9) #'100% скидка'
           elif 'Бесп' in types[q]:
                ty.append(10) #'Бесплатные ставки'
           else:
             ty.append(0)
       for u in range(len(Typs)):     
           Typs[u].append(int(u+1 in ty))
print rasnost, '\n', Blitz1, '\n', Stavka2, '\n', Igrok2, '\n', Data
W = np.array(rasnost)
Blitz = np.array(Blitz1) 
Stavka = np.array(Stavka2)
Mtyp1 = np.array(Typs)

Офлайн

#9 Июнь 10, 2012 00:03:25

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Простой вопрос(заклинило, не могу понять проблему)

Хорошо. Теперь нужно сократить цикл заполнения ty. Здесь нам понадобится вот такой вот списочек:

keywords = ['Участ', 'Кажд', 'Лог' ....ну и так далее]
Используя цикл for num, keyword in enumerate(keywords):
можно эту задачу решить.



Отредактировано Ed (Июнь 10, 2012 00:04:38)

Офлайн

#10 Июнь 10, 2012 00:20:23

Dimazzzzzz
Зарегистрирован: 2012-05-06
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Простой вопрос(заклинило, не могу понять проблему)

Ed
Хорошо. Теперь нужно сократить цикл заполнения ty. Здесь нам понадобится вот такой вот списочек:
keywords = ['Участ', 'Кажд', 'Лог' ....ну и так далее]
Используя цикл for num, keyword in enumerate(keywords):
можно эту задачу решить.
Блин вот тут уже сложнее, список создал вот такой:
#-*- coding: cp1251 -*-
"""
Created on Tue Jun 05 19:35:11 2012
@author: Dimazzzzzz
"""#/usr/bin/python
import urllib
import numpy as np
rasnost = []
Data =[]
Blitz1 = []
Stavka2 = []
Igrok2 = []
Typs = [[]] * 10
for J in xrange(803311466, 803311500):
 url='http://www.vezetmne.ru/auctions/'+str(J)
 urllib.urlretrieve(url=url, filename='COD.html')
 infile = open('COD.html')
 lines = infile.readlines()
 print J
 for i in range(len(lines)):
    line = lines[i]# так короче
    if 'cbid=alterStep' in line:
       rasnost.append(np.float(line.strip()[24:28]))
    if 'item_bigcell' in line:
        types = [lines[i+1].strip()[10:40], lines[i+2].strip()[10:40], lines[i+3].strip()[10:40], lines[i+4].strip()[10:40], lines[i+5].strip()[10:40]]
    if 'Аукцион завершен' in line:
        Data.append(line.strip()[-28:-19])
    if 'Блиц-цена' in line:
        Origin = line.strip()[91:97]
        if '.' in Origin:
            Orig = Origin[0:5]
        else:
            Orig = Origin
        if '.' in Orig:
            AA = Orig[0:4]
        else:
            AA = Orig
        if '.' in AA:
            BB = AA[0:3]
        else:
            BB = AA
        if '.' in BB:
            Blitz1.append(np.int(BB[0:2]))
        else:
            Blitz1.append(np.int(BB))
    if '<div class="history" id="history">' in line:
       Stavka1 = lines[i+3].strip()[21:50]# stavka.append(line.strip()[21:30])
       Stavka2.append(np.float(Stavka1[0:Stavka1.find('р')]))
       Igrok1 = lines[i+3].strip()[21:-24]  # А вот для ника возьмем с минусом
       Igrok2.append(Igrok1[Stavka1.find('р')+26:])
       ty = []
       keywords = ['Участ', 'Кажд', 'Лог', 'Днев', 'Один', 'Аукцион для', 'Ставок', 'Фикс', '100', 'Бесп']
       for q in range(len(types)):
           for num, keyword in enumerate(keywords):
               ty.append(num)
           #if 'Участ' in types[q]:
                 # Не требует свободных лотов (+)
           #elif 'Кажд' in types[q]:
               # ty.append(2) # Ограниченное количество ставок (+)
           #elif 'Лог' in types[q]:
               # ty.append(3) #'Логины зашифрованы'(+)
           #elif 'Днев' in types[q]:
               # ty.append(4) #'Дневной'(+)
           #elif 'Один' in types[q]:
               # ty.append(5) #'С блефом' (+) - Внезапно ОО
          # elif 'Аукцион для' in types[q]:
                #ty.append(6) #' Для новичков' (+)
          # elif 'Ставк' in types[q]:
              #  ty.append(7) #'На понижение'
          # elif 'Фикс' in types[q]:
               # ty.append(8) #'Фиксированная цена'
          # elif '100' in types[q]:
               # ty.append(9) #'100% скидка'
           #elif 'Бесп' in types[q]:
               # ty.append(10) #'Бесплатные ставки'
         # else:
           #  ty.append(0)
       for u in range(len(Typs)):     
           Typs[u].append(int(u+1 in ty))
print rasnost, '\n', Blitz1, '\n', Stavka2, '\n', Igrok2, '\n', Data
W = np.array(rasnost)
Blitz = np.array(Blitz1) 
Stavka = np.array(Stavka2)
Mtyp1 = np.array(Typs)
Я немного не представляю, ведь первый номер num - это 0, получается если он найдет “участ”, то присвоит 0. Какой keyword надо туда вставить, чтобы он означал все остальное, кроме этих ключевых слов?
P.S. Поздравляю с 1000 и золотой полоской заранее )))))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version