Задача: имеем на входе строку, слова в которой разделены пробелом. Если в строке попадается число, то вставляем точки как разделители разрядов. На выходе нужно получить строку.
Например: text =
'123456' => '123.456'
'333' => '333'
'9999999' => '9.999.999'
'123456 567890' => '123.456 567.890'
'price is 5799' => 'price is 5.799'
'he was born in 1966th' => 'he was born in 1966th'
воскресенье, 29 декабря 2013 г.
вторник, 24 декабря 2013 г.
Python конвертация из арабских в греческие
Цифр в римской системе всего 7 вот они:
Римская цифра | Десятичный эквивалент |
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
понедельник, 23 декабря 2013 г.
Excel 2003 ограничение на количество строк и столбцов
В Excel 2003 такое ограничение на количество строк и столбцов:
65536 строк
256 столбцов
65536 строк
256 столбцов
пятница, 20 декабря 2013 г.
Linux подключение дополнительного IP
Иногда нужно настроить новую железку с IP по-умолчанию не из моей сети. Для этого надо добавить новый сетевой интерфейс с адресом из сети железки.
для добавления
sudo ifconfig eth0:1 <IP>
для удаления
sudo ifconfig eth0:1 del <IP>
sudo ifconfig eth0:1 down
или после перезагрузки настройка пропадет
eth0:2 и т.д. аналогично можно добавлять еще интерфейсы
для добавления
sudo ifconfig eth0:1 <IP>
для удаления
sudo ifconfig eth0:1 del <IP>
sudo ifconfig eth0:1 down
или после перезагрузки настройка пропадет
eth0:2 и т.д. аналогично можно добавлять еще интерфейсы
четверг, 19 декабря 2013 г.
Python создаём словарь из двух списков
Задача: из двух списков получить словарь, где первый список ключи словаря, второй - значения
key_dict = [1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000]
value_dict = ['I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M']
dict_out = {}
for x, y in zip(key_dict, value_dict):
dict_out[x] = y
print dict_out
key_dict = [1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000]
value_dict = ['I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M']
dict_out = {}
for x, y in zip(key_dict, value_dict):
dict_out[x] = y
print dict_out
{1: 'I', 4: 'IV', 5: 'V', 9: 'IX', 10: 'X', 40: 'XL', 50: 'L', 90: 'XC', 100: 'C', 400: 'CD', 500: 'D', 900: 'CM', 1000: 'M'}zip(key_dict, value_dict) создает список такого вида [(1, 'I'), (4, 'IV') ...]
суббота, 14 декабря 2013 г.
Python преобразовать список из [1, [2, 3], 4] в [1, 2, 3, 4]
Задача: преобразовать список из такого типа [1, [2, 3], 4] в [1, 2, 3, 4]
check_lst = [[[2]], [4, [5, 6, [6], 6, 6, 6]]]
def check(lst):
check_bool = True
out_lst = []
copy_lst = list(lst)
while check_bool:
check_bool = False
for i in copy_lst:
if isinstance(i, list):
check_bool = True
out_lst.extend(i)
else:
out_lst.append(i)
if check_bool:
copy_lst = list(out_lst)
out_lst = []
return out_lst
print check(check_lst)
[2, 4, 5, 6, 6, 6, 6, 6]Лучшее решение
пятница, 13 декабря 2013 г.
Python использование set с классом
Задача: создадим класс, создадим пустой set. Заполним set экземплярами созданного класса. Для примера пусть экземпляры будут случайным целым числом из диапазона 0-9. Теперь мы хотим удалить из set-а все экземпляры класса значения которых совпадают с "9" и "8"
Где это можно применить на практике? В gamedeveloping игра "Астероид", в set добавляем все летающие по экрану камни, пробегаемся по set-у и сверяем дистанцию между кораблем и камнями:
для этого вычисляем дистанцию между координатами центров фигур
>>> def dist(p, q):
>>> return math.sqrt((p[0] - q[0]) ** 2 + (p[1] - q[1]) ** 2)
и вычитаем радиус корабля и радиус камня, если получившееся значение <= 0 значит столкновение, то добавляем экземпляр класса камень во временный set. После окончания обхода set-а с камнями - удаляем из этого set-а временный set (один или более камней при столкновении) и уменьшаем счетчик жизней кораблю.
Где это можно применить на практике? В gamedeveloping игра "Астероид", в set добавляем все летающие по экрану камни, пробегаемся по set-у и сверяем дистанцию между кораблем и камнями:
для этого вычисляем дистанцию между координатами центров фигур
>>> def dist(p, q):
>>> return math.sqrt((p[0] - q[0]) ** 2 + (p[1] - q[1]) ** 2)
и вычитаем радиус корабля и радиус камня, если получившееся значение <= 0 значит столкновение, то добавляем экземпляр класса камень во временный set. После окончания обхода set-а с камнями - удаляем из этого set-а временный set (один или более камней при столкновении) и уменьшаем счетчик жизней кораблю.
четверг, 12 декабря 2013 г.
Инвайт для сайта по изучению языка Python
Инвайт для сайта по изучению языка Python в игровой форме с левелами и медальками. Мини - задачки представленные на этом сайте взяты оттуда. После решения задачки, можно посмотреть лучшие решения.
Python tic-tac-toe крестики-нолики 3Х3
Классические крестики нолики 3Х3. Функция должна возвращать в случае выигрыша символ победителя "Х" или "О". Если ничья (draw) - "D". На вход функции подается подобный 2-мерный массив список. Если клетка не заполнена, то символ "."
game_result = [
u"OOX",
u"XXO",
u"OXX"]
game_result = [
u"OOX",
u"XXO",
u"OXX"]
среда, 11 декабря 2013 г.
Python полезности для игры Астероид
Выход за границы области экрана
>>> self.pos[0] = (self.pos[0] + self.vel[0]) % WIDTH
>>> self.pos[1] = (self.pos[1] + self.vel[1]) % HEIGHT
pos - координаты центра движущейся фигуры
Увеличение скорости астероидов в зависимости от счета score
# increase rock's velocity using score
for rock in rock_group:
for i in range(2):
rock.vel[i] = rock.init_vel[i] + (rock.init_vel[i] * score * 0.03)
или
rock_vel[i] = rock_vel[i] * (1 + score / 3)
Столкновение спрайтов (p q - координаты центров сталкивающихся спрайтов, dist - расчет дистанции между спрайтами)
def dist(p, q):
return math.sqrt((p[0] - q[0]) ** 2 + (p[1] - q[1]) ** 2)
def collide(self, other_object):
return dist(self.pos, other_object.pos) <= self.radius + other_object.radius
>>> self.pos[0] = (self.pos[0] + self.vel[0]) % WIDTH
>>> self.pos[1] = (self.pos[1] + self.vel[1]) % HEIGHT
pos - координаты центра движущейся фигуры
Увеличение скорости астероидов в зависимости от счета score
# increase rock's velocity using score
for rock in rock_group:
for i in range(2):
rock.vel[i] = rock.init_vel[i] + (rock.init_vel[i] * score * 0.03)
или
rock_vel[i] = rock_vel[i] * (1 + score / 3)
Столкновение спрайтов (p q - координаты центров сталкивающихся спрайтов, dist - расчет дистанции между спрайтами)
def dist(p, q):
return math.sqrt((p[0] - q[0]) ** 2 + (p[1] - q[1]) ** 2)
def collide(self, other_object):
return dist(self.pos, other_object.pos) <= self.radius + other_object.radius
Python нахождение наиболее часто встречающейся буквы в тексте
Задача: нахождение наиболее часто встречающейся буквы в тексте (использование например в криптографии при дешифровке). Требуется:
- ищем только буквы
- нет зависимости от регистра ('a' и 'A' считаются одинаковой буквой)
- ищем букву которая встречается максимальное количество раз
- если таких букв несколько, то результат выдаем первую встречающуюся по алфавиту
Python set методы с наглядными рисунками
Не хватает графики для ясного понимания действий методов set. Хотелось бы как в SQL рисунки пересечений окружностей при работе с join. И вот попал на такой сайт . Выкладываю оттуда картинки.
Union |
>>> s1 = set([1, 2, 3])
>>> s2 = set([3, 4, 5])
>>> print s1.union(s2)
Union |
>>> s1 = set([1, 2, 3])
>>> s2 = set([3, 4, 5])
>>> print s1.union(s2)
set([1, 2, 3, 4, 5])
Python проверка на сложность пароля
Например, установлены такие требования к паролю:
- не меньше 8 символов
- должна присутствовать хотя бы одна цифра [0-9]
- должна присутствовать хотя бы одна заглавная буква [A-Z]
- должна присутствовать хотя бы одна строчная буква [a-z]
вторник, 10 декабря 2013 г.
Ошибка "Служба временно недоступна, попробуйте позже" при входе в Семейную безопасность
В составе пакета Windows Live есть Семейная безопасность. Ее можно использовать для ограничения доступа к сайтам, как полное ограничение с входом только на сайты входящие в белый список, так и более лояльное ограничение:
воскресенье, 8 декабря 2013 г.
Использование lambda вместе со списком в Python
Очень наглядный пример использования lambda с методами списков в Python
или лучше
Еще интересный пример (вырезать в строке лишние дефисы)
>>>
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
>>>
>>>
print filter(lambda x: x % 3 == 0, foo)
[18, 9, 24, 12, 27] |
>>>
>>>
print map(lambda x: x * 2 + 10, foo)
[14, 46, 28, 54, 44, 58, 26, 34, 64] |
>>>
>>>
print reduce(lambda x, y: x + y, foo)
139 |
>>>
digit = [1, 2, 3]
>>>
>>>
print [(lambda x: x * x)(x) for x in digit)]
[1, 4, 9] |
>>>
print [x * x for x in digit]
Еще интересный пример (вырезать в строке лишние дефисы)
пятница, 6 декабря 2013 г.
XP 0x80246008 ошибка Windows Update
Такая ошибка возникает если проблемы с сервисом "Фоновая интеллектуальная служба передачи (BITS)". Используется BITS Windows для скачивания в фоновом режиме в том числе обновлений. Должна присутствовать в списке сервисов, и включена Auto. У меня появилась эта ошибка 0x80246008 после Microsoft FixIt - одно лечили другое покалечили. Вместо этой службы у меня появилась служба с таким именем "@%SystemRoot%\System32\qmgr.dll -1000"
В журнале запись ошибки "BITS error 1290: 0x50a"
В журнале запись ошибки "BITS error 1290: 0x50a"
Решение: экспортировал с рабочей тачки ветку HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Services\BITS
старую удалил новую импортировал, ребутнулся и OK
Содержимое ветки выкладываю здесь:
Настройка WiFi роутера
- Forward - UPnP Некоторые роутеры или клиенты могут не совсем корректно поддерживать UPnP, либо вручную сделан проброс портов и, следовательно, функционал UPnP не нужен. Можно отключить.
- WPS Подключаться будем с паролем установленным вручную, поэтому можно отключить.
- Wireless security - WPA2 (Установить пароль)
- Также не забудем задать имя WiFi сети. Для более стабильной связи подбираем канал, в настройке сети канал желательно поменять с Auto на более поздний (например 9)
Подписаться на:
Сообщения (Atom)