减去列表Python的每个值

时间:2016-06-02 17:24:41

标签: python python-2.7 calculator subtraction

我正在尝试构建一个简单的计算器。我使用sum函数完成了加法部分。但是,我无法通过减法实现相同的功能。我想从它之前的值中减去列表中的每个值,即,如果列表(用户输入)是[10,5,3],我希望我的输出为10-5-3 = 2。到目前为止,这是我的代码。

def calculate():
    input = raw_input("input: ")
    if "+" in input:
        sum_val = sum(map(float, input.split('+')))
        if sum_val.is_integer():
            print int(sum_val)
        else:
            print sum_val
    elif "-" in input:
        print map(float, input.split('-'))

calculate()

用户输入可以是10-5-3。

7 个答案:

答案 0 :(得分:1)

试试这个 -

user_input = [10, 5, 3]

equation = '-'.join(map(str, user_input))

print(equation, '=', eval(equation))

输出 -

10-5-3 = 2

答案 1 :(得分:1)

l = [10,5,3]    
s = reduce(lambda x, y: x - y, l)

s == 2

答案 2 :(得分:1)

使用以下代码

替换行map(float, input.split('-'))
import functools
import operator

l = map(float, input.split('-'))
r = functools.reduce(operator.sub, l)   # 3

答案 3 :(得分:1)

你需要这两个功能:

from operator import sub
from functools import reduce
reduce(sub, map(float, input.split('-')))

答案 4 :(得分:1)

试试这个

l = [10,5,3]
if len(l) > 1:
   ans = l[0] - sum(l[1:])
else:
   ans = sum(l)
print(ans)

输出:2

答案 5 :(得分:0)

其他答案使用标准功能,尤其是functools.reduce

以下内容对我来说更简单,而它只使用意图列表:

head, *tail = [10, 5, 3]
r = sum(-x for x in tail, head)
print(r)

答案 6 :(得分:0)

听起来你可以使用 Sentinel 。 Sentinel基本上允许您跟踪循环中的任意条件。添加工作正常,因为您的初始总和为0,您可以继续添加以增加该值。但是使用减法,您需要使用列表中第一个出现的整数初始化一个sum变量,索引为0。

示例:

sum = 0
print_string = ""
sample_list = [10,5,3]
for i in range(len(sample_list)):
    if (i == 0):
        sum = sample_list[i]
    else:
        sum-=sample_list[i]

    if ((i+1) < len(sample_list)):
        print_string = print_string + str(sample_list[i]) + "-"

    # Now is time to finish it up
    print_string = print_string + "=" + str(sum)

    print(print_string)

输出:

10-5-3=2