Как исправить функцию, возвращающую none, приводящую к неподдерживаемому операнду для pow () - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь вызвать мою функцию «статистическая неопределенность» в другой моей функции «общая неопределенность». Но когда я делаю вывод статистической неопределенности возвращает число и «нет», что дает мне ошибку. Почему он возвращает «none», когда я использую его в totalUnsurety, но не когда я использую его один? это все равно получает ту же ошибку.

import numpy as np

xdata1=[72.2,77.6,82.4,86.3,88.9]
xdata2=[80.10,81.45,81.50,81.34,82.01]


def statisticalUncertainty(xdata):
   n = len(xdata)
   meanXdata=np.mean(xdata)
   for i in range(1,n):
      innerSum=0
      innerSum=innerSum+(xdata[i]-meanXdata)**2

   std = np.sqrt(innerSum*(1/(n*(n-1))))

   print(std)


def totalUncertainty(xdata,typeBUnc):
   typeAUnc = statisticalUncertainty(xdata)
   totalUnc = 2*(np.sqrt((typeAUnc)**2)+((typeBUnc)**2))

   print(totalUnc)
totalUncertainty(xdata1,0.5)

Я получаю ошибку: TypeError: unsupported operand type(s) for ** or pow(): 'NoneType' and 'int'

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Вам необходимо добавить возврат к вашей функции статистической неопределенности. Этот код работает нормально, и я предполагаю, что вы хотите

import numpy as np

xdata1=[72.2,77.6,82.4,86.3,88.9]
xdata2=[80.10,81.45,81.50,81.34,82.01]


def statisticalUncertainty(xdata):
   n = len(xdata)
   meanXdata=np.mean(xdata)
   for i in range(1,n):
      innerSum=0
      innerSum=innerSum+(xdata[i]-meanXdata)**2

   std = np.sqrt(innerSum*(1/(n*(n-1))))

   print(std)
   return std


def totalUncertainty(xdata,typeBUnc):
   typeAUnc = statisticalUncertainty(xdata)
   totalUnc = 2*(np.sqrt((typeAUnc)**2)+((typeBUnc)**2))

   print(totalUnc)
totalUncertainty(xdata1,0.5)
1 голос
/ 06 ноября 2019

Ваша функция статистическая неопределенность просто печатает значение, а не возвращает его. в этой функции вы должны использовать return вместо print

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...