m0_69759228 2022-05-22 15:46 采纳率: 50%
浏览 47
已结题

关于对于数据异常处理

你仍然在太空中,远离月球在那里你正在执行你的秘密任务;飞奔回家吃晚饭。
突然……砰!那是什么?你的火箭正在疯狂地旋转,失去控制!没有选择:你必须跳出太空。
但太空真的很冷。或者可能真的很热。你不知道。但你可以找到!
在火箭的外部有一个温度传感器,你可以通过连接它来访问。传感器是一个迭代器,它将返回一个值序列。出于测试目的,我们包含了传感器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

我想要达到的结果

  • 写回答

2条回答 默认 最新

  • Hann Yang 全栈领域优质创作者 2022-05-22 17:41
    关注

    用这种方式,行否?

    >>> j = (i for i in range(6))
    >>> 
    >>> def func(g):
        try:
            return(next(g))
        except:
            return None
    
        
    >>> while True:
        a = func(j)
        print(a)
        if a==None:
            break
    
        
    0
    1
    2
    3
    4
    5
    None
    
    评论

报告相同问题?

问题事件

  • 系统已结题 5月30日
  • 创建了问题 5月22日

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料