Журнал Python, Ошибка значения: ошибка математического домена - PullRequest
0 голосов
/ 02 февраля 2019

Я изучаю математику с python, когда я попробовал этот код для журнала, он выдает мне эту ошибку, пожалуйста, помогите?

import math

n2 = [0,1,2,3]
for i in range(1,3):
  x = math.log2(n2[i])
n2 += x
print(n2)

это дает мне ошибку значения: "ValueError: ошибка математической области"

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Этот код, как опубликовано, вызывает другую ошибку: TypeError: 'float' object is not iterable.

Однако полученная вами ошибка воспроизводится этим кодом:

import math

n2 = [0, 1, 2, 3]
for i in n2:
    x = math.log2(i)

Вы пытаетесьзвонить math.log2 с 0, что не имеет смысла.Как говорится в ошибке, 0 не принадлежит ни одной из функций log.Не существует такого x, который удовлетворял бы kx= 0 для любого k.

0 голосов
/ 02 февраля 2019

Вы определяете n2 как список.Но ближе к концу вы пытаетесь выполнить

n2 += x

Вы пытаетесь добавить значение с плавающей запятой x в список n2.Это вызывает ошибку

'float' object is not iterable

Обратите внимание, что не ошибка, которую вы указали в своем вопросе.Указанная вами ошибка является результатом, если вы измените range(1,3) на range(3) или range(0, 3).Он пытается взять логарифм первого элемента в вашем массиве, а именно ноль, и у которого нет логарифма.

Возможно, вы захотите сделать отступ этой следующей за последней строкой и изменить ее на

n2 += [x]

Имеет распечатку

[0, 1, 2, 3, 0.0, 1.0]
...