在系列中处理Python int / string

时间:2016-11-14 16:08:38

标签: python string

我有一个python脚本轮询5个临时传感器并通过http将结果发布到mysql。其中一个传感器与其他4个传感器一样准确,因此我希望在发布到数据库之前将其乘以1.02来修改avgtemperatures [2]。

如何在系列中修改传感器int / string?

import requests
import hashlib
import time
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

sensorids = ["28-05168023f3ee", "28-0516803623ee", "28-0416807d93ee", "28-0516801a63ee", "28-0516801b03ee"]
avgtemperatures = []
for sensor in range(len(sensorids)):
    temperatures = []
    for polltime in range(0,3):
            text = '';
            while text.split("\n")[0].find("YES") == -1:
                    tfile = open("/sys/bus/w1/devices/"+ sensorids[sensor] +"/w1_slave")
                    text = tfile.read()
                    tfile.close()
                    time.sleep(1)
            secondline = text.split("\n")[1]
            temperaturedata = secondline.split(" ")[9]
            temperature = float(temperaturedata[2:])
            temperatures.append(temperature / 1000)
            avgtemperatures.append(sum(temperatures) / float(len(temperatures)))

print avgtemperatures[0]
print avgtemperatures[1]
print avgtemperatures[2]
print avgtemperatures[3]
print avgtemperatures[4]

session = requests.Session()

nonce = session.get(url='http://server.local/saveTemp.php?step=nonce').text

response = hashlib.sha256(nonce + 'password' + str(avgtemperatures[0]) + str(avgtemperatures[1]) + str(avgtemperatures[2]) + str(avgtemperatures[3]) + str(avgtemperatures[4])).hexdigest()

post_data = {'response':response, 'temp1':avgtemperatures[0], 'temp2': avgtemperatures[1], 'temp3': avgtemperatures[2], 'temp4': avgtemperatures[3], 'temp5': avgtemperatures[4]}

post_request = session.post(url='http://server.local/saveTemp.php', data=post_data)

if post_request.status_code == 200 :
    print post_request.text

1 个答案:

答案 0 :(得分:0)

使用带有权重因子的第二个列表,zip列表并相应地乘以每个值:

avgtemperatures = [1.0, 2.0, 3.0, 4.0, 5.0]
weights = [1.0, 1.0, 1.02, 1.0, 1.0]
weightedaverages = [a * w for a, w in zip(avgtemperatures, weights)]
print(weightedaverages)
# [1.0, 2.0, 3.06, 4.0, 5.0]