'列出索引超出范围'列表错误 - 字典值

时间:2018-05-05 04:56:48

标签: python python-3.x list dictionary

我创建了这个植物种植的程序。西红柿并指定它们成熟的日期(以单位为单位)。但是,当我尝试使用该日期时,系统会返回错误列表索引超出范围。'我不能为我的生活理解为什么会这样。请理解我是一名初学程序员,所以虽然我确实在寻找这个问题的答案,但我发现的很多东西对我来说都是完全的胡言乱语。谢谢!

import java.util.Scanner;
import java.util.ArrayList;

public class PalindromeNums{
    public static void main(String [] args){
        Scanner input = new Scanner(System.in);
        int start,end,rem,rev=0,temp;
        ArrayList <Integer> palindrome = new ArrayList<>();
        System.out.print("Start : ");
        start = input.nextInt();
        System.out.print("End : ");
        end = input.nextInt();

        temp = start;
        for(int i = start; i <= end; i++){

            while(temp != 0){
                rem = temp % 10;
                rev = rev * 10 + rem;
                temp = temp / 10;
            }

            System.out.println(rev);
            if(i == rev){
                palindrome.add(i);
            }
            temp++;
            rev = 0;
        }
        System.out.println(palindrome);

    }
}

(在某处可能存在缩进错误,忽略这一点。我将它作为代码放入堆栈溢出文本框时遇到了麻烦)

1 个答案:

答案 0 :(得分:1)

在函数check_harvest()中,growing字典的长度可能与grown列表的长度不同。

plant()会将amount个项目添加到growing,但只有一个项目会添加到grown。因此,如果amount大于1,则字典和列表长度将会不同。

然后check_harvest()growing的长度上进行迭代,这可能会超过grown,从而导致尝试访问grown中超出限制范围的项目列表。

如果缩进两行,它可能会解决问题:

            grown.append("tomato_" + str(tomato_id)) #this list is so I can run a for loop using numbers (there's probably a better way to do this idk)
            tomato_id += 1

这样它们就在for循环中:

            for i in range(amount):
                if tomato_seeds > 0:
                    tomato_seeds -= 1
                    tomato_planted += 1
                    growing["tomato_" + str(tomato_id)] = turn + 5 #this creates a library that contains tomatoes and their turn of harvest
                    grown.append("tomato_" + str(tomato_id)) #this list is so I can run a for loop using numbers (there's probably a better way to do this idk)
                    tomato_id += 1

但我无法确定,因为我不太了解您的代码。