用Python函数构建字典

2024-09-28 01:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好~~:)我有一个Arduino Uno通过USB将传感器数据发送到PyCharm(Python IDE),之后我必须编译这些数据并写入CSV文件,以便稍后进行机器学习。你知道吗

我正在尝试用Python构建一个字典,作为一个函数,如下所示:

def readData():  # reads inputs from Arduino
   try:
     datastring = arduino.readline()
   except:
     pass
 return datastring

def build_dictionary(): # function to build dictionary
     incomingdata = readData()

    for incomingdata in arduino:
      incomingdata = incomingdata.strip()

    if incomingdata:
        datasplit = incomingdata.split(',')
        i = 0
        temperature = datasplit[i]
        i = i + 1
        humidity = datasplit[i]
        i = i + 1
        light = datasplit[i]
        i = 0
        dic = {'Temp': temperature, 'Humidity': humidity, 'Light': light}

当我把字典的某些部分打印出来时,“dic”,紧跟在“dic={…}之后,如:

print "dic['Temp']: ", dic['Temp']

我能够正常地获得输出(即PyCharm打印了Arduino发送给它的所有内容)。然而,当我做了以下事情:

def build_dictionary(): # function to build dictionary
     incomingdata = readData()

    for incomingdata in arduino:
      incomingdata = incomingdata.strip()

    if incomingdata:
        datasplit = incomingdata.split(',')
        i = 0
        temperature = datasplit[i]
        i = i + 1
        humidity = datasplit[i]
        i = i + 1
        light = datasplit[i]
        i = 0
        global dic
        dic = {'Temp': temperature, 'Humidity': humidity, 'Light': light}
   return dic

while True:
    print "dic['Temp']: ", dic['Temp']

结果是:

dic['Temp']:  24.00 
dic['Temp']:  25.00

只有前两个输出奇怪地打印出来。对Arduino板的检查显示,它仍在向PyCharm(Python)发送信息,但它们只是没有被打印出来。你知道吗

我能问一下我哪里出错了吗?你知道吗

非常感谢!:)


Tags: 数据builddictionarydeftemparduinopycharmlight
1条回答
网友
1楼 · 发布于 2024-09-28 01:26:38

听起来您需要从串行端口读取一行,然后处理该行,然后返回并获取新行,依此类推:

def readData(): # read just one line from arduino
    # simplified
    return arduino.readline()

def build_dictionary(incomingdata): # function to build dictionary
    dic = {}
    incomingdata = incomingdata.strip()
    if incomingdata:
        datasplit = incomingdata.split(',')
        temperature = datasplit[0]
        humidity = datasplit[1]
        light = datasplit[2]
        dic = {'Temp': temperature, 'Humidity': humidity, 'Light': light}
   return dic

while True:
    dic = build_dictionary(readData())
    print(dic)

注意:

这个代码永远循环。它无法停止(除非按ctrl-C)

更新:

使用计数器在多个样本后中断:

for _ in range(9999):
    dic = build_dictionary(readData())
    print(dic)

相关问题 更多 >

    热门问题