【发布时间】:2018-03-15 00:21:59
【问题描述】:
所以我目前有一个功能可以输出输入高度的音障。
def soundbarier (y):
if 0 < y < 1524:
S = 340.3
elif 1524 < y < 3048:
S = 334.4
elif 3048 < y < 4572:
S = 328.4
elif 4572 < y < 6096:
S = 322.2
elif 6096 < y < 7620:
S = 316.0
elif 7620 < y < 9144:
S = 309.6
elif 9144 < y < 10668:
S = 303.6
elif 10668 < y < 12192:
S = 295.4
else:
S = 294.5
return (float(S))
我想用字典来缩短它,但我不能让它工作。
def SOUND(y):
return {
0 < float(y) < 1524: 340.3,
1524 < y < 3048: 334.4,
3048 < y < 4572: 328.4,
4572 < y < 6096: 322.2,
6096 < y < 7620: 316.0,
7620 < y < 9144: 309.6,
9144 < y < 10668: 303.6,
10668 < y < 12192: 295.4
}.get(y, 9)
print(SOUND(1500))
我真的不想要任何默认值。我怎样才能让它工作?我基本上需要该函数为某个范围内的某个 Y 输出 S。
【问题讨论】:
-
外部模块可以吗?
-
你能详细说明吗?
-
pandas有一个名为IntervalIndex的 API,它以对数时间构建树和索引。您还可以一次查询具有多个值的树。 -
那么不,我不熟悉外部模块。我想我被那个丑陋的功能所困扰吧?
-
不是一个通用的解决方案,但由于您的间隔以 1524 的倍数增加,您可以只除以 1524,四舍五入并使用该数字作为您的密钥。
标签: python python-3.x dictionary if-statement