如何在for循环中使用两个变量?

时间:2015-07-18 07:28:33

标签: python

定义一个函数调用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])

2 个答案:

答案 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)它返回第一个元素。