坚持使用 Python if-else one line 语句

问题描述

我在执行赋值操作时遇到嵌套单行条件语句的问题。

bob   = list(map(int,input().split()))
print(alice,bob)
a,b = 0
for i in range(3):
    a+=1 if alice[i]>bob[i] else (b+=1 if alice[i]<bob[i] else 1)
print(a,b)```

Output: <br/>
File "/home/Algorithms/compare_triplets.py",line 6    
a+=1 if alice[i]>bob[i] else b=b+1 if alice[i]<bob[i] else 1

解决方法

您不能在内嵌的 if else 语句中使用 a += 1 之类的语句。只允许值,而 a += 1 不是值。您必须改用多行 if-elif-else(顺便说一句,它通常被认为更具可读性)。

,

如果你坚持一行,这行得通(但不是个好主意):

a,b = a + 1 if alice[i] > bob[1] else a,b + 1 if alice[i] < bob[i] else b

但是,目前还不清楚您希望 else 1 位实现什么。

有什么问题:

if alice[i] > bob[1]:
    a += 1
elif alice[i] < bob[1]:
    b += 1
else:
    # whatever you wanted with the `else 1`
    pass

当然,它多了几行,但实际上只有 60 个功能字符,而不是 75 个,所以如果你想要简洁,那就更好了。

,

您提供的代码有点不清楚,没有说明明确的目标。这是基于我的假设实现接近目标的代码:

  bob   = list(map(int,input().split()))
 print(alice,bob)
 a,b = 0
for i in range(3):

if alice[i]>bob[i]:
    a+=1 
else:
    b+=1
 print(a,b)
,

bob = list(map(int,input().split())) 打印(爱丽丝,鲍勃) a,b = 0 对于范围内的 i (3): a = 爱丽丝[i] > 鲍勃[1] ? a += 1 : a; b = alice[i]

我想你想要这个!!! :)

,

bob = list(map(int,b = 0 对于范围内的 i (3): a = 爱丽丝[i] > 鲍勃[1] ? a += 1 : a; b = alice[i]