Math 如何让python添加和分割多个变量?

Math 如何让python添加和分割多个变量?,math,raspberry-pi,python-3.5,sensors,pigpio,Math,Raspberry Pi,Python 3.5,Sensors,Pigpio,各位python程序员大家好。我正在建立一个树莓pi项目,该项目旨在使用我的花园湿度传感器。我设计了一个程序,可以读取30秒的读数,然后将它们平均成一个数字。它使用了四个传感器,并且使用了python3.5。所有传感器都工作得很好,但是我在让python计算输入的平均值时遇到了一个问题。我认为这是在增加变量,但似乎不是在划分变量。代码如下: TEST_SOIL() outpuT = str(output) print("Moisture:", o

各位python程序员大家好。我正在建立一个树莓pi项目,该项目旨在使用我的花园湿度传感器。我设计了一个程序,可以读取30秒的读数,然后将它们平均成一个数字。它使用了四个传感器,并且使用了python3.5。所有传感器都工作得很好,但是我在让python计算输入的平均值时遇到了一个问题。我认为这是在增加变量,但似乎不是在划分变量。代码如下:


        TEST_SOIL()
        outpuT = str(output)
        print("Moisture:", outpuT)
        GPIO.output(buzzer,GPIO.HIGH)
        sleep(0.1) # Delay in seconds
        GPIO.output(buzzer,GPIO.LOW)
        sleep(0.1)
        GPIO.output(buzzer,GPIO.HIGH)
        sleep(0.1) # Delay in seconds
        GPIO.output(buzzer,GPIO.LOW)
        print("TESTING SOIL")
        o1 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o2 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o3 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o4 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o5 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o6 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o7 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o8 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o9 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o10 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o11 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o12 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o13 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o14 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o15 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o16 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o17 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o18 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o19 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o20 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o21 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o22 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o23 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o24 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o25 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o26 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o27 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o28 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o29 = (output + output2 + output3 + output4/4)
        sleep(1)
        TEST_SOIL()
        o30 = (output + output2 + output3 + output4/4)
        sleep(1)
        o = (o1 + o2 + o3 + o4 + o5 + o6 + o7 + o8 + o9 + o10 + o11 + o12 + o13 + o14 + o15 + o16 + o17 + o18 + o19 + o20 + o21 + o22 + o23 + o24 + o25 + o26 + o27 + o28 + o29 + o30)
        o = (o/30) 
如果有人想知道“TEST_SOIL()”是什么,那就是我在程序前面创建的函数。其定义如下:

def TEST_SOIL():
   output = analogInput(0) # Reading from CH0
   output = interp(output, [0, 1023], [100, 0])
   output = int(output)
   output = (output - 12.5)
   output2 = analogInput(1) # Reading from CH0
   output2 = interp(output2, [1, 1023], [100, 1])
   output2 = int(output2)
   output2 = (output2 - 12.5)
   output3 = analogInput(2) # Reading from CH0
   output3 = interp(output3, [2, 1023], [100, 2])
   output3 = int(output3)
   output3 = (output3 - 12.5)
   output4 = analogInput(3) # Reading from CH0
   output4 = interp(output4, [3, 1023], [100, 3])
   output4 = int(output4)
   output4 = (output4 - 12.5)
我需要说明的是,该代码还控制一个小蜂鸣器,以清除与“GPIO.output(蜂鸣器,高/低)”文本的任何混淆。如果有人能告诉我如何修复此代码,那就太好了。
:)

(输出+输出2+输出3+输出4/4)
更改为
(输出+输出2+输出3+输出4)/4

代码首先将最后一个变量(ouotput4)除以四,然后将它们相加


(编辑:忘记了列表没有平均值函数。抱歉。您可以对某些列表使用
sum()
,然后将其除以此列表的
len()

我冒昧地重构了您的代码

我假设4个不同的模拟读数需要是这样的,并且没有接触到它们,但除此之外

  • test\u soil
    现在返回一个4元组的读数
  • average\u output()
  • beep()
    鸣响蜂鸣器
  • main
    在一个循环中调用上述位,将值收集到一个数组中,然后最终求平均值

这可能会修复您的代码并稍微整理一下 不用再写同样的东西,你可以使用for循环来简化工作

for step in range(30):
    TEST_SOIL()
    op_avg = (output1 + output2 + output3 + output4) / 4.0
    op = op + op_avg
    sleep(1)
op = op/30

希望它有帮助

我会试一试它说函数“TEST_solid()”有问题,所以我无法测试您的解决方案。你能帮我修好这个功能吗?它好像在工作。最后一件事,will告诉main“return final_average”输出一个我可以用来记录数据的变量?我试过了,但当我说“main()o=final_average”时,python说final_average没有定义。我还注意到一些奇怪的事情:即使我调整了传感器,代码也总是输出数字“20.5”。你能告诉我是代码在做这件事,还是传感器在做这件事吗?现在已经修好了。
for step in range(30):
    TEST_SOIL()
    op_avg = (output1 + output2 + output3 + output4) / 4.0
    op = op + op_avg
    sleep(1)
op = op/30