问题描述
我在执行赋值操作时遇到嵌套单行条件语句的问题。
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]