/ / Използване на условия в променливи задания в Python - python, променлива задача

Използване на условия в променливи задания в Python - python, variable-assignment

Искам да използвам условия в променлива задача в Python като как го правя в C #.

myLang = lang=="en" ? "en" : lang=="ger" ? "de" : "fa";

намерих този въпрос което казва, че Питон има такива.

num1 = (20 if someBoolValue else num1)

Но не мога да разбера как работи в моя случай. Възможно ли е да се направи нещо подобно в Python?

Отговори:

5 за отговор № 1

Да, възможно е:

myLang = "en" if lang == "en" else "de" if lang == "ger" else "fa"

Истинските и фалшиви изрази на един условен израз са просто повече изрази. Можете да поставите друг условен израз на това място.

Ако тя улеснява четенето, можете да поставите скоби около изразите, за да ги групирате визуално. Python няма нужда от тези, тъй като условното изразяване има a много ниско предимство на оператора; само lambda е по-ниска.

С отметки се чете:

myLang = "en" if lang == "en" else ("de" if lang == "ger" else "fa")

Има по-добри начини за картографиране lang към двузначен низ обаче. Използване на речник, например:

language_mapping = {"en": "en", "ger": "de"}
myLang = language_mapping.get(lang, "fa")

ще бъде по подразбиране "fa" освен ако lang стойността е в картографирането, използвайки dict.get() метод.


3 за отговор № 2

Проблемът с това в кода е, че е, добре, hardcoded. Направи го в данните вместо това.

langmap = {
"en": "en",
"ger": "ge"
}

...
myLang = langmap.get(lang, "fa")
...

Въпреки че на немски се дава съкращението "de" (за "deutsche"), а не "ge".


1 за отговор № 3

C # кодът се интерпретира като:

myLang = lang=="en" ? "en" : (lang=="ger" ? "ge" : "fa");

Така че просто правете същото за Python:

myLang = "en" if lang=="en" else ("ge" if lang=="ger" else "fa")

или без скобите:

myLang = "en" if lang=="en" else "ge" if lang=="ger" else "fa"