adugin
@adugin

В чём ошибка в конструкторе Decimal()?

Вот и моя очередь задавать дурацкие вопросы подошла. Медитирую над этим:
5e18ce25c122f118994211.png
Код для воспроизведения
import numpy as np
from decimal import Decimal

t = tuple(np.square(Decimal(123).as_tuple().digits))

assert t == (1, 4, 9)
assert type(t) is tuple
assert type(t) == type((1, 4, 9))

Decimal((0, (1, 4, 9), 0))
Decimal((0, t, 0))


В чём загвоздка?
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
kshnkvn
@kshnkvn Куратор тега Python
t.me/kshnkvn
Суть в том, что тут
assert type(t) == type((1, 4, 9))
Проверка кортежа, а не его элементов.
>>> type(t[0])
<class 'numpy.int32'>

А Decimal хочет видеть кортеж символов, а не объектов класса numpy. Я не силён в numpy, от слова вообще, так что самое тупое, но рабочее решение, что мне сразу пришло в голову:
>>> Decimal((0, tuple([int(x) for x in t]), 0))
Decimal('149')

Дальше сам танцуй.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
если всем давать - сломается кровать
либо скобки лишние

либо кортеж из одного элемента обязан содержать запятую (иначе это просто скобки - сахар)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Сибур Нижний Новгород
от 100 000 ₽
Big Data Solutions Санкт-Петербург
от 100 000 до 220 000 ₽
от 140 000 до 190 000 ₽
17 февр. 2020, в 00:30
1500 руб./за проект
16 февр. 2020, в 22:28
2000 руб./за проект