Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 返回错误值_Python_Python 2.7 - Fatal编程技术网

Python 返回错误值

Python 返回错误值,python,python-2.7,Python,Python 2.7,我是Python新手,作为工作培训的一部分学习Python,但从一些HTML和C/C++开始。任何关于我将如何使这个部分工作的建议都将是非常棒的 def compute(tank_data): #in the parenthesis are the variables you want to pass from one def to another aggregates = {} list = [] for tank in tank_data: # sum = 0 max_val

我是Python新手,作为工作培训的一部分学习Python,但从一些HTML和C/C++开始。任何关于我将如何使这个部分工作的建议都将是非常棒的

def compute(tank_data): #in the parenthesis are the variables you want to pass from one def to another
aggregates = {}
list = []
for tank in tank_data: #
    sum = 0
    max_value = 0
    min_value = 1000
    #standdev = 0
    for reading in tank_data[tank]:
        sum = sum + float(reading)
        '''max_value = round(max(float(reading)),2)
        min_value = round(min(float(reading)),2)'''
        if reading >= max_value:
            max_value = float(reading)
        else:
            max_value = max_value
        if reading <= min_value:
            min_value = float(reading)
        else:
            min_value = min_value
        #standdev
    if tank in aggregates:
        aggregates[tank]['avg'] = round(sum/len(tank_data[tank]),2) #computing and printing average simutaneously
        aggregates[tank]['max'] = round(max_value,2)
        aggregates[tank]['min'] = round(min_value,2)
        #aggregates[tank]['STDEV'] = round()
    else:
        aggregates[tank] = {}
        aggregates[tank]['avg'] = round(sum/len(tank_data[tank]),2)
        aggregates[tank]['max'] = round(max_value,2)
        aggregates[tank]['min'] = round(min_value,2)
        #aggregates[tank]['STDEV'] = round()
print aggregates
我得到错误“float”对象不可编辑


任何帮助都将不胜感激。:)

您只有一个浮点/元素,不要调用
max
。如果你有一个列表,元组等等。。如果您在上面使用max,那么获取单个数字的max是没有意义的:

 round(max(map(float,tank_data[tank])),2) # iterable of floats

 round(float(reading),2)  # single float
使用您自己的代码,正如我想象的,这是一个练习,将所有映射到float,然后使用reading变量检查:

sm = 0 
max_value = float("-inf")
min_value = float("inf")
for reading in map(float,tank_data[tank]): # map all to float
    sm += reading
    reading = round(reading, 2) # single float
    if reading > max_value:
        max_value = reading
    if reading < min_value:
        min_value = reading
sm=0
最大值=浮动(“-inf”)
最小值=浮动(“inf”)
用于读入地图(浮子,油箱数据[油箱]):#将所有地图都映射到浮子
sm+=读数
读数=圆形(读数,2)#单浮点数
如果读数>最大值:
最大值=读数
如果读数<最小值:
最小值=读数
您不需要使用
max\u value=round(…
您正在使用if/else块执行逻辑。您应该在检查当前值与迄今为止看到的最低/最高值之后进行更新


在隐藏内置函数时,还应避免使用sum和list作为变量名。

使用python的内置函数:

def compute(tank_data):
    aggregates = {}
    list = []
    for tank, data in tank_data.iteritems():
        numbers = [float(v) for v in data]
        total = sum(numbers)
        max_value = max(numbers)
        min_value = min(numbers)
        info = {
            'avg': round(total/len(numbers),2) 
            'max': round(max_value,2),
            'min': round(min_value,2),
        }
        aggregates.set_default(tank, {}).update(info)
    print aggregates

如何获得单个浮点数的最大值?只有无效的括号,请修改说明,您将得到答案。谢谢!在你们的帮助下,我能够消除一个错误以及人们给出的答案,但是错误值导致了另一个错误。@Daniel。谢谢!我能够从您的操作中找到反向工作的错误。@Daniel回答。我现在得到了最大值和最小值,虽然有些值与我在excel中得到的值不一样。谢谢@Padraic Cunningham。当我使用if/else语句时,它仍然不是很高兴。不过谢谢!我现在一切都正常了。@Tobytoyo,如果读数小于或,你实际上只需要更新max和min>当前最小值或最大值
def compute(tank_data):
    aggregates = {}
    list = []
    for tank, data in tank_data.iteritems():
        numbers = [float(v) for v in data]
        total = sum(numbers)
        max_value = max(numbers)
        min_value = min(numbers)
        info = {
            'avg': round(total/len(numbers),2) 
            'max': round(max_value,2),
            'min': round(min_value,2),
        }
        aggregates.set_default(tank, {}).update(info)
    print aggregates