【问题标题】:Why am i getting index of the range error?为什么我得到范围错误的索引?
【发布时间】:2020-05-09 00:14:50
【问题描述】:
def oburparaust(liste, money):
moneycontrol = 0.0
coin=0
control = 0
while True:
    if liste[control] > money:
        control+=1
    else:
        moneycontrol+=liste[control]
        coin+=1
        if moneycontrol==money:
            break
        elif moneycontrol > money:
            moneycontrol-=liste[control]
            coin-=1
            print(moneycontrol)
            if control>len(liste)-1:
                print(moneycontrol)
                control=len(liste)-1
            else:
                control+=1
    #print(coin)
oburparaust([1.0, 0.50, 0.25, 0.10, 0.05, 0.01], 5.38)

我想计算 5.38 的钱用了多少硬币。但是我得到了范围错误的索引,我找不到为什么我要遍历列表?

错误;

回溯(最近一次通话最后): 文件“xxxx”,第 26 行,在 oburparaust([1.0, 0.50, 0.25, 0.10, 0.05, 0.01], 5.38) 文件“xxxx”,第 6 行,在 oburparaust 如果 liste[控制] > a: IndexError:列表索引超出范围 金钱控制:1.0 硬币:1 金钱控制:2.0 硬币:2 金钱控制:3.0 硬币:3 货币控制:4.0 硬币:4 金钱控制:5.0 硬币:5 金钱控制:5.0 硬币:5 金钱控制:5.0 硬币:5 金钱控制:5.25 硬币:6 金钱控制:5.25 硬币:6 金钱控制:5.35 硬币:7 金钱控制:5.35 硬币:7 金钱控制:5.35 硬币:7 金钱控制:5.359999999999999 硬币:8 金钱控制:5.369999999999999 硬币:9 货币控制:5.379999999999999 硬币:10 货币控制:5.379999999999999 硬币:10

【问题讨论】:

  • 在第 6 行 if liste[control] > money: 它循环并尝试使用键 6 获取项目,该键不存在于数组中。
  • 把这个while True:改成这个while True and control < len(liste):
  • @komatiraju032 提示:True and watever 等于 watever
  • 感谢 komatiraju032

标签: python python-3.x algorithm


【解决方案1】:

您的列表“liste”包含 6 个项目,这意味着您的索引以 0 开头并以 5 结尾,当您的变量控件的值为 6 时,索引将超出范围。如果它小于列表“liste”的长度,您将需要控制该变量“control”。比如:

def oburparaust(liste, money):
    moneycontrol = 0.0
    coin=0
    control = 0
    while control < len(liste):
           . . . 

【讨论】:

  • 我想让 @komtatiraju032 发布这个答案是公平的,因为他是 cmets 中的第一个
  • @Marat 我可以同时注意到它,而我在写一个答案时我没有注意到有新评论,或者我可以?
  • 虽然仍然是您的选择,但我可以告诉您,他的评论(甚至 OP 对评论的回应)首先出现,并且他的评论和您的答案都有相同的逻辑错误(请参阅我的评论)。只是看起来不太好。另外,使用for 循环的imo 在这里会好很多
  • 另外,当您编写答案时,您可以看到有新的 cmets,但您需要单击占位符才能查看其内容(与帖子编辑相同)。我想现在当答案被接受时,无论如何都没关系。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
相关资源
最近更新 更多