← 返回题库
初级

验证土壤EC/pH读数量程合法性

未完成
初级参考 完整示例代码供参考,建议自己理解后重新输入
def solve():
    from pyodide.http import open_url
    from io import StringIO
    import pandas as pd, json
    payloads_csv = open_url("https://data.zuihe.com/dbd/ms-greenfarm/state_01/raw_payloads.csv").read()
    st_csv = open_url("https://data.zuihe.com/dbd/ms-greenfarm/state_01/sensor_types.csv").read()
    payloads = pd.read_csv(StringIO(payloads_csv))
    st = pd.read_csv(StringIO(st_csv))
    ranges = {r['metric']:(r['min_value'],r['max_value']) for _,r in st.iterrows()}
    def validate_soil(payload_str):
        try: p = json.loads(payload_str)
        except: return ['invalid_json']
        readings = p.get('readings',{})
        errors = []
        for metric, val in readings.items():
            if metric in ranges and isinstance(val,(int,float)):
                lo, hi = ranges[metric]
                if not (lo <= val <= hi):
                    errors.append(metric+"="+str(val)+" out_of_range["+str(lo)+","+str(hi)+"]")
        return errors
    soil_payloads = payloads[payloads['report_type']=='soil'].head(8)
    for _, row in soil_payloads.iterrows():
        errs = validate_soil(row['payload'])
        status = "FAIL "+str(errs) if errs else "OK"
        print("id="+str(row['id'])+" "+row['device_id']+": "+status)

示例

输入
solve()
期望输出
id=1 SOIL-A01: OK
id=6 SOIL-A03: OK
id=7 SOIL-A02: OK
id=8 SOIL-B01: OK
id=11 SOIL-X99: OK
id=12 SOIL-B03: OK
id=13 SOIL-A01: OK
id=14 SOIL-A01: OK
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码