Python 返回错误值
我是Python新手,作为工作培训的一部分学习Python,但从一些HTML和C/C++开始。任何关于我将如何使这个部分工作的建议都将是非常棒的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
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