我正在尝试为我的温度传感器制作代码。当我尝试执行代码时,卡在NameError
上。我的问题是,有没有人知道我做错了什么?
代码:
import datetime
from sense_hat import SenseHat
def hotwater():
sense = SenseHat()
sense.clear()
celcius = round(sense.get_temperature(), 1)
result = 'temp. C' + str(celcius)
print(result)
result_list = [(datetime.datetime.now(), celcius)]
while __name__ == '__main__':
Hotwater()
错误:
Traceback (most recent call last):
file "/home/pi/Web_test.py", line 9 in <module>
results= 'temp. C' + str(celcius)
NameError: name 'celcius' is not defined
答案 0 :(得分:2)
变量Celsius只能在热水功能中访问。它不能在它之外访问。要解决此问题,您可以将打印移动到热水功能中:
def hotwater():
sense = SenseHat()
sense.clear()
celcius = round(sense.get_temperature(), 1)
result = 'temp. C' + str(celcius)
print(result)
result_list = [(datetime.datetime.now(), celcius)]
hotwater()
或者,你可能有热水回流摄氏度:
def hotwater():
sense = SenseHat()
sense.clear()
celcius = round(sense.get_temperature(), 1)
return celcius
celcius= hotwater()
result = 'temp. C' + str(celcius)
print(result)
result_list = [(datetime.datetime.now(), celcius)]
虽然您可以使用global关键字在任何地方访问摄像头,但这通常是不受欢迎的。
答案 1 :(得分:1)
您的函数无法将值返回给主程序。
变量celcius
[sic]是函数的本地变量。
此外,您无法调用尝试使用该值的函数。
按照学习材料中的示例进行操作:调用函数,将值返回到主程序,并根据需要保存或使用它:
def hotwater():
sense = SenseHat()
sense.clear()
return round(sense.get_temperature(), 1)
if __name__ == '__main__':
while True:
celsius = hotwater()
result = 'temp. C' + str(celcius)
print(result)
result_list = [(datetime.datetime.now(), celcius)]
我不确定您对result_list
有什么计划,但我认为您需要更新上面的代码。