【问题标题】:Creating a loop in Python and taking the average reading在 Python 中创建一个循环并获取平均读数
【发布时间】:2020-05-18 00:01:11
【问题描述】:

首先,我不是程序员,我可以将代码拼凑在一起,但我被这个难住了。我有一个声纳距离传感器,我想读取 10 个读数来找到这些读数的平均值。我发现第一次阅读通常很遥远,所以认为 10 会是一个不错的数字。找到了一些关于基本循环的教程,但不知道如何将其应用于我的情况。这是我要循环的一段代码和当前输出。有什么建议吗?

GPIO.output(PIN_TRIGGER, GPIO.HIGH)

  time.sleep(0.00001)

  GPIO.output(PIN_TRIGGER, GPIO.LOW)

  while GPIO.input(PIN_ECHO)==0:
        pulse_start_time = time.time()
  while GPIO.input(PIN_ECHO)==1:
        pulse_end_time = time.time()

  pulse_duration = pulse_end_time - pulse_start_time
  distance = round(pulse_duration * 17150, 2)
  print "Distance:",distance,"cm"

【问题讨论】:

  • 我假设您共享的代码对您有效,并让您在distance 中获得单次阅读,对吗?你想一个接一个地读取 10 个这样的读数并计算这 10 个读数的平均值吗?那么,对于 10 个读数中的每一个,您想将这些读数相加并除以 10 吗?
  • 是的。非常正确。代码目前有效,请给我一读。
  • 如果你看过一些关于循环的教程并注意了,你肯定找到了一些关于如何尝试编码的线索“对于 10 个读数中的每一个,你想将这些读数加在一起并将总和除以 10” ?请分享您尝试过的内容,并说明如果它不起作用,您不明白什么。
  • 我的编码能力非常低。我确实看过一些教程并了解他们在做什么,但它们太笼统了。许多人只使用了一个While。我不明白如何使用我当前的 While 语句创建循环。我尝试过的一切都给了我错误。
  • 我可以弄清楚如何手动进行多次读数并取这些数字的平均值,但我认为我应该尝试用更少的代码以正确的方式来做。 ;)

标签: python loops average distance sensors


【解决方案1】:

听起来您可能想丢弃第一个读数,然后平均接下来的 10 个读数。平均 10 个读数的最简单方法是这样的循环:

accumulator = 0
for _ in range(10):
    reading = take_reading()
    accumulator += reading
average = accumulator / 10

解释:

accumulator = 0 这会初始化一个变量来存储读数的总和。

for _ in range(10): 我们想要循环 10 次。我们不需要对循环计数器做任何事情,因此我们可以使用下划线 _ 而不是定义一个变量来捕获它。

reading = take_reading()获取我们要的数据。

accumulator += reading将我们当前的数据添加到我们的累加器中。

average = accumulator / 10 这行没有缩进结束了for 循环。
取我们 10 个读数的平均值。

理想情况下,您可能希望将读取过程放入returns 读取的函数中。然后你可以设置你的循环来获得多个读数,就像我的例子一样。

【讨论】:

  • 好吧好吧。那是有帮助的。做一些调查,我认为这些将由 DEF 设置?
  • 是的,def take_reading(): 然后缩进你的代码行以获得阅读。通过returning 完成您读取的值。
  • 太棒了!知道了!不得不进行一些试验和错误,但现在了解它需要如何工作。搞定了!非常感谢!
  • 不客气。很高兴听到你想通了。并感谢您的检查。
猜你喜欢
  • 2019-01-20
  • 1970-01-01
  • 2020-12-23
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 2014-04-20
  • 1970-01-01
相关资源
最近更新 更多