如何为BeagleBone Black传感器输出添加时间并解决语法报错
问题解答
语法错误原因
- 直接触发报错的原因是
print('%f\t%f' % (reading, volts)这一行末尾缺少闭合的右括号),Python解析器会判定当前表达式未结束,将下一行的time.sleep(0.5)识别为print语句的参数内容,因此报语法错误。注意Python语法报错箭头指向的行不一定是错误本身的位置,需要优先检查上一行的语法完整性。 - 你给出的代码中
ADC.setup()和首行print语句存在多余的前置缩进,不属于任何代码块的顶层代码不需要缩进,也会引发语法异常。 - 你尝试编写的时间相关代码段存在两个问题:一是print语句同样缺少闭合右括号,二是格式化符写为
\%s是错误用法,不需要加反斜杠转义,直接使用%f(输出浮点型时间)即可。
修复后可直接运行的代码
import Adafruit_BBIO.ADC as ADC import time sensor_pin = 'P9_40' ADC.setup() print('Reading\t\tVolts\t\tRun Time(s)') start_time = time.time() while True: reading = ADC.read(sensor_pin) volts = reading * 1.800 run_seconds = time.time() - start_time print(f"{reading:.6f}\t{volts:.6f}\t{run_seconds:.2f}") time.sleep(0.5)
更优的秒级运行时间输出方案
- 优先使用Python3.6+支持的f-string做字符串格式化,不需要手动匹配占位符和参数顺序,代码可读性更高,可通过
:数字的格式直接指定保留的小数位数,适配秒级输出的精度需求。 - 如果需要累计运行时间,将
start_time定义在循环体外即可,不需要额外引入其他依赖。
内容的提问来源于stack exchange,提问作者Nicholai Mørch Rindarøy
相关产品推荐
相关产品推荐

