Python:调用数组值进行计算(int to float)

时间:2016-11-04 11:44:41

标签: python arrays integer indices

我抓了网但没有回答(特定于解决方案)。我遇到了以下问题:

coin = [2.0 , 1.0 , 0.5, 0.1, 0.05, 0.02, 0.01]
kum=0.0

for i in coin :
while True :
    if kum + coin[i]  >= x :
# Intial (first loop) this should be equal to: if 0 + 2.0 > users input
# Second loop should be equal to if 2.0 + 1.0 > users input
        break
    else :
        kum +=  coin[i]

控制台说:

Traceback (most recent call last):
  , line 13, in <module>
if kum + coin[i]  >= x :
TypeError: list indices must be integers, not float

我想知道我做错了什么。 列表项是浮点数?添加0.0和浮点应该不是问题?  任何帮助表示赞赏。 `

3 个答案:

答案 0 :(得分:2)

您的代码已损坏,编译器已告诉您问题所在。

您正尝试使用float索引列表。 索引必须是整数,但是:

for i in coin :
while True :
    if kum + coin[i]  >= x :
        break
    else :
        kum +=  coin[i]

使用硬币中每个元素的值来索引硬币本身,因此索引将为[2.0 , 1.0 , 0.5, 0.1, 0.05, 0.02, 0.01]

所以你要问的是第二个,第一个元素,然后是元素0.5等。

你可能意味着

if kum+i >=x :

此外,你的内部有一个无限循环。删除while True :,如下所示:

for i in coin :
    if kum+i >=x :
        break
    else :
        kum += i

然后,循环将为硬币中的每个元素执行一次,我将设置为coin []中的值,即:

  • 迭代1,i = 2.0
  • 迭代2,i = 1.0
  • 迭代3,i = 0.5

答案 1 :(得分:1)

您正在传递浮动值作为硬币列表的索引。

将您的for语句更改为:

for i in range(0, len(coin)):

然后你将传递整数索引(而不是列表中项目的值)

或者,您可以将i作为值并使用它:

for i in coin:
    while True:
        if kum + i >= x:

答案 2 :(得分:0)

谢谢你们,问题是:

for i in range(0, len(coin)): 

将其更改为:

x = input("Bitte Euro Betrag eingeben: ")
coin = [2.0 , 1.0 , 0.5, 0.1, 0.05, 0.02, 0.01]
coinscount = [0 , 0 , 0 , 0 , 0 , 0 , 0]
kum=0.0

if min(coin) > x :
print("Betrag zu klein")
exit 
for i in range(0, len(coin)):
while True :
    if kum + coin[i]  > x :
        break
    else :
        kum = kum +  coin[i]
        coinscount[i] += 1


print("Anzahl Muenzen ist: ", sum(coinscount))

for i in range(0, len(coin)):
print("Sie benoetigen: ", coinscount[i], "Stueck", coin[i])

之后这对我来说很有意义...... 只是为了记录:这个“杰作”:)代码应该检查你需要多少硬币达到一个特定的值。 用户输入是值,硬币阵列为现有硬币(EUR)。

var order = from MenuInfo in doc.Descendants("MenuInfo")
                       select new
                       {
                           Data1 = MenuInfo.Element("Data1").Value,
                           Data2 = MenuInfo.Element("Data2").Value,
                           Data3 = MenuInfo.Element("Data3").Value,
                       };

非常感谢,Josi