Как вывести переменную по частям
Например у меня есть переменная a= 123456789
Как вывести ее с дефисами следующим образом "12-345-67-89"
Ответы (3 шт):
Автор решения: rotabor
→ Ссылка
Как-то так?
b = str(123456789)
print(b[0:2]+'-'+b[2:5]+'-'+b[5:7]+'-'+b[7:9])
Или
a=[2,3,2,2]
b=str(123456789)
i=0
def sslice(n):
global i
j=i
i+=n
return b[j:i]
print("-".join(map(sslice,a)))
Автор решения: Oopss
→ Ссылка
def ins_minus(s:str, pos:list)->str:
ls=list(s)
cpos=0
for i in pos:
cpos+=i
if cpos < len(ls):
ls.insert(cpos,'-')
cpos+=1
return ''.join(ls)
a = '123456789'
t = [2,3,2,2]
print(ins_minus(a,t))
a = '1234567890'
t = [5]
print(ins_minus(a,t))
a = '1234567890'
t = [1,1,1,1,1,1,1,1,1]
print(ins_minus(a,t))
a = '1234567890'
t = [3,3,2,2]
print(ins_minus(a,t))
12-345-67-89
12345-67890
1-2-3-4-5-6-7-8-9-0
123-456-78-90
Автор решения: Stanislav Volodarskiy
→ Ссылка
Форматируйте удобно:
def format(fmt, n):
it = iter(str(n))
return ''.join(next(it) if c == '#' else c for c in fmt)
print(format('##-###-##-##', 123456789))
$ python format.py 12-345-67-89
Добавлена проверка, что все цифры выведены. Программа остановится если цифр слишком много или слишком мало:
def format(fmt, n):
it = iter(str(n))
s = ''.join(next(it) if c == '#' else c for c in fmt)
for _ in it:
assert False
return s