【问题标题】:Python: Call array value for calculation (int to float)Python:调用数组值进行计算(int to float)
【发布时间】:2017-03-18 05:44:18
【问题描述】:

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

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 和 float 应该不是问题吗? 任何帮助表示赞赏。 `

【问题讨论】:

    标签: python arrays integer indices


    【解决方案1】:

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

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

    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 :
    

    此外,你的 for 中有一个无限循环。删除while True :如下:

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

    然后,循环将针对 coin 中的每个元素执行一次,并将 i 设置为 coin[] 中的值,即:

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

    【讨论】:

    • 对不起,我忘了解释我想做什么:如果 kum + coin[i] >= x -> 这应该将 coin[i] 和 kum 的值相加并与 x 进行比较。所以初始 kum 应该是 0 并且 coin [0] = 2.0 (数组 coin 的第一个条目)。这应该对硬币的每个元素进行。所以这条线抛出了错误。
    • 如果你去掉while,那么循环将对i的每个值执行一次,并且i将包含来自coin的值。让我更新。
    【解决方案2】:

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

    将你的 for 语句改为:

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

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

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

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

    【讨论】:

      【解决方案3】:

      谢谢大家,问题是:

      for i in coin :
      

      将其更改为:

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

      后来这对我来说很有意义...... 仅作记录:这个“杰作”:) 代码应该检查您需要多少硬币才能达到特定值。 用户输入的是值,coin 是现有硬币的数组 (EUR)。

      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])
      

      非常感谢,乔西

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 2015-10-23
        • 1970-01-01
        • 2022-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多