Вот один из способов сделать это, используя потолок вместе с логарифмами:
def round_by_tens(inp):
z = math.ceil(math.log10(inp+1))
q = (10 ** z) - 1
return q
nums = [5, 50, 500, 5000]
for num in nums:
print(round_by_tens(num))
Это напечатает:
9.0
99.0
999.0
9999.0
Лог c здесь - это сначала вычислить потолок степень 10, которая потребовалась бы для генерации коэффициента десятков, который является верхней границей ввода. Затем мы просто берем верхнюю границу десятков и вычитаем из нее единицу, чтобы получить ожидаемый результат.