Архив автора: admin

Python нахождение наиболее часто встречающегося символа в тексте

Задача: нахождение наиболее часто встречающейся буквы в тексте (использование например в криптографии при дешифровке). Требуется:

  • ищем только буквы
  • нет зависимости от регистра ('a' и 'A' считаются одинаковой буквой)
  • ищем букву которая встречается максимальное количество раз
  • если таких букв несколько, то результат выдаем первую встречающуюся по алфавиту
Решение мое:

>>> dict = {}
>>> text = «AavvvddAsfgh»
>>> letters = map(chr, range(ord('a'), ord('z')))

>>> for ch in text:
>>>     ch_lower = ch.lower()
>>>     if ch_lower in letters:
>>>         if dict.has_key(ch_lower):
>>>             dict[ch_lower] += 1            
>>>         else:
>>>             dict[ch_lower] = 1            

>>> out = [key for key, value in dict.items() if value == max(dict.values())]
>>> out.sort()
>>> print out[0]
a
Решение от гуру:
для Python 3.3

>>> import string
>>> def out_chr(text):
>>>     return max(string.ascii_lowercase, 

                   key=lambda ch: text.lower().count(ch))

для Python 2.7
>>> import re
>>> from collections import Counter

>>> def out_chr(text):
>>>     text = «».join(re.findall(«w», text.lower()))
>>>     return Counter(text).most_common()[0][0]


Автор: Viktor

Python проверка на сложность пароля

Например, установлены такие требования к паролю:

  • не меньше 8 символов
  • должна присутствовать хотя бы одна цифра [0-9]
  • должна присутствовать хотя бы одна заглавная буква [A-Z]
  • должна присутствовать хотя бы одна строчная буква [a-z]


Для последовательного перебора символов [a-z] при сравнении, можно использовать такую конструкцию:

>>> for c in range( ord('a'), ord('z')+1 ):
>>> print chr(c),


чтобы получить список [a-z]:
>>> map(chr, range(97, 123))
или
>>> map(chr, range(ord('a'), ord('z')))

Пример реализации. Функция возвращает False, если пароль не удовлетворяет требованиям, или True если ОК:

>>> def lst_seq(v1, v2):
>>>     return map(chr, range(ord(v1), ord(v2)))
>>> def check_psw(psw):
>>>     digit = False
>>>     upper = False
>>>     lower = False
>>>     if len(psw) >= 8:
>>>         for x in psw:
>>>             if x in 
lst_seq('0','9'): 
>>>                 digit = True
>>>             if x in 
lst_seq('A', 'Z'): 
>>>                 upper = True
>>>             if x in 
lst_seq('a', 'z'): 
>>>                 lower = True
>>>     return digit and upper and lower
Теперь варианты от гуру:
для Python 3.3

>>> def check_psw(psw):
>>>     return (len(psw) >= 8 and
>>>         any([ch.isupper() for ch in psw]) and
>>>         any([ch.isdigit() for ch in psw]) and
>>>         any([ch.islower() for ch in psw]))


Вариант с регекспами:

>>> import re
>>> def check_psw(psw):
>>>     return len(psw) >= 8 and

>>>            bool(re.match(«^.*[A-Z]+.*$», psw) and

>>>                 re.match(«^.*[a-z]+.*, psw) and
>>>                 re.match(«^.*[0-9]+.*, psw))

или
>>> import re
>>> def check_psw(psw):
>>>     return bool(re.match(«((?=.*d)(?=.*[a-z])(?=.*[A-Z]).{8})», psw))

или
>>> import re
>>> def check_psw(psw):    
>>>     if len(psw) < 8:
>>>         return False
>>>     for r in ('[a-z]', '[A-Z]', 'd'):
>>>         if re.search(r, psw) is None:
>>>             return False
>>>     return True

Вариант с set для Python 3.3:
>>> import string 
>>> upper  = set(string.ascii_uppercase)
>>> lower  = set(string.ascii_lowercase)
>>> digits = set(string.digits) 
>>> def check_psw(psw):    
>>>     letters = set(psw)
>>>     return bool(len(psw) >= 8 and upper & letters and lower & letters and digits & letters)

Автор: Viktor

Python set методы с наглядными рисунками

Не хватает графики для ясного понимания действий методов set. Хотелось бы как в SQL рисунки пересечений окружностей при работе с join. И вот попал на такой сайт . Выкладываю оттуда картинки.
Union |
>>> s1 = set([1, 2, 3])
>>> s2 = set([3, 4, 5])
>>> print s1.union(s2)

set([1, 2, 3, 4, 5])



Intersection & 
>>> s1 = set([1, 2, 3])
>>> s2 = set([3, 4, 5])
>>> print s1.intersection(s2)

set([3])

Difference 
>>> s1 = set([1, 2, 3])
>>> s2 = set([3, 4, 5])
>>> print s1.difference(s2)

set([1, 2])

Symmetric Difference ^
>>> s1 = set([1, 2, 3])
>>> s2 = set([3, 4, 5])
>>> print s1.symmetric_difference(s2)

set([1, 2, 4, 5])




Автор: Viktor

Снежинки из прищепок

Снежинка из прищепок

Все ближе и ближе к нам новогодние праздники, а значит, уже сейчас можно задуматься об украшении дома. Одним из символов зимы является снежинка, изображением которой украшают стены, окна и новогоднюю елку. Такое украшение совершенно нетрудно сделать и в домашних условиях. Снежинки из прищепок станут прекрасным украшением для вашей елочки в этом году.

Снежинки из прищепок

Снежинки из прищепок

Читать

Лечение ринита у детей

Насморк – явление не просто неприятное, а полностью выбивающее из колеи взрослых людей. Из-за невозможности нормального дыхания не удается ни спать, ни работать, ни радоваться жизни. Еще хуже приходится детям, которые еще не овладели вредной привычкой дыхания через рот. Ринит становится для них настоящим бедствием – недостаток поступления кислорода быстро сказывается на всех органах и тканях – гипоксия становится причиной замедления всех биологических процессов в быстрорастущем детском организме. Очень важно избавить малыша от болезни быстро, при этом не нарушив естественных защитных процессов. Причины ринита Первой по значимости причиной ринита, как у взрослых, так и у детей является простуда и неразрывно связанные с нею респираторные заболевания – ОРВИ, ангина, ларингит. Зачастую насморк у малышей протекает и одновременно с конъюнктивитом и заболеваниями уха – ведущее значение в этом имеет анатомическая взаимосвязь этих органов. Несколько реже заложенность, зуд в носовой полости и жидкие прозрачные истечения появляются при аллергии. Таким образом, ринит не является самостоятельным заболеванием – это лишь симптом, сопровождающий более весомые патологии дыхательной и иммунной системы. Подходить же к лечению следует комплексно: важно не только устранить признаки болезни, но и воздействовать на ее причину.  Лечение ринита Течение экссудата из носа – не самый опасный признак болезни, намного большую угрозу для малышей несет отечность слизистых оболочек, которая может стать причиной полного перекрытия носового дыхания. Самым быстрым действием из всех возможных вариантов обладают сосудосуживающие капли в нос, однако, злоупотреблять ими также не стоит – детям процедуру можно повторять не более трех раз в сутки. Важна и продолжительность применения: использовать отривин, нафазолин и прочие препараты рекомендуется не более пяти дней. Достаточно эффективным является и народный метод лечения ринита – паренье ног. Несмотря на определенный уровень опасности, для детей этот метод особенно хорош – расширение сосудов ног вследствие повышения местной температуры, становится причиной ускорения кровотока во всем теле, а значит, и ликвидации гипоксии. В борьбе с заложенностью и носовыми истечениями важно не забывать самого главного – это симптом, причина болезни также требует немедленного устранения. Поэтому очень важно проконсультироваться со специалистом и установить диагноз: ангина и отит лечатся с применением антибиотиков, с аллергией же можно справиться лишь при использовании антигистаминных препаратов и устранения источника неприятных ощущений.

ПРИНЦИП ЗЕРКАЛА — ваша жизнь — есть внешнее отражение вашего внутреннего содержания

Mirror_baby

Подлинным зеркалом нашего образа мыслей является наша жизнь.

Мишель де Монтень

Каждый человек — отражение своего внутреннего мира.

Марк Туллий Цицерон

Есть отличное выражение: счастье — это аромат, который невозможно излить на других людей, не уронив на себя хотя бы несколько капель.

Мы можем удивляться, почем в нашей жизни нет счастья. А на самом деле все закономерно и объяснимо. Счастья нет потому, что мы его не излучаем – не делаем других счастливее. И его не будет до тех пор, пока мы не начнем излучать энергию счастья, или пока не начнем вызывать эту энергию в других людях. Делать людей счастливее не так уж сложно – иногда достаточно улыбки, доброго слова, мудрого совета, моральной поддержки или небольшой помощи.

Читать