初级
验证土壤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
👑
升级 VIP
解锁全部题目,畅通无阻地学习
- ✓ 解锁全部训练包所有题目
- ✓ 查看完整参考代码和提示
- ✓ 浏览器内直接运行 Python 代码
- ✓ 自动批改 + 进度追踪
30天
¥18
1年
¥99
2年
¥158
3年
¥199