Сделать файл python, который можно подключать как библиотеку:
if __name__ == "__main__":
my_main_function()
Сделать плоский список из 'ветвистого':
def flat_list(iterable):
out = []
for el in iterable:
if type(el) == list:
out.extend(flat_list(el))
else:
out.append(el)
return out
li = [1, 2, [3, 4, [5, 6] ], 7, 8, [9, [10] ] ]
print(flat_list(li))
Преобразование числа в словесное описание:
def number_to_words(n):
f = {1: 'один', 2: 'два', 3: 'три', 4: 'четыре', 5: 'пять',
6: 'шесть', 7: 'семь', 8: 'восемь', 9: 'девять'}
o = {10: 'десять', 20: 'двадцать', 30: 'тридцать', 40: 'сорок',
50: 'пятьдесят', 60: 'шестьдесят', 70: 'семьдесят',
80: 'восемьдесят', 90: 'девяносто'}
s = {11: 'одиннадцать', 12: 'двенадцать', 13: 'тринадцать',
14: 'четырнадцать', 15: 'пятнадцать', 16: 'шестнадцать',
17: 'семнадцать', 18: 'восемнадцать', 19: 'девятнадцать'}
n1 = n % 10
n2 = n - n1
if n < 10:
return f.get(n)
elif 10 < n < 20:
return s.get(n)
elif n >= 10 and n in o:
return o.get(n)
else:
return o.get(n2) + ' ' + f.get(n1)
print(number_to_words(31))
a1 = ('', 'один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь',
'девять', 'десять', 'одиннадцать', 'двенадцать', 'тринадцать',
'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать',
'восемнадцать', 'девятнадцать')
a2 = ('', 'десять', 'двадцать', 'тридцать', 'сорок', 'пятьдесят',
'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто')
n = int(input())
if n == 0:
print('ноль')
elif n > 0 and n < 20:
print(a1[n])
else:
print(a2[n // 10], a1[n % 10])
Правильное окончание года/лет:
n = input()
s = 'лет'
if 10 < int(n[-2:]) < 20:
pass
else:
if n[-1:] == '1':
s = 'год'
else:
if 1 < int(n[-1:]) < 5:
s = 'года'
print(n + ' ' + s)
def Age(n):
r = ''
if n // 10 % 10 != 1:
if n % 10 == 1:
r = 'год'
elif n % 10 == 2 or n % 10 == 3 or n % 10 == 4:
r = 'года'
if r == '':
r = 'лет'
print(n, r)
Age(11)
Строчки разбить по точкам и звёздочкам:
def str_to_list_points(s):
li = []
a = 0
for b in range(len(s)):
if s[b] == '.':
if a != b:
li.append(s[a:b])
li.append('.')
a = b + 1
if a < b + 1:
li.append(s[a:b + 1])
return li
def list_split_inside(li):
i = 0
while i < len(li):
if li[i] != '*' and '*' in li[i]:
t = [x for x in li[i].split('*') if len(x) > 0]
li[i] = t[0]
for k in range(1, len(t)):
li.insert(i + k, t[k])
i += 1
i += 1
s = '.adito.*lema*ret.*'
li1 = s.split('*')
print(li1)
li2 = str_to_list_points(s)
print(li2)
list_split_inside(li2)
print(li2)