定义一个函数调用addFirstAndLast(x),它接受一个数字列表并返回第一个和最后一个数字的总和。
实施例
>>> addFirstAndLast([])
0
>>> addFirstAndLast([2, 7, 3])
5
>>> addFirstAndLast([10])
10
我的问题是,我不能在for循环中使用两个变量,所以我该怎么办,如何修复错误。什么可能是这个问题的改进代码。
def addFirstAndLast(x):
total = 0
total1 = 0
total2 = 0
pos_last = []
for num, last in x:
num = str(num)
num = num[0]
total1 += int(num)
last = last % 10
pos_last = pos_last.append(last)
total = sum(pos_last)
total2 = total+total1
return total2
print addFirstAndLast([2, 7, 3])
答案 0 :(得分:1)
3个不同的情况:1)列表为空,2)列表有一个元素,3)列表有两个或更多元素。
尝试不循环:
def addFirstAndLast(x):
if len(x) == 0:
return 0
elif len(x) < 2:
return x[0]
else:
return x[0]+x[-1]
>>> print addFirstAndLast([2, 7, 3])
5
>>> print addFirstAndLast([2, 3])
5
>>> print addFirstAndLast([3])
3
答案 1 :(得分:1)
x
是一个整数列表,当在for循环中使用x
时,每次迭代都会得到一个整数。但是当你这样做的时候 -
for num, last in x:
您正尝试将单个整数解压缩到2个位置,这种情况不会发生,并且会导致您的问题。
我甚至不确定你的其他逻辑是做什么的,你只需使用 -
即可def addFirstAndLast(x):
l = len(x)
return x[0] + x[-1] if l > 1 else x[0] if l > 0 else 0
示例 -
>>> addFirstAndLast([])
0
>>> addFirstAndLast([2, 7, 3])
5
>>> addFirstAndLast([10])
10
逻辑解释 - 表达式为 -
((x[0] + x[-1]) if l > 1 else x[0]) if l > 0 else 0
它首先检查最外面的if
条件,如果长度为0,则返回0,如果不是,则返回内部if
条件。
在内部if
条件下,如果length大于1(意味着有2个或更多元素),则返回first和last之和,否则(这意味着length大于0但小于2,意思是它1)它返回第一个元素。