你仍然在太空中,远离月球在那里你正在执行你的秘密任务;飞奔回家吃晚饭。
突然……砰!那是什么?你的火箭正在疯狂地旋转,失去控制!没有选择:你必须跳出太空。
但太空真的很冷。或者可能真的很热。你不知道。但你可以找到!
在火箭的外部有一个温度传感器,你可以通过连接它来访问。传感器是一个迭代器,它将返回一个值序列。出于测试目的,我们包含了传感器sensor1,它可以感知大约1摄氏度的值。尝试连接,并从传感器读取(特定值和值的数量,每次调用都会不同):
不幸的是,火箭的疯狂运动导致传感器在有效结果之间提高ValueErrors。
也有微小的可能性,可能有一个外星人附着在传感器上,它试图说服你,温度真的很低,但实际上不是。我们还包括bad_sensor1,它带有这样一个外星人。
幸运的是,传感器有一个内置的检测机制.check_connection(val)来检测这些外星人。如果在有一个附加的外星人的情况下,查询传感器的次数足够多,它最终会识别出外星人并关闭传感器,如.check_connection(val)所示,抛出ValueError:(错误之前的调用次数将不同)
编写函数average_temp(sensor),它获取一个传感器,连接到它,读取它的所有值,并返回它所读取的值的平均值和数量。它还必须在每次读取一个值时检查传感器连接,但如果有一个外星人,它不应该处理异常,因为我们需要尽可能快地关闭连接。你的函数应该如下所示(数字会有所不同):
sensor1.connect()
next(sensor1)
1.1348676749282975
next(sensor1)
Traceback (most recent call last):
File "", line 1, in
File "/tmp/tmpXXXXXX/hidden_lib.py", line 52, in next
raise ValueError('Invalid reading')
ValueError: Invalid reading
bad_sensor1.connect()
bad_sensor1.check_connection(next(bad_sensor1))
bad_sensor1.check_connection(next(bad_sensor1))
Traceback (most recent call last):
File "", line 1, in
File "/tmp/tmpXXXXXX/hidden_lib.py", line 59, in check_connection
raise ValueError('Alien Detected!! Shutting down sensor.')
ValueError: Alien Detected!! Shutting down sensor.
average_temp(sensor1)
(1.0123845485572829, 45)
average_temp(bad_sensor1)
Traceback (most recent call last):
File "", line 1, in
File "program.py", line 24, in average_temp
sensor.check_connection(val)
File "/tmp/tmpXXXXXX/hidden_lib.py", line 59, in check_connection
raise ValueError('Alien Detected!! Shutting down sensor.')
ValueError: Alien Detected!! Shutting down sensor.
运行结果及报错内容
我的解答思路和尝试过的方法
from hidden_lib import TempSensor
from hidden_lib import sensor1
from hidden_lib import bad_sensor1
def average_temp(sensor):
# Write your code here.
pass
我想要达到的结果