Я пытаюсь умножить входное значение * 5, возведенное в степень входного значения. Я попробовал это:
def multiply(n):
return 5 ** len(str(n)) * n
Я попробовал (n = -2), но вместо -10, что является правильным ответом, мне дали -50. Почему это не выводит правильные числа, если n отрицательно?
🤔 А знаете ли вы, что...
Python - это универсальный язык программирования.
-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))