Замена цифр в целом числе
Подскажите, как должен выглядеть следующий код? Целью задачи является замена всех цифр в целом числе 1234567890 на "зеркальные": 0 на 9, 1 на 8 и т.д. Пыталась с использованием replace, но доходя до replace('5','4').replace('4','5') программа начинает работать неверно
Из 1234567890 в 8765432109
a=str(1234567890)
a = a.replace('9','0').replace('8','1').replace('7','2').replace('6','3').replace('5','4').replace('4','5').replace('3','6').replace('2','7').replace('1','8').replace('0','9').
print(int(a))
Ответы (2 шт):
Автор решения: Краева Екатерина
→ Ссылка
n = 1234567890
new = ''
while n:
digit = n % 10
new = str(9 - digit) + new
n //= 10
print(new)
или
n = 1234567890
new = ''
for el in str(n):
new += str(9 - int(el))
print(new)
Ваша программа работает неверно, так как все значения которые вы изменили до replace('5', '4') вновь заменяются на противоположными последующими вызовами этого метода
Автор решения: user207200
→ Ссылка
Можно использовать механизм трансляции по заданной таблице.
from string import digits
def make_translator(s):
table = str.maketrans(s, s[::-1])
return lambda s: s.translate(table)
mirrored = make_translator(digits)
for i in range(len(digits) + 1):
print(digits[:i], mirrored(digits[:i]))