Python multiple if else函数并返回

2024-05-14 06:16:46 发布

您现在位置:Python中文网/ 问答频道 /正文

这在python上可能吗?你知道吗

def NearSourceFactor(seismic_source_distance,seismic_source_select): 
    Na = 0 
    if (seismic_source_distance <= 2) and (seismic_source_select == "A"):
        Na == 1.5
    elif (seismic_source_distance <= 5) and (seismic_source_select == "A"):
        return Na == 1.2
    elif (seismic_source_distance > 10) and (seismic_source_select == "A"):
        return Na == 1.0
    elif (seismic_source_distance <= 2) and (seismic_source_select == "B"):
        return Na == 1.3
    elif (seismic_source_distance <= 5) and (seismic_source_select == "B"):
        return Na == 1.0
    elif (seismic_source_distance > 10) and (seismic_source_select == "B"):
        return Na == 1.0
    elif (seismic_source_distance <= 2) and (seismic_source_select == "C"):
        return Na == 1.0
    elif (seismic_source_distance <= 5) and (seismic_source_select == "C"):
        return Na == 1.0
    elif (seismic_source_distance > 10) and (seismic_bldg_geometry == "C"):
        return Na == 1.0

Na = NearSourceFactor(seismic_source_distance,seismic_source_select) 

seismic_source是10,seismic_source_select=B,但不幸的是答案是“无”

我希望答案是1.0


Tags: and答案sourcereturnifdefselectdistance
1条回答
网友
1楼 · 发布于 2024-05-14 06:16:46
def NearSourceFactor(seismic_source_distance,seismic_source_select): 

    if (seismic_source_distance <= 2) and (seismic_source_select == "A"):
        return 1.5
    elif (seismic_source_distance <= 5) and (seismic_source_select == "A"):
        return 1.2
    elif (seismic_source_distance > 10) and (seismic_source_select == "A"):
        return 1.0
    elif (seismic_source_distance <= 2) and (seismic_source_select == "B"):
        return 1.3
    elif (seismic_source_distance <= 5) and (seismic_source_select == "B"):
        return 1.0
    elif (seismic_source_distance >= 10) and (seismic_source_select == "B"):
        return 1.0
    elif (seismic_source_distance <= 2) and (seismic_source_select == "C"):
        return 1.0
    elif (seismic_source_distance <= 5) and (seismic_source_select == "C"):
        return 1.0
    elif (seismic_source_distance > 10) and (seismic_bldg_geometry == "C"):
        return 1.0

Na = NearSourceFactor(seismic_source_distance,seismic_source_select) 

我修复了它,所以它可以做你想要的,但请注意以下事项:

a)没有理由配置要返回的变量,只需返回值(例如,返回1)

b)写入Na==1.0时,实际上是在比较并接收布尔值。你知道吗

c)试着看看是否可以将逻辑更改为没有那么多if语句(似乎您的默认值为1,因此可以将所有内容放在else语句中(例如)

相关问题 更多 >