Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中对数组中选定的元素求和?(多输入)_Python_Arrays_List_For Loop - Fatal编程技术网

如何在python中对数组中选定的元素求和?(多输入)

如何在python中对数组中选定的元素求和?(多输入),python,arrays,list,for-loop,Python,Arrays,List,For Loop,代码如下: PRICE = [1000, 1100, 1200, 1300, 1400, 1500] x = raw_input() for i, v in enumerate(PRICE): print total price 例如,用户输入1 3 2 所以x是我从用户那里得到的多个输入。 我如何总结它们?答案应该是1100+1300+1200+1200=4800 我想创建一个代码,即使我改变了输入,我仍然能够总结它们。例如,如果我将x更改为2,那么我的总和将为4700。您可以将用户输

代码如下:

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
x = raw_input() 

for i, v in enumerate(PRICE):

print total price
例如,用户输入1 3 2 所以x是我从用户那里得到的多个输入。 我如何总结它们?答案应该是1100+1300+1200+1200=4800
我想创建一个代码,即使我改变了输入,我仍然能够总结它们。例如,如果我将x更改为2,那么我的总和将为4700。

您可以将用户输入转换为如下索引:

print sum(PRICE[int(a)] for a in x.split())
但是,只有当原始输入的格式是您所说的:整数被空格分割时,它才会起作用。当然,如果提供的值大于列表长度,则很容易出现索引器错误:列表索引超出范围


编辑:删除了martineau在评论中建议的中间列表创建,您可以将用户输入转化为如下索引:

print sum(PRICE[int(a)] for a in x.split())
PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
x = raw_input() 

for i, v in enumerate(PRICE):

print total price
但是,只有当原始输入的格式是您所说的:整数被空格分割时,它才会起作用。当然,如果提供的值大于列表长度,则很容易出现索引器错误:列表索引超出范围

编辑:删除了martineau在评论中建议的中间列表创建

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
x = raw_input() 

for i, v in enumerate(PRICE):

print total price
嗯,我卡住了,我不能回答,但我能做点什么吗

也许我可以打印一些东西给我更多的想法

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
x = raw_input() 
print x

for i, v in enumerate(PRICE):
    print i, v

>>>
you said 2
0 1000
1 1100
2 1200
3 1300
4 1400
5 1500
所以我从0数到5,v是价格,他们说2。现在怎么办

也许我现在可以把它们加起来?v是价格,所以我把它们加起来

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    v = v + v

print v

>>> 
you said 3
3000
3000?3000是多少?哦,它来自上一个,1500+1500。所以我不能那样用v

嗯,我知道列表,如果我这样做呢

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
TOTAL = []

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    TOTAL = TOTAL + v

print TOTAL

>>>
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
TypeError: can only concatenate list (not "int") to list
那不是加起来的,只是复制而已!真是浪费时间

嗯,现在怎么办。我不知道,也许我会把我所有的东西都打印出来看看发生了什么:

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
TOTAL = []

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    TOTAL = TOTAL + [v]
    print "x:", x, "i:", i, "v:", v, "TOTAL: ", TOTAL


print TOTAL

>>> 
you said 2
x: 2 i: 0 v: 1000 TOTAL:  [1000]
x: 2 i: 1 v: 1100 TOTAL:  [1000, 1100]
x: 2 i: 2 v: 1200 TOTAL:  [1000, 1100, 1200]
x: 2 i: 3 v: 1300 TOTAL:  [1000, 1100, 1200, 1300]
x: 2 i: 4 v: 1400 TOTAL:  [1000, 1100, 1200, 1300, 1400]
x: 2 i: 5 v: 1500 TOTAL:  [1000, 1100, 1200, 1300, 1400, 1500]
[1000, 1100, 1200, 1300, 1400, 1500]
看,在某个点上,x是2,i是2。这就是他们输入的和我看到的相符的东西。我想要那个

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
TOTAL = []

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    if x == i:
        TOTAL = TOTAL + [v]

print TOTAL

>>> 
you said 2
[]
什么?我只是看到他们平起平坐,但这不起作用。太荒谬了,我讨厌它

>>> i = 1
>>> print i
1
>>> x = raw_input()
>>> print x
2
>>> raw_input() == 2
False

>>> help(raw_input)
Help on built-in function raw_input in module __builtin__:

raw_input(...)
    raw_input([prompt]) -> string

    Read a string from standard input.  The trailing newline...
哦,这提醒了我,我听说过弦

>>> x = raw_input()
>>> help(x)
no Python documentation found for '2'
>>> help(i)
Help on int object:
...
。。。hmm谷歌原始输入,int对象,python,比较,读取

对!

现在我在哪里

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
TOTAL = []

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    if x == str(i):
        TOTAL = TOTAL + [v]

print TOTAL

>>>
you said 2
[1200]
这是有史以来最酷的事情

*谷歌的“python添加列表”找到了

哦,但我不想用sum,我想把它们加在循环中

但至少现在我有了用户选择的东西

我还能做什么?我卡住了

*思考

我刚才找到了str。那怎么办

>>> help(str)
[gibberish]
我不知道这些东西是什么意思:

嘿,waitaminute

>>> help(str)
Help on class str in module __builtin__:

class str(basestring)
 |  str(object='') -> string
 |
 |  Return a nice string representation of the object.
 |  If the argument is a string, the return value is the same object.
 |
 |  __eq__(...)
 |      x.__eq__(y) <==> x==y
 |
嘿,伯爵在街上干什么?我要数东西!返回非重叠打哈欠跳过的次数

发现,这是我认识的一个词,我刚才看到int。为什么?哦,对了,我说了一些关于int的事

str找到int吗?返回在S中找到子字符串的最低索引

和。。在我能把它和x比较之前,我必须先进行stri

如果我

>>> x = raw_input()
>>> print x
2
>>> x.find
<built-in method find of str object at 0x0000000001E680A8>
我讨厌这个,太糟糕了

等等

几个小时后

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
TOTAL = []

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    if x.find(str(i)) > -1:
        TOTAL = TOTAL + [v]

print TOTAL

>>>
you said 23
[1200, 1300]
哦,我的话,我发现用户输入的东西不止一个

*几小时后

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
TOTAL = []

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    if x.find(str(i)) > -1:
        TOTAL = TOTAL + [v]

print TOTAL

add_total = 0
for i, v in enumerate(TOTAL):
    add_total = int(add_total) + int(v)

print "Total is:", str(add_total)

>>> 
you said 14
[1100, 1400]
Total is: 2500

这就是所有尝试背后真正发生的事情:{neat solution}:继续

知道答案的人知道,因为他们经历了很多这样的事情。也许那只是我?D:。经常这样做会让你产生很多熟悉感和你在其他地方看到的记忆模糊的东西,但这是行不通的,我以前试过,这就是为什么。。。时刻

不要逃避挫折,直接去做吧。学会爱它

嗯,我卡住了,我不能回答,但我能做点什么吗

也许我可以打印一些东西给我更多的想法

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
x = raw_input() 
print x

for i, v in enumerate(PRICE):
    print i, v

>>>
you said 2
0 1000
1 1100
2 1200
3 1300
4 1400
5 1500
所以我从0数到5,v是价格,他们说2。现在怎么办

也许我现在可以把它们加起来?v是价格,所以我把它们加起来

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    v = v + v

print v

>>> 
you said 3
3000
3000?3000是多少?哦,它来自上一个,1500+1500。所以我不能那样用v

嗯,我知道列表,如果我这样做呢

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
TOTAL = []

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    TOTAL = TOTAL + v

print TOTAL

>>>
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
TypeError: can only concatenate list (not "int") to list
那不是加起来的,只是复制而已!真是浪费时间

嗯,现在怎么办。我不知道,也许我会把我所有的东西都打印出来看看发生了什么:

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
TOTAL = []

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    TOTAL = TOTAL + [v]
    print "x:", x, "i:", i, "v:", v, "TOTAL: ", TOTAL


print TOTAL

>>> 
you said 2
x: 2 i: 0 v: 1000 TOTAL:  [1000]
x: 2 i: 1 v: 1100 TOTAL:  [1000, 1100]
x: 2 i: 2 v: 1200 TOTAL:  [1000, 1100, 1200]
x: 2 i: 3 v: 1300 TOTAL:  [1000, 1100, 1200, 1300]
x: 2 i: 4 v: 1400 TOTAL:  [1000, 1100, 1200, 1300, 1400]
x: 2 i: 5 v: 1500 TOTAL:  [1000, 1100, 1200, 1300, 1400, 1500]
[1000, 1100, 1200, 1300, 1400, 1500]
看,在某个点上,x是2,i是2。这就是他们输入的和我看到的相符的东西。我想要那个

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
TOTAL = []

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    if x == i:
        TOTAL = TOTAL + [v]

print TOTAL

>>> 
you said 2
[]
什么?我只是看到他们平起平坐,但这不起作用。太荒谬了,我讨厌它

>>> i = 1
>>> print i
1
>>> x = raw_input()
>>> print x
2
>>> raw_input() == 2
False

>>> help(raw_input)
Help on built-in function raw_input in module __builtin__:

raw_input(...)
    raw_input([prompt]) -> string

    Read a string from standard input.  The trailing newline...
哦,这提醒了我,我听说过弦

>>> x = raw_input()
>>> help(x)
no Python documentation found for '2'
>>> help(i)
Help on int object:
...
。。。hmm谷歌原始输入,int对象,python,比较,读取

对!

现在我在哪里

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
TOTAL = []

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    if x == str(i):
        TOTAL = TOTAL + [v]

print TOTAL

>>>
you said 2
[1200]
这是有史以来最酷的事情

*谷歌的“python添加列表”找到了

哦,但我不想用sum,我想把它们加在循环中

但至少现在我有了用户选择的东西

我还能做什么?我卡住了

*思考

我刚才找到了str。那怎么办

>>> help(str)
[gibberish]
我不知道这些东西是什么意思:

嘿,waitaminute

>>> help(str)
Help on class str in module __builtin__:

class str(basestring)
 |  str(object='') -> string
 |
 |  Return a nice string representation of the object.
 |  If the argument is a string, the return value is the same object.
 |
 |  __eq__(...)
 |      x.__eq__(y) <==> x==y
 |
嘿,伯爵在街上干什么?我要数东西!返回非重叠打哈欠跳过的次数

发现,这是我认识的一个词,我刚才看到int。为什么?哦,对了,我说了一些关于int的事

str找到int吗?返回在S中找到子字符串的最低索引

和。。在我能把它和x比较之前,我必须先进行stri

如果我

>>> x = raw_input()
>>> print x
2
>>> x.find
<built-in method find of str object at 0x0000000001E680A8>
我讨厌这个,太糟糕了

等等

几个小时后

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
TOTAL = []

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    if x.find(str(i)) > -1:
        TOTAL = TOTAL + [v]

print TOTAL

>>>
you said 23
[1200, 1300]
哦,我的话,我发现用户输入的东西不止一个

*几小时后

PRICE = [1000, 1100, 1200, 1300, 1400, 1500]
TOTAL = []

x = raw_input() 
print "you said", x

for i, v in enumerate(PRICE):
    if x.find(str(i)) > -1:
        TOTAL = TOTAL + [v]

print TOTAL

add_total = 0
for i, v in enumerate(TOTAL):
    add_total = int(add_total) + int(v)

print "Total is:", str(add_total)

>>> 
you said 14
[1100, 1400]
Total is: 2500

这就是所有尝试背后真正发生的事情:{neat solution}:继续

知道答案的人知道,因为他们经历了很多这样的事情。也许那只是我?D:。经常这样做会让你产生很多熟悉感和你在其他地方看到的记忆模糊的东西,但这是行不通的,我以前试过,这就是为什么。。。时刻


不要逃避挫折,直接去做吧。学会爱上它。

首先,你能把所有的价格加起来吗?那么你能把用户输入的一个价格加起来吗?@tessellingheckler把所有的价格加起来吗?如果我先把所有的价格加起来,我怎么才能把价格加起来呢?如果你不能解决一个问题,试着制作一个更简单的版本并解决这个问题。你想选择一些东西并把它们加起来,但你做不到,所以你在这里问。写一些把它们加起来的东西会更容易,然后你就更接近了,得到了解决方案的一部分。问用户一件事更容易。然后你就更接近了,得到了部分解决方案。我不是想给你一个完整的答案,我是在提醒你如何摆脱困境,通过尝试让自己更接近于创造一个答案。首先,你能把所有的价格加起来吗?那么你能把用户输入的一个价格加起来吗?@tessellingheckler把所有的价格加起来吗?如果我先把所有的价格加起来,我怎么才能把价格加起来呢?如果你不能解决一个问题,试着制作一个更简单的版本并解决这个问题。你想选择一些东西并把它们加起来,但你做不到,所以你在这里问。写一些把它们加起来的东西会更容易,然后你就更接近了,得到了解决方案的一部分。问用户一件事更容易。然后你就更接近了,得到了部分解决方案。我不是想给你一个完整的答案,我是在提醒你如何克服被卡住的问题,通过尝试让自己更接近于创建一个答案。x.split中a的sumPRICE[inta]可以避免生成中间列表。你的求和函数缺少一个结束括号。此外,您还可以使用理解而不是列表来节省内存。除此之外,+1。@martineau谢谢你。很好。我编辑了这本书answer@Ffisegydd谢谢修正了结束braketPRICE=[1000,1100,1200,1300,1400,1500]x=i,v在enumeratePRICE中的原始输入:在x.split中为a打印sumPRICE[inta],所以我这样做了,得到了类似的输出:4800 4800 4800 4800 4800 4800 4800,但我只需要1个输出,所以很多输出出来了,所以我想知道出了什么问题?sumPRICE[inta]对于x.split中的a,将避免生成中间列表。在求和函数中缺少右括号。此外,您还可以使用理解而不是列表来节省内存。除此之外,+1。@martineau谢谢你。很好。我编辑了这本书answer@Ffisegydd谢谢修正了收盘价=[1000、1100、1200、1300、1400、1500]x=枚举价格中i、v的原始输入:打印总价[inta]对于x.split中的a,我这样做了,得到了类似的输出:4800 4800 4800 4800 4800 4800 4800 4800但我只需要一个输出,那么多输出出来了,所以我想知道出了什么问题?然后像我这样的人会沾沾自喜地过来评论说,你不需要所有的代码,沾沾自喜,为什么不直接用total=0,然后对于x中的char:if char:total+=PRICE[intchar] ? 然后像我这样的人会沾沾自喜地过来评论说你不需要所有的代码,沾沾自喜,为什么你不直接用total=0,然后用x:if char:total+=PRICE[intchar]表示char?梁