import math def add_line_numbers(code: str) -> str: lines = code.splitlines() if not lines: return code # empty anyway # cannot use math.ceil() here bc lg100=2 max_digits = math.floor(math.log10(len(lines))) + 1 for n, l in enumerate(lines, 1): digits_in_n = math.floor(math.log10(n)) + 1 spaces_before_number = max_digits - digits_in_n lines[n - 1] = " " * spaces_before_number + str(n) + " " + l return "\n".join(lines)