如何映射Python中范围(n)范围内的所有值

时间:2012-11-13 09:28:47

标签: python python-3.x

我正在尝试制作我的第一个Python计算器,它可以添加用户给出的给定值。问题是,有时我们可能会添加几个值,a + b不仅仅是我们a + b + d + g + h + ...的添加,因此我定义了一个范围,最多n,其中n是用户输入。

现在的问题是,如果用户在范围内给出值5,那么如何映射该范围内的每个值以输入要添加的值?

代码:

 def main():
    print("how many no.s are we dealing with?");
    n=int(input(""));
    for i in range(n):
        print("addition:");

简而言之,我只想让用户首先输入要添加的值的数量,然后用户必须键入要为计算器输入的所有值,以便添加它们。

如果用户有3个数字范围[a + b + c],那么用户会在第一个提示中键入3,然后他会在每个提示中输入a, b, c个值来表示总

1 个答案:

答案 0 :(得分:0)

def main():
    n=int(input("how many no.s are we dealing with?"))
    result = 0
    for i in range(n):
        value = float(input('enter next number to add'))
        result += value
    print('the result is {0}'.format(result))

请注意缺少;

这是如何工作的,结果初始化为0.然后每次循环迭代时,都会要求用户输入一个数字。然后将该数字添加到结果中。


然而,有一种更简单的方法:

sum_string = input('please enter a sum. for example: "1 + 2 + 10 ..."') #1
result = sum([float(i) for i in sum_string.split('+')])                 #2
print('the result is {0}'.format(result))                               #3

这是如何工作的:

第1行中的

:您要求用户输入字符串并存储

第2行:你做了很多......我将逐件检查:

  • sum_string.split('+')获取用户输入的字符串并将其转换为列表。例如:1+2+ 45'.split('+') => ['1','2',' 45']
  • 继续上面的示例:[float(i) for i in ['1','2',' 45']] => [1,2,45] 这称为列表理解。它很棒,完全值得一看
  • 最后sum([1,2,45])=> 48`
第3行中的

:我们打印出结果。我不确定你想用它做什么

注意:这不适用于负数,但可以适应这样做......