我正试着用
"HCA_Status": 5 if CS.hcaSwitch else 7 if (lkas_enabled and apply_steer != 0) else 3,在我的代码中,如果hcaSwitch为真(它是布尔值控制的否则),我希望" HCA_Status“为5,否则为7,如果lkas_enabled为真,应用方向不为零,如果应用方向不等于零,而lkas_enabled为假,我需要HCA_Status为3
这有意义吗?如果这让人困惑,我很抱歉
下面是这段代码的完整代码
def create_pq_steering_control(packer, bus, apply_steer, idx, lkas_enabled, CS):
values = {
"HCA_Zaehler": idx,
"LM_Offset": abs(apply_steer),
"LM_OffSign": 1 if apply_steer < 0 else 0,
"HCA_Status": 5 if CS.hcaSwitch else 7 if (lkas_enabled and apply_steer != 0) else 3,
"Vib_Freq": 16,
}这有意义吗?
def create_pq_steering_control(packer, bus, apply_steer, idx, lkas_enabled, CS):
values = {
"HCA_Zaehler": idx,
"LM_Offset": abs(apply_steer),
"LM_OffSign": 1 if apply_steer < 0 else 0,
"HCA_Status": (
if CS.hcaSwitch:
5
elif lkas_enabled and apply_steer !=0:
3
else:
7
),
"Vib_Freq": 16,
}发布于 2021-03-14 12:51:26
if-else三元表达式有三个槽:<then> if <condition> else <default>您可以将任何表达式放在这些槽中的任何一个槽中,包括另一个if-else。为了消除歧义,请使用括号。
(a if b else c) if d else e # "if b" expression in "if d"'s <then> slot.
a if b else (c if d else e) # "if d" expression in "if b"'s <default> slot.此外,括在括号中的表达式直到结束括号时才结束,因此
(
a
if
b
else
c
)等同于
a if b else c发布于 2021-03-14 12:55:06
如果这是可能的,这可能不是一个好主意来做风格明智。
你可以做的是,有一个检查条件的函数,然后返回一个值。
def hca_status_function(CS, lkas_enabled, apply_steer):
hca_status=None
if CS.hcaSwitch:
hca_status=5
elif lkas_enabled and apply_steer != 0:
hca_status=7
else:
hca_status=3
return hca_status
values = {
"HCA_Zaehler": idx,
"LM_Offset": abs(apply_steer),
"LM_OffSign": 1 if apply_steer < 0 else 0,
"HCA_Status": hca_status_function(CS, lkas_enabled, apply_steer),
"Vib_Freq": 16,
}发布于 2021-03-14 13:22:18
我刚试过这个"HCA_Status": 5 if CS.hcaSwitch else 3 if (lkas_enabled and apply_steer !=0) else 7,,它现在编译/引导了..如果工作正常,必须在AM中进行测试
https://stackoverflow.com/questions/66621147
复制相似问题