Инвайт для сайта по изучению языка Python в игровой форме с левелами и медальками. Мини — задачки представленные на этом сайте взяты оттуда. После решения задачки, можно посмотреть лучшие решения.
Автор: Viktor
Инвайт для сайта по изучению языка Python в игровой форме с левелами и медальками. Мини — задачки представленные на этом сайте взяты оттуда. После решения задачки, можно посмотреть лучшие решения.
Автор: Viktor
Классические крестики нолики 3Х3. Функция должна возвращать в случае выигрыша символ победителя «Х» или «О». Если ничья (draw) — «D». На вход функции подается подобный 2-мерный массив список. Если клетка не заполнена, то символ «.»
game_result = [
u»OOX»,
u»XXO»,
u»OXX»]
# Column and row checking
>>> for i in range(3):
>>> if game_result[i][0] ==
Автор: Viktor
Например преобразовать 310 => three hundred ten
FIRST_TEN = [«zero», «one», «two», «three», «four», «five», «six», «seven», «eight», «nine»]
SECOND_TEN = [«ten», «eleven», «twelve», «thirteen», «fourteen», «fifteen», «sixteen», «seventeen», «eighteen», «nineteen»]
OTHER_TENS = [«twenty», «thirty», «forty», «fifty», «sixty», «seventy», «eighty», «ninety»]
HUNDRED = «hundred»
number = 310
res_n = «»
lst = list(str(number))
if len(lst) == 1:
res_n = FIRST_TEN[int(lst[0])]
if len(lst) == 2:
if int(lst[0]) == 1:
res_n = SECOND_TEN[int(lst[1])]
elif int(lst[0]) > 1:
if int(lst[1]) == 0:
res_n = OTHER_TENS[int(lst[0]) — 2]
elif int(lst[1]) > 0:
res_n = OTHER_TENS[int(lst[0]) — 2] + ' ' + FIRST_TEN[int(lst[1])]
if len(lst) == 3:
if int(lst[1]) == 0:
if int(lst[2]) == 0:
res_n = FIRST_TEN[int(lst[0])] + ' ' + HUNDRED
elif int(lst[2]) > 0:
res_n = FIRST_TEN[int(lst[0])] + ' ' + HUNDRED + ' ' + FIRST_TEN[int(lst[2])]
elif int(lst[1]) == 1:
res_n = FIRST_TEN[int(lst[0])] + ' ' + HUNDRED + ' ' + SECOND_TEN[int(lst[2])]
elif int(lst[1]) > 1:
if int(lst[2]) == 0:
res_n = FIRST_TEN[int(lst[0])] + ' ' + HUNDRED + ' ' + OTHER_TENS[int(lst[1]) — 2]
elif int(lst[2]) > 0:
res_n = FIRST_TEN[int(lst[0])] + ' ' + HUNDRED + ' ' + OTHER_TENS[int(lst[1]) — 2] + ' ' + FIRST_TEN[int(lst[2])]
print res_n
three hundred ten
Решение от гуру:
def convert(i):
if i < 20:
result = 'zero,one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thirteen,fourteen,fifteen,sixteen,seventeen,eighteen,nineteen'.split(',')[i]
elif i < 100:
result = ',,twenty,thirty,forty,fifty,sixty,seventy,eighty,ninety'.split(',')[i//10]
if i % 10:
result += ' ' + checkio(i % 10)
elif i < 1000:
result = checkio(i // 100) + ' hundred'
if i % 100:
result += ' ' + checkio(i % 100)
return result
Автор: Viktor
Задача: нахождение наиболее часто встречающейся буквы в тексте (использование например в криптографии при дешифровке). Требуется:
a
>>> import string
>>> def out_chr(text):
>>> return max(string.ascii_lowercase,
Автор: Viktor
Например, установлены такие требования к паролю:
>>> 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 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
Автор: Viktor
Не хватает графики для ясного понимания действий методов 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