Ошибка при передаче списка значений с плавающей точкой в ​​функцию - PullRequest
0 голосов
/ 07 июня 2018

Неподдерживаемые типы операндов для -: 'str' и 'str'

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

x = ["%.2f"%(b*1000) for b in t] # t is a list of time values
y =  [c*0.002 for c in values]# values is a list of sensor values    
z = ["%.2f"%(d*48.484) for d in y]
p1,t1 = min_distance(z,x)
p2,t2 = max_distance(z,x)





def min_distance(self,z,x):

        count = True
        i =  0
        while count and (i+1) !=len(z):
            if abs(z[i] - z[i+1]) >= 1: 
            count = False
            else:
            i +=1
        min_value = z[i])
        min_time = x[i])
        return min_value,min_time


def max_distance(self,z,x):    

        count = 0
        j =  1
        while count<20:
            if abs(z[-j] - z[-j-1]) >=1: 
            count +=1
            else:
            j +=1
        max_value = z[-j+20]
        max_time = x[-j+20]
        return max_value,max_time

1 Ответ

0 голосов
/ 07 июня 2018

x, y и z - это массивы строк, а не целые числа или числа с плавающей точкой.Вы создаете их, используя подстановку строк, которая вставляет и форматирует значение с плавающей запятой, но приводит к строке.

Чтобы получить число с плавающей запятой, убедитесь, что b и c являются числами с плавающей запятой, или принудительно введите целое число с плавающей запятой, добавив десятичную точку.Например, если b является целым числом, b*1000 приведет к целому числу, но b*1000.0 или float(b*1000) даст число с плавающей запятой

Попробуйте, например: x = [b*1000 for b in t] и так далее, затемформатируйте любую результирующую строку (как вы это сделали) только тогда, когда вам нужен вывод, видимый пользователю.

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