Умножьте входные данные на 5, увеличив количество цифр каждого числа, но мой код нуждается в переработке

Я пытаюсь умножить входное значение * 5, возведенное в степень входного значения. Я попробовал это:

def multiply(n):
return 5 ** len(str(n)) * n

Я попробовал (n = -2), но вместо -10, что является правильным ответом, мне дали -50. Почему это не выводит правильные числа, если n отрицательно?

🤔 А знаете ли вы, что...
Python - это универсальный язык программирования.


2
53
2

Ответы:

-2 имеет длину 2 при преобразовании в строку, поскольку учитывается отрицательный знак. Итак, расчет 5 ** 2 * -2 = -50.

Вы хотите игнорировать отрицательный знак при подсчете цифр. Вы можете попробовать len(str(abs(n))), который проигнорирует отрицательный знак и даст правильный ответ.


Решено

вы напрямую проверяете длину ввода, преобразуя его в строку:

>>> n = -2
>>> str(n)
'-2' # String with length of two -> '-' and '2' (string 2)
>>> len(str(n))
2

Возможно, вы можете попробовать это (не уверен, хорошо это или плохо, но будет работать так, как вы ожидали):

# The dirty way.. 

def multiply(num: int):
    # Initialize a variable to keep track of length
    length = 0
    
    # Convert the input to string and iterate over it
    for n in str(num):

        # If the current character is int, increment the length variable
        try:
            if isinstance(int(n), int):
                length += 1

        # Above code will raise error for '-', catch here
        except ValueError:
            pass

    return 5 ** length * num

# Try with the input -2 again
print(multiply(-2))