gpt4 book ai didi

python - 将具有多个 if else 语句的函数转换为字典

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:52 24 4
gpt4 key购买 nike

所以我目前有一个函数可以输出输入高度的音障。

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 的函数。

最佳答案

Mathemagic by @Tim .

consts = [340.3, 334.4, 328.4, 322.2, 316.0, 309.6, 303.6, 295.4, 295.5]

def soundbarrier(y):
return consts[
-1 if (not (0 < y < 12192) or y % 1524 == 0) else y // 1524
]

In [1]: soundbarrier(1500)
Out[1]: 340.3

In [2]: soundbarrier(10000)
Out[2]: 303.6

In [3]: soundbarrier(100)
Out[3]: 340.3

In [4]: soundbarrier(1524)
Out[4]: 295.5

关于python - 将具有多个 if else 语句的函数转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49289685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com