неужели в python нет способа разобрать число на составляющие иначе как чем через str?
как правильно переместить цикл в тело чтобы не повторять в каждой функции?
почему глобальную переменную нельзя изменить из функций без указания локальной переменной global?
как избавиться от большого количества if?
Заранее спасибо за помощь.
#На доске выписаны все пятизначные числа, у которых каждая цифра либо равна обеим соседним, либо отличается от соседних ровно на единицу - от одного в меньшую, а от другого в большую сторону.
#Сколько написанных на доске чисел содержат в своей записи цифру 5?
start = 1
end = 4
count_5 = 0
def check_the_same_high(nomer):
global count_5
for i in range(start, end, 1):
if ((int(nomer[i]) == (int(nomer[i-1]) -1)) and (int(nomer[i]) == (int(nomer[i+1]) +1))):
if i > 2:
print(nomer)
if ('5' in nomer):
count_5 += 1
else:
break
def check_the_same_low(nomer):
global count_5
for i in range(start, end, 1):
if ((int(nomer[i]) == (int(nomer[i-1]) +1)) and (int(nomer[i]) == (int(nomer[i+1]) -1))):
if i > 2:
print(nomer)
if ('5' in nomer):
count_5 += 1
else:
break
def check_the_summ(nomer):
global count_5
for i in range(start, end, 1):
if (int(nomer[i]) == int(nomer[i-1]) + int(nomer[i+1])):
if i > 2:
print(nomer + ' sum')
if ('5' in nomer):
count_5 += 1
else:
break
def check(dig):
nomer = str(dig)
check_the_same_high(nomer)
check_the_same_low(nomer)
check_the_summ(nomer)
for i in range(0, 99999, 1):
check('{:05}'.format(i))
print('чисел содержащих цифру 5 всего: ' + str(count_5))
Да я же не язвил, реально восхитился умением увидеть суть задачи. Вот и спрашиваю как мозг на решение настроить, а не поэтапный перебор причин и следствий.