Форум сайта python.su
0
EdСправился
Ну, код конечно серьезный. Давайте пооптимизируем, может чего получше сделаем. Для начала давайте избавимся от 10 списков Typ1 - Typ10. Вместо этого попользуем один двумерный, вот такой:Typs = [[]] * 10
И добавлять в него нужно так:Typs[0].append(...
Справитесь?
Теперь все данные загнались в одну переменную Typs
Офлайн
13
Показывайте. после каждого изменения проверяйте работает ли код. Обязательно.
Офлайн
0
EdРаботает конечно) я уже привык проверять за месяц изучения питона и написания данной проги. Вот новый код, я тут еще по ходу дату добавил. Преобразование в массив пока закомментил, может какой лучше способ найдется.
Показывайте. после каждого изменения проверяйте работает ли код. Обязательно.
#-*- 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(803311460, 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:]) if 'Участ' in type1: ty1 = 1 # Не требует свободных лотов (+) elif 'Кажд' in type1: ty1 = 2 # Ограниченное количество ставок (+) elif 'Лог' in type1: ty1 = 3 #'Логины зашифрованы'(+) elif 'Днев' in type1: ty1 = 4 #'Дневной'(+) elif 'Один' in type1: ty1 = 5 #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in type1: ty1 = 6 #' Для новичков' (+) elif 'Ставк' in type1: ty1 = 7 #'На понижение' elif 'Фикс' in type1: ty1 = 8 #'Фиксированная цена' elif '100' in type1: ty1 = 9 #'100% скидка' elif 'Бесп' in type1: ty1 = 10 #'Бесплатные ставки' else: ty1 = 0 if 'Участ' in type2: ty2 = 1 # Не требует свободных лотов (+) elif 'Кажд' in type2: ty2 = 2 # Ограниченное количество ставок (+) elif 'Лог' in type2: ty2 = 3 #'Логины зашифрованы'(+) elif 'Днев' in type2: ty2 = 4 #'Дневной'(+) elif 'Один' in type2: ty2 = 5 #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in type2: ty2 = 6 #' Для новичков' (+) elif 'Ставк' in type2: ty2 = 7 #'На понижение' elif 'Фикс' in type2: ty2 = 8 #'Фиксированная цена' elif '100' in type2: ty2 = 9 #'100% скидка' elif 'Бесп' in type2: ty2 = 10 #'Бесплатные ставки' else: ty2 = 0 if 'Участ' in type3: ty3 = 1 # Не требует свободных лотов (+) elif 'Кажд' in type3: ty3 = 2 # Ограниченное количество ставок (+) elif 'Лог' in type3: ty3 = 3 #'Логины зашифрованы'(+) elif 'Днев' in type3: ty3 = 4 #'Дневной'(+) elif 'Один' in type3: ty3 = 5 #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in type3: ty3 = 6 #' Для новичков' (+) elif 'Ставк' in type3: ty3 = 7 #'На понижение' elif 'Фикс' in type3: ty3 = 8 #'Фиксированная цена' elif '100' in type3: ty3 = 9 #'100% скидка' elif 'Бесп' in type3: ty3 = 10 #'Бесплатные ставки' else: ty3 = 0 if 'Участ' in type4: ty4 = 1 # Не требует свободных лотов (+) elif 'Кажд' in type4: ty4 = 2 # Ограниченное количество ставок (+) elif 'Лог' in type4: ty4 = 3 #'Логины зашифрованы'(+) elif 'Днев' in type4: ty4 = 4 #'Дневной'(+) elif 'Один' in type4: ty4 = 5 #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in type4: ty4 = 6 #' Для новичков' (+) elif 'Ставк' in type4: ty4 = 7 #'На понижение' elif 'Фикс' in type4: ty4 = 8 #'Фиксированная цена' elif '100' in type4: ty4 = 9 #'100% скидка' elif 'Бесп' in type4: ty4 = 10 #'Бесплатные ставки' else: ty4 = 0 if 'Участ' in type5: ty5 = 1 # Не требует свободных лотов (+) elif 'Кажд' in type5: ty5 = 2 # Ограниченное количество ставок (+) elif 'Лог' in type5: ty5 = 3 #'Логины зашифрованы'(+) elif 'Днев' in type5: ty5 = 4 #'Дневной'(+) elif 'Один' in type5: ty5 = 5 #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in type5: ty5 = 6 #' Для новичков' (+) elif 'Ставк' in type5: ty5 = 7 #'На понижение' elif 'Фикс' in type5: ty5 = 8 #'Фиксированная цена' elif '100' in type5: ty5 = 9 #'100% скидка' elif 'Бесп' in type5: ty5 = 10 #'Бесплатные ставки' else: ty5 = 0 Typs[0].append((1 if ty1 == 1 or ty2 == 1 or ty3 == 1 or ty4 == 1 or ty5 == 1 else 0)) Typs[1].append((1 if ty1 == 2 or ty2 == 2 or ty3 == 2 or ty4 == 2 or ty5 == 2 else 0)) Typs[2].append((1 if ty1 == 3 or ty2 == 3 or ty3 == 3 or ty4 == 3 or ty5 == 3 else 0)) Typs[3].append((1 if ty1 == 4 or ty2 == 4 or ty3 == 4 or ty4 == 4 or ty5 == 4 else 0)) Typs[4].append((1 if ty1 == 5 or ty2 == 5 or ty3 == 5 or ty4 == 5 or ty5 == 5 else 0)) Typs[5].append((1 if ty1 == 6 or ty2 == 6 or ty3 == 6 or ty4 == 6 or ty5 == 6 else 0)) Typs[6].append((1 if ty1 == 7 or ty2 == 7 or ty3 == 7 or ty4 == 7 or ty5 == 7 else 0)) Typs[7].append((1 if ty1 == 8 or ty2 == 8 or ty3 == 8 or ty4 == 8 or ty5 == 8 else 0)) Typs[8].append((1 if ty1 == 9 or ty2 == 9 or ty3 == 9 or ty4 == 9 or ty5 == 9 else 0)) Typs[9].append((1 if ty1 == 10 or ty2 == 10 or ty3 == 10 or ty4 == 10 or ty5 == 10 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(Typ1) #Mtyp1 = np.array(Typ1) #Mtyp2 = np.array(Typ2) #Mtyp3 = np.array(Typ3) #Mtyp4 = np.array(Typ4) #Mtyp5 = np.array(Typ5) #Mtyp6 = np.array(Typ6) #Mtyp7 = np.array(Typ7) #Mtyp8 = np.array(Typ8) #Mtyp9 = np.array(Typ9) #Mtyp10 = np.array(Typ10)
Офлайн
13
Хорошо. Следующее задание - заменить 5 одинаковых блоков кода типа
if 'Участ' in type1:
ty1 = 1 # Не требует свободных лотов (+)
elif 'Кажд' in type1:
ty1 = 2 # Ограниченное количество ставок (+)
elif 'Лог' in type1:
ty1 = 3 #'Логины зашифрованы'(+)
elif 'Днев' in type1:
ty1 = 4 #'Дневной'(+)
elif 'Один' in type1:
ty1 = 5 #'С блефом' (+) - Внезапно ОО
elif 'Аукцион для' in type1:
ty1 = 6 #' Для новичков' (+)
elif 'Ставк' in type1:
ty1 = 7 #'На понижение'
elif 'Фикс' in type1:
ty1 = 8 #'Фиксированная цена'
elif '100' in type1:
ty1 = 9 #'100% скидка'
elif 'Бесп' in type1:
ty1 = 10 #'Бесплатные ставки'
else:
ty1 = 0
Офлайн
0
EdЗапутался)) Очень много переменных, сам начинаю в них теряться… Непонятно как тогда будет проверяться условие вот тут:
Хорошо. Следующее задание - заменить 5 одинаковых блоков кода типана цикл из 5ти итераций. результаты складывать в список ty.if 'Участ' in type1:
ty1 = 1 # Не требует свободных лотов (+)
elif 'Кажд' in type1:
ty1 = 2 # Ограниченное количество ставок (+)
elif 'Лог' in type1:
ty1 = 3 #'Логины зашифрованы'(+)
elif 'Днев' in type1:
ty1 = 4 #'Дневной'(+)
elif 'Один' in type1:
ty1 = 5 #'С блефом' (+) - Внезапно ОО
elif 'Аукцион для' in type1:
ty1 = 6 #' Для новичков' (+)
elif 'Ставк' in type1:
ty1 = 7 #'На понижение'
elif 'Фикс' in type1:
ty1 = 8 #'Фиксированная цена'
elif '100' in type1:
ty1 = 9 #'100% скидка'
elif 'Бесп' in type1:
ty1 = 10 #'Бесплатные ставки'
else:
ty1 = 0
В результате вместо 5ти переменных ty1-ty5 должен получиться список ty из 5 элементов. Вперед!
Typs[0].append((1 if ty[1] == 1 or ty2 == 1 or ty3 == 1 or ty4 == 1 or ty5 == 1 else 0)) Typs[1].append((1 if ty[1] == 2 or ty2 == 2 or ty3 == 2 or ty4 == 2 or ty5 == 2 else 0)) Typs[2].append((1 if ty[1] == 3 or ty2 == 3 or ty3 == 3 or ty4 == 3 or ty5 == 3 else 0)) Typs[3].append((1 if ty[1] == 4 or ty2 == 4 or ty3 == 4 or ty4 == 4 or ty5 == 4 else 0))
Отредактировано Dimazzzzzz (Июнь 9, 2012 20:54:20)
Офлайн
13
Хорошо, давайте тогда по частям. Сделайте для начала сам цикл и покажите что получилось. То, что дальше сделаем потом.
Офлайн
0
Ed
Хорошо, давайте тогда по частям. Сделайте для начала сам цикл и покажите что получилось. То, что дальше сделаем потом.
#-*- 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:]) for q in xrange(1, 5): if 'Участ' in type+str(q): tyq = 1 # Не требует свободных лотов (+) elif 'Кажд' in type+str(q): tyq = 2 # Ограниченное количество ставок (+) elif 'Лог' in type+str(q): tyq = 3 #'Логины зашифрованы'(+) elif 'Днев' in type+str(q): tyq = 4 #'Дневной'(+) elif 'Один' in type+str(q): tyq = 5 #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in type+str(q): tyq = 6 #' Для новичков' (+) elif 'Ставк' in type+str(q): tyq = 7 #'На понижение' elif 'Фикс' in type+str(q): tyq = 8 #'Фиксированная цена' elif '100' in type+str(q): tyq = 9 #'100% скидка' elif 'Бесп' in type+str(q): tyq = 10 #'Бесплатные ставки' else: tyq = 0 Typs[0].append((1 if tyq == 1 or tyq == 1 or tyq == 1 or tyq == 1 or tyq == 1 else 0)) Typs[1].append((1 if tyq == 2 or tyq == 2 or tyq == 2 or tyq == 2 or tyq == 2 else 0)) Typs[2].append((1 if tyq == 3 or tyq == 3 or tyq == 3 or tyq == 3 or tyq == 3 else 0)) Typs[3].append((1 if tyq == 4 or tyq == 4 or tyq == 4 or tyq == 4 or tyq == 4 else 0)) Typs[4].append((1 if tyq == 5 or tyq == 5 or tyq == 5 or tyq == 5 or tyq == 5 else 0)) Typs[5].append((1 if tyq == 6 or tyq == 6 or tyq == 6 or tyq == 6 or tyq == 6 else 0)) Typs[6].append((1 if tyq == 7 or tyq == 7 or tyq == 7 or tyq == 7 or tyq == 7 else 0)) Typs[7].append((1 if tyq == 8 or tyq == 8 or tyq == 8 or tyq == 8 or tyq == 8 else 0)) Typs[8].append((1 if tyq == 9 or tyq == 9 or tyq == 9 or tyq == 9 or tyq == 9 else 0)) Typs[9].append((1 if tyq == 10 or tyq == 10 or tyq == 10 or tyq == 10 or tyq == 10 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(Typ1) #Mtyp1 = np.array(Typ1) #Mtyp2 = np.array(Typ2) #Mtyp3 = np.array(Typ3) #Mtyp4 = np.array(Typ4) #Mtyp5 = np.array(Typ5) #Mtyp6 = np.array(Typ6) #Mtyp7 = np.array(Typ7) #Mtyp8 = np.array(Typ8) #Mtyp9 = np.array(Typ9) #Mtyp10 = np.array(Typ10)
TypeError: unsupported operand type(s) for +: 'type' and 'str'
if 'Участ' in type+str(q): tyq = 1 # Не требует свободных лотов (+) elif 'Кажд' in type+str(q): tyq = 2 # Ограниченное количество ставок (+) elif 'Лог' in type+str(q): tyq = 3 #'Логины зашифрованы'(+) elif 'Днев' in type+str(q): tyq = 4 #'Дневной'(+) elif 'Один' in type+str(q): tyq = 5 #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in type+str(q): tyq = 6 #' Для новичков' (+) elif 'Ставк' in type+str(q): tyq = 7 #'На понижение' elif 'Фикс' in type+str(q): tyq = 8 #'Фиксированная цена' elif '100' in type+str(q): tyq = 9 #'100% скидка' elif 'Бесп' in type+str(q): tyq = 10 #'Бесплатные ставки' else: tyq = 0
Офлайн
13
Подсказка: не нужно их объединять. Нужно положить их в список. Вот, смотрите:
types = [type1, type2, type3, type4, type5]
types[q]
Отредактировано Ed (Июнь 9, 2012 21:22:32)
Офлайн
0
EdУ меня руки только вот до такого доходят:
Подсказка: не нужно их объединять. Нужно положить их в список. Вот, смотрите:Тогда внутри вашего цикла можно будет вместо ваших выкрутасов использоватьtypes = [type1, type2, type3, type4, type5]. Понятно ли?types[q]
types = [type1, type2, type3, type4, type5]
if 'Участ' in types[1]:
ty1 = 1 # Не требует свободных лотов (+)
elif 'Кажд' in types[1]:
ty1 = 2 # Ограниченное количество ставок (+)
elif 'Лог' in types[1]:
ty1 = 3 #'Логины зашифрованы'(+)
elif 'Днев' in types[1]:
ty1 = 4 #'Дневной'(+)
elif 'Один' in types[1]:
ty1 = 5 #'С блефом' (+) - Внезапно ОО
elif 'Аукцион для' in types[1]:
ty1 = 6 #' Для новичков' (+)
elif 'Ставк' in types[1]:
ty1 = 7 #'На понижение'
elif 'Фикс' in types[1]:
ty1 = 8 #'Фиксированная цена'
elif '100' in types[1]:
ty1 = 9 #'100% скидка'
elif 'Бесп' in types[1]:
ty1 = 10 #'Бесплатные ставки'
else:
ty1 = 0
Отредактировано Dimazzzzzz (Июнь 9, 2012 21:35:57)
Офлайн
13
Вот так нужно было:
types = [type1, type2, type3, type4, type5]
ty = []
for q in range(len(types)):
if 'Участ' in types[q]:
ty[q] = 1
Офлайн