我收到一本字典,并要求在不使用 sum、len 或 count 函数的情况下查找每个索引中高于特定阈值的术语的频率

问题描述 投票:0回答:1

我收到一本字典,要求使用函数和方程来计算落入某个阈值的项目的频率,而不使用 sum、len 或 count,也不需要导入 numpy 或其他程序。当我打印结果时,我不断遇到问题,但术语没有定义。我对功能的处理很差,所以我对此表示歉意。

字典给出为

observation = {'temperature': [85, 90, 15, 25, 90, 11, 20, 15, 25],
           'dewpoint': [80, 85, 10, 20, 85, 8, 15, 15, 22],
           'wind speed': [5, 10, 2, 0, 25, 30, 35, 4, 2],
           'precipitation': [0, 0, 0, 2, 1, 0, 1, 0, 3]}

并要求对每个指标打印出“温度超过50 3次”等。 到目前为止我已经得到以下代码:

def temp_freq():

    exceedances = 0 

    threshold = 50

    for value in observation['temperature']:
        if value > threshold:
            exceedances += 1
   
    return exceedances

print(f"temperature exceeded {threshold} {temp_freq(exceedances):.1f} times")

我不断收到关于在打印语句中定义术语的错误

错误: NameError:名称“阈值”未定义

python
1个回答
0
投票

您收到错误

Error: name 'threshold' is not defined
,因为阈值(以及超出范围)超出了您使用它们的范围。它们仅在函数执行期间存在于本地
temp_freq():

您可以将这两个常量从函数中取出或将它们作为参数发送给函数

def temp_freq(threshold, exceedances):


for value in observation['temperature']:
    if value > threshold:
        exceedances += 1
   
return exceedances 


exceedances = 0 
threshold = 50

print(f"temperature exceeded {threshold} {temp_freq(threshold, exceedances):.1f} times")
© www.soinside.com 2019 - 2024. All rights reserved.