Python, кратный, если еще функция и возврат - PullRequest
0 голосов
/ 25 апреля 2018

Возможно ли это на питоне?

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

1 Ответ

0 голосов
/ 25 апреля 2018
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) Нет необходимости настраивать переменную, которую вы хотите вернуть, все, что вам нужно сделать, это вернуть значение (например, return 1)

b) При написании Na == 1.0 вы фактически сравниваете и получаете логическое значение.

в) Попробуй посмотреть, сможешь ли ты изменить логику, чтобы не было так много статов (Похоже, что у тебя значение по умолчанию 1, поэтому ты можешь поместить все, например, в другой стат)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...